build_manager 기능 결합
This commit is contained in:
parent
3e51c48f75
commit
7cb627a88b
24 changed files with 111 additions and 47 deletions
12
.vscode/launch.json
vendored
12
.vscode/launch.json
vendored
|
|
@ -5,25 +5,25 @@
|
|||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "oto_linux",
|
||||
"name": "stop",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"program": "./bin/main.dart",
|
||||
"args": ["stop"]
|
||||
"args": ["stop", "-h"]
|
||||
},
|
||||
{
|
||||
"name": "oto_mac",
|
||||
"name": "install",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"program": "./bin/main.dart",
|
||||
"args": ["uninstall"]
|
||||
"args": ["install", "-h"]
|
||||
},
|
||||
{
|
||||
"name": "oto_win",
|
||||
"name": "exe",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"program": "./bin/main.dart",
|
||||
"args": ["uninstall"]
|
||||
"args": ["exe", "-j", "-t"]
|
||||
}
|
||||
]
|
||||
}
|
||||
1
assets/data/app_data.json
Normal file
1
assets/data/app_data.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"name":"Build Manager","version":"0.0.16","gitHash":"3e51c48f756f5b5d0ef9643309ebe0f3df2ce025","buildDate":"2023-11-04 18:48:24"}
|
||||
9
assets/script/check_package_update.bat
Normal file
9
assets/script/check_package_update.bat
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
PATH=%PATH_WIN%
|
||||
|
||||
#cd ../dart_framework && git pull origin master
|
||||
cd ../%JOB_NAME%
|
||||
|
||||
call ./assets/script/check_rev.bat
|
||||
set /p RESULT=<result.txt
|
||||
|
||||
IF "%RESULT%"=="FALSE " flutter clean && flutter packages upgrade && flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:oto_cli/cli/commands/command_exe.dart';
|
||||
import 'package:oto_cli/cli/commands/command_install.dart';
|
||||
import 'package:oto_cli/cli/commands/command_start.dart';
|
||||
|
||||
|
|
@ -6,11 +7,12 @@ import 'package:oto_cli/cli/commands/command_template.dart';
|
|||
import 'package:oto_cli/oto/application.dart';
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
var app = Application.to;
|
||||
var app = Application.instance;
|
||||
CLI.initialize('OTO', arguments, [
|
||||
CommandTemplate(),
|
||||
CommandInstall(),
|
||||
CommandUninstall(),
|
||||
CommandExe(),
|
||||
CommandStart(),
|
||||
CommandStop()
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -49,11 +49,12 @@ abstract class CommandBase {
|
|||
void printHelp({List<String>? append}) {
|
||||
var exeName = CLI.executableFileName;
|
||||
final argumentTag = '{ARGUMENTS}';
|
||||
final argumentDesc = arguments.isEmpty ? '' : '[arguments]';
|
||||
var list = [
|
||||
'',
|
||||
getDescription(),
|
||||
'',
|
||||
'Usage: ${CLI.style('$exeName $name $usage', color: Color.lightGreen)}',
|
||||
'Usage: ${CLI.style('$exeName $name $usage', color: Color.lightGreen)}$argumentDesc',
|
||||
argumentTag,
|
||||
];
|
||||
|
||||
|
|
|
|||
51
lib/cli/commands/command_exe.dart
Normal file
51
lib/cli/commands/command_exe.dart
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:oto_cli/cli/cli.dart';
|
||||
import 'package:oto_cli/cli/commands/command_base.dart';
|
||||
import 'package:dart_framework/utils/system_util.dart';
|
||||
import 'package:oto_cli/oto/application.dart';
|
||||
|
||||
class CommandExe extends CommandBase {
|
||||
@override
|
||||
Map<String, List<String>> get arguments => {
|
||||
'-j': ["Used when it's a Jenkins build."],
|
||||
'-f {file path}': ["Run the yaml file to process."],
|
||||
'-t': ["This is the setup for testing."]
|
||||
};
|
||||
@override
|
||||
String get name => 'exe';
|
||||
|
||||
@override
|
||||
Future execute(List<String> parameters) {
|
||||
for (var item in parameters) {
|
||||
if (item == '-j') {
|
||||
startJenkinsBuild(parameters.contains('-t'));
|
||||
break;
|
||||
}
|
||||
if (item.startsWith('-f ')) {
|
||||
startYaml(item.replaceFirst('-f ', ''));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return simpleFuture;
|
||||
}
|
||||
|
||||
void startJenkinsBuild(bool isTest) {
|
||||
Application.instance.build(isTest);
|
||||
}
|
||||
|
||||
void startYaml(String target) {
|
||||
var file = File(target);
|
||||
if (file.existsSync()) {
|
||||
} else {
|
||||
print(
|
||||
CLI.style('There are no files in path "$target"', color: Color.red));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String getDescription() {
|
||||
return ':::: Read documents written in yaml to do process task.';
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ import 'package:oto_cli/oto/test_data.dart';
|
|||
class Application {
|
||||
Application._privateConstructor();
|
||||
static final Application _instance = Application._privateConstructor();
|
||||
static Application get to => _instance;
|
||||
static Application get instance => _instance;
|
||||
|
||||
Map<String, dynamic>? _property;
|
||||
Map<String, dynamic>? get property {
|
||||
|
|
@ -21,14 +21,14 @@ class Application {
|
|||
return _jenkinsData;
|
||||
}
|
||||
|
||||
Future<void> build(List<String> arguments) async {
|
||||
Future<void> build(bool isTest) async {
|
||||
// await test();
|
||||
// return;
|
||||
|
||||
Map<String, dynamic>? buildMap;
|
||||
Map<String, dynamic>? jenkinsMap;
|
||||
var envArgs = envArguments(arguments);
|
||||
bool isTest = envArgs.containsKey('isTest'); //for Unit Test
|
||||
// var envArgs = envArguments(arguments);
|
||||
// bool isTest = envArgs.containsKey('isTest'); //for Unit Test
|
||||
if (isTest) {
|
||||
//Test map
|
||||
buildMap = TestData.buildMap;
|
||||
|
|
@ -41,14 +41,15 @@ class Application {
|
|||
print('Start build...');
|
||||
String jsonStr = '';
|
||||
if (Platform.isMacOS || Platform.isLinux) {
|
||||
await Process.run('zsh', ['./lib/shell/jenkins_env_params.sh'])
|
||||
.then((ProcessResult result) => jsonStr = result.stdout);
|
||||
await Process.run('zsh', [
|
||||
'${Directory.current.path}/assets/script/jenkins_env_params.sh'
|
||||
]).then((ProcessResult result) => jsonStr = result.stdout);
|
||||
jenkinsMap = getMapFromJson(jsonStr)!;
|
||||
} else if (Platform.isWindows) {
|
||||
print('Win Test!!');
|
||||
await Process.run('cmd', [
|
||||
'/C',
|
||||
'${Directory.current.path}/lib/shell/jenkins_env_params.bat'
|
||||
'${Directory.current.path}/assets/script/jenkins_env_params.bat'
|
||||
]).then((ProcessResult result) => jsonStr = result.stdout);
|
||||
jenkinsMap = getMapFromJson(jsonStr);
|
||||
} else {
|
||||
|
|
@ -69,7 +70,7 @@ class Application {
|
|||
buildMap = getMapFromYaml(buildStr);
|
||||
}
|
||||
|
||||
execute(buildMap!);
|
||||
await execute(buildMap!);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -91,7 +92,6 @@ class Application {
|
|||
c.complete();
|
||||
printBuildStep('Build Successfully Complete');
|
||||
exit(0);
|
||||
return c.future;
|
||||
}
|
||||
|
||||
void printBuildStep(String name) {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class CreateAppData implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var jenkins = Application.to.jenkinsData!;
|
||||
var jenkins = Application.instance.jenkinsData!;
|
||||
var data = DataAppDataCreator.fromJson(command.param);
|
||||
var workspace = data.workspace ?? jenkins.workspace;
|
||||
workspace = workspace.replaceAll('\\', '/');
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class BuildDart implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataBuildDart.fromJson(command.param);
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var targetPath =
|
||||
Path.getNormal(Command.replaceTag(data.targetPath ?? workspace));
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class BuildDartCompile extends BuildDart {
|
|||
var c = Completer<StringBuffer>();
|
||||
var data = DataBuildDartCompile.fromJson(command.param);
|
||||
var extension = getExeExtension();
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var targetPath =
|
||||
Path.getNormal(Command.replaceTag(data.targetPath ?? workspace));
|
||||
var binPath = path.join(targetPath, 'bin');
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class BuildDotNet implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataBuildDotNet.fromJson(command.param);
|
||||
var workspace = Application.to.jenkinsData!.workspace;
|
||||
var workspace = Application.instance.jenkinsData!.workspace;
|
||||
var shell = StringBuffer();
|
||||
// shell.writeln('C:\\Windows\\System32\\chcp.com 65001');
|
||||
shell.writeln('cd $workspace');
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class BuildiOS implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataBuildiOS.fromJson(command.param);
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var workspacePath = Path.getNormal(Command.replaceTag(data.workspacePath));
|
||||
var destination = data.destination ?? 'generic/platform=iOS build';
|
||||
var cleanPod = data.cleanPod ?? false;
|
||||
|
|
@ -60,7 +60,7 @@ class ArchiveiOS implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataArchiveiOS.fromJson(command.param);
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var workspacePath = Path.getNormal(Command.replaceTag(data.workspacePath));
|
||||
var archivePath = Path.getNormal(Command.replaceTag(data.archivePath));
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ class ExportiOS implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataExportiOS.fromJson(command.param);
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var archivePath = Path.getNormal(Command.replaceTag(data.archivePath));
|
||||
var exportPath = Path.getNormal(Command.replaceTag(data.exportPath));
|
||||
var exportOptionPlistPath =
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ abstract class Command {
|
|||
tag = match!.group(2)!;
|
||||
if (tag.startsWith('common')) {
|
||||
var key = tag.replaceFirst('common.', '');
|
||||
Application.to.property![key] = value;
|
||||
Application.instance.property![key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ abstract class Command {
|
|||
var setted = false;
|
||||
dynamic data;
|
||||
if (value.startsWith('common.')) {
|
||||
var map = Application.to.property;
|
||||
var map = Application.instance.property;
|
||||
var param = value.replaceFirst('common.', '');
|
||||
if (map!.containsKey(param)) {
|
||||
data = map[param];
|
||||
|
|
@ -127,8 +127,8 @@ class SimpleCommand implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
print(command.param);
|
||||
//Start here
|
||||
c.complete(true);
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ class Copy implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataCopy.fromJson(command.param);
|
||||
var result = true;
|
||||
var isMove = data.isMove == null ? false : data.isMove!;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ class Delete implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataDelete.fromJson(command.param);
|
||||
var result = true;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ class Rename implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataRename.fromJson(command.param);
|
||||
var result = true;
|
||||
var entries = data.renameMap.entries;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ class Shell implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData!;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData!;
|
||||
var data = DataShell.fromJson(command.param);
|
||||
print(command.param);
|
||||
//Start here
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ class Uploader implements Command {
|
|||
'========================= [Connected! Start Upload] ================');
|
||||
var entries = map.entries;
|
||||
for (var entry in entries) {
|
||||
var local = path.join(Application.to.jenkinsData!.workspace, entry.key);
|
||||
var local =
|
||||
path.join(Application.instance.jenkinsData!.workspace, entry.key);
|
||||
var remote = entry.value;
|
||||
print('[Upload]: $local ====> $remote');
|
||||
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ class ExecuteApp implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataExecuteApp.fromJson(command.param);
|
||||
|
||||
var exe = Command.replaceTag(data.executable);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class PublishiOS implements Command {
|
|||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataPublishiOS.fromJson(command.param);
|
||||
var workspace = Path.getNormal(Application.to.jenkinsData!.workspace);
|
||||
var workspace = Path.getNormal(Application.instance.jenkinsData!.workspace);
|
||||
var menifestURL = Command.replaceTag(data.menifestURL);
|
||||
var destinationPath = Command.replaceTag(data.destinationPath);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ class Slack implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataSlack.fromJson(command.param);
|
||||
var result = true;
|
||||
|
||||
|
|
@ -26,8 +26,8 @@ class SlackBuild implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataSlackBuild.fromJson(command.param);
|
||||
var result = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ class Zip implements Command {
|
|||
@override
|
||||
Future<bool> execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var common = Application.to.property;
|
||||
var jenkins = Application.to.jenkinsData;
|
||||
var common = Application.instance.property;
|
||||
var jenkins = Application.instance.jenkinsData;
|
||||
var data = DataZip.fromJson(command.param);
|
||||
try {
|
||||
var zipFilePath = Path.getNormal(Command.replaceTag(data.zipFile));
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
|
||||
Loading…
Reference in a new issue