oto/lib/cli/commands/install/regist_path.dart
leedongmyung[desktop] 88770edc1b 디버그
2023-10-29 12:44:03 +09:00

67 lines
1.4 KiB
Dart

import 'dart:io';
import 'package:dart_framework/platform/process.dart';
import 'package:dart_framework/utils/system_util.dart';
class RegistPath {
static RegistPath? _instance;
// ignore: library_private_types_in_public_api
static RegistPath? get OS {
if (_instance == null) {
if (Platform.isMacOS) {
_instance = _RegistPathOSX();
} else if (Platform.isLinux) {
_instance = _RegistPathLinux();
} else {
_instance = _RegistPathWindows();
}
}
return _instance;
}
Future add(String path) async {
return await _instance?.add(path);
}
Future remove(String path) async {
return await _instance?.remove(path);
}
}
class _RegistPathOSX extends RegistPath {
@override
Future add(String path) async {
return null;
}
@override
Future remove(String path) async {
return null;
}
}
class _RegistPathLinux extends RegistPath {
@override
Future add(String path) async {
return null;
}
@override
Future remove(String path) async {
return null;
}
}
class _RegistPathWindows extends RegistPath {
@override
Future add(String path) async {
await ProcessExecutor.run(StringBuffer('setx path "%path%;$path"'));
return simpleFuture;
}
@override
Future remove(String path) async {
await ProcessExecutor.run(StringBuffer('setx path "%path:$path=%"'));
return simpleFuture;
}
}