code refactoring

This commit is contained in:
Toki 2024-12-22 09:53:36 +09:00
parent 6e33dbe656
commit d7f88f0698
5 changed files with 38 additions and 55 deletions

View file

@ -8,7 +8,7 @@ class Application {
Application(Function() func, Function(Object, StackTrace) errorListener) {
runZonedGuarded(() async {
system.initialize();
await system.initialize();
writeLog = (error, stack) => logError('$error:\n$stack');
func();
}, (error, stack) {

View file

@ -1,6 +1,7 @@
import 'dart:io';
import 'package:dart_framework/platform/platform_base.dart';
import 'package:dart_framework/utils/path.dart';
import 'package:dart_framework/utils/string_util.dart';
import 'package:dart_framework/utils/system_util.dart';
@ -100,7 +101,7 @@ class Log {
void initializeLog() async {
if (path == null) {
path = await getDataPath();
path = await Path.dataPath;
if (path!.isNotEmpty) {
path = '$path/logs';
var dir = Directory(path!);

View file

@ -1,6 +1,7 @@
import 'dart:io';
import 'dart:async';
import 'package:dart_framework/utils/path.dart';
import 'package:path/path.dart' as path;
import 'package:dart_framework/platform/process.dart';
@ -92,7 +93,7 @@ class _StartupMac extends _Startup {
Future<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
var plistName = '$label.plist';
var userPath = Platform.environment['HOME'] as String;
var userPath = await Path.userPath;
c.complete(
await File('$userPath/Library/LaunchAgents/$plistName').exists());
return c.future;
@ -121,7 +122,7 @@ class _StartupMac extends _Startup {
//create plist in LaunchAgents
final plistName = '$label.plist';
final userPath = Platform.environment['HOME'];
final userPath = await Path.userPath;
final tagLogStandard = '{LOG_STANDARD}';
final tagLogError = '{LOG_ERROR}';
final tagParameters = '{PARAMETERS}';
@ -158,7 +159,7 @@ class _StartupMac extends _Startup {
var c = Completer<bool>();
var success = false;
var plistName = '$label.plist';
var userPath = Platform.environment['HOME'];
var userPath = await Path.userPath;
var file = File('$userPath/Library/LaunchAgents/$plistName');
if (file.existsSync()) {
await file.delete();
@ -194,7 +195,7 @@ WantedBy=default.target""";
Future<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
var exist = false;
var userPath = Platform.environment['HOME'] as String;
var userPath = await Path.userPath;
exist =
await File('$userPath/.config/systemd/user/$label.service').exists();
c.complete(exist);
@ -212,7 +213,7 @@ WantedBy=default.target""";
final tagPath = '{FILE_PATH}';
ProcessResult? result;
var userPath = Platform.environment['HOME'] as String;
var userPath = await Path.userPath;
var systemPath = '$userPath/.config/systemd/user';
if (arguments != null) {
for (var arg in arguments) {
@ -241,7 +242,7 @@ WantedBy=default.target""";
Future<bool> unregistStartup(String label) async {
var c = Completer<bool>();
var success = false;
var userPath = Platform.environment['HOME'] as String;
var userPath = await Path.userPath;
var shell = StringBuffer();
var systemPath = '$userPath/.config/systemd/user';
shell.write('cd $systemPath && ');
@ -281,7 +282,7 @@ Set WshShell = Nothing
var c = Completer<bool>();
//For Windows 8, 10
var exist = false;
var userPath = Platform.environment['UserProfile'];
var userPath = await Path.userPath;
var startupDir = Directory('$userPath$windowsStartupPath');
var files = startupDir.listSync();
for (var fileEntry in files) {

View file

@ -1,5 +1,6 @@
import 'dart:io';
import 'dart:async';
import 'package:dart_framework/utils/system_util.dart';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart';
@ -8,7 +9,6 @@ enum FileType { none, file, directory, link }
class Path {
static Future<String> get userPath async {
String path = '';
var c = Completer<String>();
if(Platform.isWindows) {
path = Platform.environment['USERPROFILE'] as String;
} else if(Platform.isMacOS || Platform.isLinux) {
@ -16,10 +16,21 @@ class Path {
} else if(Platform.isAndroid || Platform.isIOS) {
path = (await getApplicationDocumentsDirectory()).path;
}
c.complete(path);
return c.future;
return dataFutrue(path);
}
static Future<String> get dataPath async {
String path = await userPath;
if (Platform.isMacOS) {
path = '$path/Library/${await projectName}';
} else if (Platform.isLinux) {
path = '$path/.config/${await projectName}';
} else if (Platform.isWindows) {
path = '$path/AppData/Local/${await projectName}';
}
return dataFutrue(path);
}
static String? getParent(String path) {
path = getNormal(path);
var separator = '/';

View file

@ -3,22 +3,23 @@ import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:dart_framework/utils/path.dart';
import 'package:yaml/yaml.dart';
import 'package:path/path.dart' as path;
late Future<String> Function() getUserPath;
late Future<String> Function() getProjectName;
late Future<String> Function() getDataPath;
void initialize() {
getUserPath = getUserPath_;
getProjectName = getProjectName_;
getDataPath = getDataPath_;
}
const int intMax = 0x7FFFFFFFFFFFFFFF;
const int intMin = -0x8000000000000000;
String userPath = '';
String dataPath = '';
String projectName = '';
Future initialize() async {
userPath = await Path.userPath;
dataPath = await Path.dataPath;
projectName = await getProjectName();
}
Map<String, List<String>?> envArguments(List<String> arguments) {
var dic = <String, List<String>?>{};
var list = <String>[];
@ -124,43 +125,12 @@ Future<Uint8List?> readFileByte(String filePath) async {
return c.future;
}
Future<String> getUserPath_() async {
String home = '';
Map<String, String> envVars = Platform.environment;
if (Platform.isMacOS) {
home = envVars['HOME']!;
} else if (Platform.isLinux) {
home = envVars['HOME']!;
} else if (Platform.isWindows) {
home = envVars['UserProfile']!;
}
var c = Completer<String>();
c.complete(home);
return c.future;
}
Future<String> getDataPath_() async {
String path = await getUserPath();
if (Platform.isMacOS) {
path = '$path/Library/Application Support/${await getProjectName()}';
} else if (Platform.isLinux) {
path = '$path/.config/${await getProjectName()}';
} else if (Platform.isWindows) {
path = '$path/AppData/Local/${await getProjectName()}';
}
var c = Completer<String>();
c.complete(path);
return c.future;
}
Future<String> getProjectName_() async {
Future<String> getProjectName() async {
var name =
path.dirname(Platform.script.toFilePath(windows: Platform.isWindows));
print(name);
if (path.basename(name) == 'bin') {
name = path.dirname(name);
}
var c = Completer<String>();
c.complete(path.basename(name));
return c.future;
return dataFutrue(path.basename(name));
}