Riceneeder 2023-01-31 11:03:54 +08:00
parent 4a36e72c6e
commit 963c19cc14
11 changed files with 56 additions and 38 deletions

View File

@ -0,0 +1,9 @@
const List<String> ubuntuMirrorList = [
'https://mirrors.tuna.tsinghua.edu.cn/ubuntu/',
'https://mirrors.aliyun.com/ubuntu/',
'https://repo.huaweicloud.com/ubuntu/'
];
List<String> ubuntuGetMirrorList(){
return ubuntuMirrorList;
}

View File

@ -7,7 +7,7 @@ Uri mirrorsUri = Uri(
); );
/// List<String> /// List<String>
Future<List<String>> getMirrorList() async { Future<List<String>> yoyoGetMirrorList() async {
final response = await http.get(mirrorsUri); final response = await http.get(mirrorsUri);
final list = response.body.replaceAll('\n', ' ').trimRight().split(' '); final list = response.body.replaceAll('\n', ' ').trimRight().split(' ');
return list; return list;

View File

@ -0,0 +1,7 @@
import 'dart:io';
File file = File('/etc/apt/sources.list.d/yoyo-os.list');
bool yoyoIsExist() {
return file.existsSync();
}

View File

@ -1,19 +1,16 @@
import 'package:mason_logger/mason_logger.dart'; import 'package:mason_logger/mason_logger.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/generate_apt_fast_config_file.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/Ubuntu/ubuntu_get_mirro_list.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/get_mirro_list.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/Ubuntu/ubuntu_sources_list_template.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/network_test.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/Yoyo/yoyo_get_mirro_list.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/test_mirro_speed.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/Yoyo/yoyo_is_exist.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/ubuntu_sources_list_template.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/Yoyo/yoyo_sources_list_template.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/write_mirror_into_file.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/utils/generate_apt_fast_config_file.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/yoyo_sources_list_template.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/utils/network_test.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/utils/test_mirro_speed.dart';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/utils/write_mirror_into_file.dart';
final Map<String, dynamic> status = {}; final Map<String, dynamic> status = {};
final Logger _logger = Logger(); final Logger _logger = Logger();
const List<String> ubuntuMirrorList = [
'https://mirrors.tuna.tsinghua.edu.cn/ubuntu/',
'https://mirrors.aliyun.com/ubuntu/',
'https://repo.huaweicloud.com/ubuntu/'
];
final outputYoyo = lightGreen.wrap('Yoyo Mirrors:'); final outputYoyo = lightGreen.wrap('Yoyo Mirrors:');
final outputUbuntu = lightGreen.wrap('Ubuntu Mirrors:'); final outputUbuntu = lightGreen.wrap('Ubuntu Mirrors:');
@ -25,11 +22,19 @@ Future<Map<String, dynamic>> getFastMirror({bool onlyTest = false}) async {
status['msg'] = 'NetWork Error'; status['msg'] = 'NetWork Error';
return status; return status;
} }
//Yoyo镜像地址 // yoyo-os.list Yoyo镜像地址
final yoYoMirrorList = await getMirrorList(); final yoYoMirrorList = yoyoIsExist() ? await yoyoGetMirrorList() : ['none'];
_logger.info("\n$outputYoyo\n${yoYoMirrorList.join('\n')}\n"); if (yoyoIsExist()) {
//Yoyo镜像并获取时间和排序后的Map _logger.info("\n$outputYoyo\n${yoYoMirrorList.join('\n')}\n");
final sortedUrlListAndTimeYoyo = await testMirroSpeed(yoYoMirrorList); }
// yoyo-os.list Yoyo镜像并获取时间和排序后的Map
final sortedUrlListAndTimeYoyo = yoyoIsExist()
? await testMirroSpeed(yoYoMirrorList)
: [
{'url': '', 'time': 'none'}
];
// Ubuntua镜像地址
final ubuntuMirrorList = ubuntuGetMirrorList();
//Ubuntu镜像并获取时间和排序后的Map //Ubuntu镜像并获取时间和排序后的Map
_logger.info("\n$outputUbuntu\n${ubuntuMirrorList.join('\n')}\n"); _logger.info("\n$outputUbuntu\n${ubuntuMirrorList.join('\n')}\n");
final sortedUrlListAndTimeUbuntu = await testMirroSpeed(ubuntuMirrorList); final sortedUrlListAndTimeUbuntu = await testMirroSpeed(ubuntuMirrorList);
@ -37,7 +42,9 @@ Future<Map<String, dynamic>> getFastMirror({bool onlyTest = false}) async {
if (!onlyTest) { if (!onlyTest) {
try { try {
generateAptFastConfigFile( generateAptFastConfigFile(
sortedUrlListAndTimeYoyo, sortedUrlListAndTimeUbuntu,); sortedUrlListAndTimeYoyo,
sortedUrlListAndTimeUbuntu,
);
} catch (e) { } catch (e) {
status['success'] = false; status['success'] = false;
status['msg'] = 'Generate Config File Error'; status['msg'] = 'Generate Config File Error';
@ -46,14 +53,16 @@ Future<Map<String, dynamic>> getFastMirror({bool onlyTest = false}) async {
status['success'] = true; status['success'] = true;
} }
// //
//Yoyo // yoyo-os.list Yoyo
final fastestYoyoMirror = if (yoyoIsExist()) {
sortedUrlListAndTimeYoyo.first.entries.first.value; final fastestYoyoMirror =
final yoyoSourcesListFile = yoyoSourcesListTemplate(fastestYoyoMirror); sortedUrlListAndTimeYoyo.first.entries.first.value;
writeMirrorIntoFile( final yoyoSourcesListFile = yoyoSourcesListTemplate(fastestYoyoMirror);
yoyoSourcesListFile, writeMirrorIntoFile(
'/etc/apt/sources.list.d/yoyo-os.list', yoyoSourcesListFile,
); '/etc/apt/sources.list.d/yoyo-os.list',
);
}
//Ubuntu //Ubuntu
final fastestUbuntuMirror = final fastestUbuntuMirror =
sortedUrlListAndTimeUbuntu.first.entries.first.value; sortedUrlListAndTimeUbuntu.first.entries.first.value;

View File

@ -13,15 +13,7 @@ String aptFastConfigTemplate(String yoYoMirroList,String ubuntuMirroList) {
# #
# Default: apt-get # Default: apt-get
# #
_APTMGR=apt _APTMGR=/usr/bin/apt
if grep -Eqi "linuxmint" /etc/os-release;then
_APTMGR=apt-get
fi
if [ -x "\$(command -v oyo)" ]; then
_APTMGR=apt-get
fi
#### ####
# #
@ -41,7 +33,7 @@ fi
# #
# Default: dialog enabled # Default: dialog enabled
# #
DOWNLOADBEFORE=true # DOWNLOADBEFORE=true
# Choose mirror list to speed up downloads from same archive. To select some # Choose mirror list to speed up downloads from same archive. To select some

View File

@ -1,5 +1,5 @@
import 'dart:io'; import 'dart:io';
import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/apt_fast_config_template.dart'; import 'package:yoyo_get_fast_mirror/src/commands/modules/getfastmirro/utils/apt_fast_config_template.dart';
final tmpDir = Directory.systemTemp.path; final tmpDir = Directory.systemTemp.path;
final String filePath = '$tmpDir/oyo/apt-fast.conf'; final String filePath = '$tmpDir/oyo/apt-fast.conf';

View File

@ -28,6 +28,7 @@ Future<List<Map<String, String>>> testMirroSpeed(
} }
} }
spinner.updateMessage(''); spinner.updateMessage('');
// ignore: cascade_invocations
spinner.stop(); spinner.stop();
_logger.info(logMsg.toString()); _logger.info(logMsg.toString());
final resultMap = testResult.asMap(); final resultMap = testResult.asMap();