From 7cb627a88b47e6b4e878a8b1a70090b67bcd1928 Mon Sep 17 00:00:00 2001 From: "leedongmyung[desktop]" Date: Sat, 4 Nov 2023 18:53:03 +0900 Subject: [PATCH] =?UTF-8?q?build=5Fmanager=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B2=B0=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 12 +++--- assets/data/app_data.json | 1 + assets/script/check_package_update.bat | 9 +++++ {test => assets/script}/test.bat | 0 bin/main.dart | 4 +- lib/cli/commands/command_base.dart | 3 +- lib/cli/commands/command_exe.dart | 51 ++++++++++++++++++++++++++ lib/oto/application.dart | 18 ++++----- lib/oto/build/app_data_creator.dart | 2 +- lib/oto/build/build_dart.dart | 2 +- lib/oto/build/build_dart_compile.dart | 2 +- lib/oto/build/build_dot_net.dart | 2 +- lib/oto/build/build_ios.dart | 6 +-- lib/oto/command.dart | 8 ++-- lib/oto/file/copy.dart | 4 +- lib/oto/file/delete.dart | 4 +- lib/oto/file/rename.dart | 4 +- lib/oto/shell/shell.dart | 4 +- lib/oto/uploader/uploader.dart | 3 +- lib/oto/util/execute_app.dart | 4 +- lib/oto/util/publish_ios.dart | 2 +- lib/oto/util/slack.dart | 8 ++-- lib/oto/util/zip.dart | 4 +- lib/test.dart | 1 - 24 files changed, 111 insertions(+), 47 deletions(-) create mode 100644 assets/data/app_data.json create mode 100644 assets/script/check_package_update.bat rename {test => assets/script}/test.bat (100%) create mode 100644 lib/cli/commands/command_exe.dart delete mode 100644 lib/test.dart diff --git a/.vscode/launch.json b/.vscode/launch.json index 23fe04e..48c98b4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -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"] } ] } \ No newline at end of file diff --git a/assets/data/app_data.json b/assets/data/app_data.json new file mode 100644 index 0000000..5261894 --- /dev/null +++ b/assets/data/app_data.json @@ -0,0 +1 @@ +{"name":"Build Manager","version":"0.0.16","gitHash":"3e51c48f756f5b5d0ef9643309ebe0f3df2ce025","buildDate":"2023-11-04 18:48:24"} \ No newline at end of file diff --git a/assets/script/check_package_update.bat b/assets/script/check_package_update.bat new file mode 100644 index 0000000..2774e46 --- /dev/null +++ b/assets/script/check_package_update.bat @@ -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= arguments) async { - var app = Application.to; + var app = Application.instance; CLI.initialize('OTO', arguments, [ CommandTemplate(), CommandInstall(), CommandUninstall(), + CommandExe(), CommandStart(), CommandStop() ]); diff --git a/lib/cli/commands/command_base.dart b/lib/cli/commands/command_base.dart index f5f564b..2f96675 100644 --- a/lib/cli/commands/command_base.dart +++ b/lib/cli/commands/command_base.dart @@ -49,11 +49,12 @@ abstract class CommandBase { void printHelp({List? 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, ]; diff --git a/lib/cli/commands/command_exe.dart b/lib/cli/commands/command_exe.dart new file mode 100644 index 0000000..7daefb1 --- /dev/null +++ b/lib/cli/commands/command_exe.dart @@ -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> 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 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.'; + } +} diff --git a/lib/oto/application.dart b/lib/oto/application.dart index d971620..8531d8c 100644 --- a/lib/oto/application.dart +++ b/lib/oto/application.dart @@ -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? _property; Map? get property { @@ -21,14 +21,14 @@ class Application { return _jenkinsData; } - Future build(List arguments) async { + Future build(bool isTest) async { // await test(); // return; Map? buildMap; Map? 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) { diff --git a/lib/oto/build/app_data_creator.dart b/lib/oto/build/app_data_creator.dart index a0c92b6..baa95cd 100644 --- a/lib/oto/build/app_data_creator.dart +++ b/lib/oto/build/app_data_creator.dart @@ -11,7 +11,7 @@ class CreateAppData implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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('\\', '/'); diff --git a/lib/oto/build/build_dart.dart b/lib/oto/build/build_dart.dart index 3773410..9b5ad48 100644 --- a/lib/oto/build/build_dart.dart +++ b/lib/oto/build/build_dart.dart @@ -19,7 +19,7 @@ class BuildDart implements Command { Future execute(DataCommand command) async { Completer c = Completer(); 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)); diff --git a/lib/oto/build/build_dart_compile.dart b/lib/oto/build/build_dart_compile.dart index 8402d5d..550d3e3 100644 --- a/lib/oto/build/build_dart_compile.dart +++ b/lib/oto/build/build_dart_compile.dart @@ -16,7 +16,7 @@ class BuildDartCompile extends BuildDart { var c = Completer(); 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'); diff --git a/lib/oto/build/build_dot_net.dart b/lib/oto/build/build_dot_net.dart index d29ce71..f674ff1 100644 --- a/lib/oto/build/build_dot_net.dart +++ b/lib/oto/build/build_dot_net.dart @@ -11,7 +11,7 @@ class BuildDotNet implements Command { Future execute(DataCommand command) async { Completer c = Completer(); 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'); diff --git a/lib/oto/build/build_ios.dart b/lib/oto/build/build_ios.dart index 9d492d2..1f70dee 100644 --- a/lib/oto/build/build_ios.dart +++ b/lib/oto/build/build_ios.dart @@ -13,7 +13,7 @@ class BuildiOS implements Command { Future execute(DataCommand command) async { Completer c = Completer(); 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 execute(DataCommand command) async { Completer c = Completer(); 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 execute(DataCommand command) async { Completer c = Completer(); 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 = diff --git a/lib/oto/command.dart b/lib/oto/command.dart index 7510584..f26b416 100644 --- a/lib/oto/command.dart +++ b/lib/oto/command.dart @@ -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 execute(DataCommand command) async { Completer c = Completer(); - 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); diff --git a/lib/oto/file/copy.dart b/lib/oto/file/copy.dart index 90e204f..cc1ae1a 100644 --- a/lib/oto/file/copy.dart +++ b/lib/oto/file/copy.dart @@ -10,8 +10,8 @@ class Copy implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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!; diff --git a/lib/oto/file/delete.dart b/lib/oto/file/delete.dart index 4f247ad..5d5c10c 100644 --- a/lib/oto/file/delete.dart +++ b/lib/oto/file/delete.dart @@ -9,8 +9,8 @@ class Delete implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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 { diff --git a/lib/oto/file/rename.dart b/lib/oto/file/rename.dart index 0bab90e..256f9a7 100644 --- a/lib/oto/file/rename.dart +++ b/lib/oto/file/rename.dart @@ -11,8 +11,8 @@ class Rename implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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; diff --git a/lib/oto/shell/shell.dart b/lib/oto/shell/shell.dart index 276f8b8..eb5738b 100644 --- a/lib/oto/shell/shell.dart +++ b/lib/oto/shell/shell.dart @@ -9,8 +9,8 @@ class Shell implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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 diff --git a/lib/oto/uploader/uploader.dart b/lib/oto/uploader/uploader.dart index f3fbf0d..69c1b0c 100644 --- a/lib/oto/uploader/uploader.dart +++ b/lib/oto/uploader/uploader.dart @@ -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'); diff --git a/lib/oto/util/execute_app.dart b/lib/oto/util/execute_app.dart index eb6eeb4..f200c11 100644 --- a/lib/oto/util/execute_app.dart +++ b/lib/oto/util/execute_app.dart @@ -9,8 +9,8 @@ class ExecuteApp implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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); diff --git a/lib/oto/util/publish_ios.dart b/lib/oto/util/publish_ios.dart index eb099ae..15397cf 100644 --- a/lib/oto/util/publish_ios.dart +++ b/lib/oto/util/publish_ios.dart @@ -15,7 +15,7 @@ class PublishiOS implements Command { Future execute(DataCommand command) async { Completer c = Completer(); 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); diff --git a/lib/oto/util/slack.dart b/lib/oto/util/slack.dart index b941a65..adf9ece 100644 --- a/lib/oto/util/slack.dart +++ b/lib/oto/util/slack.dart @@ -10,8 +10,8 @@ class Slack implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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 execute(DataCommand command) async { Completer c = Completer(); - 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; diff --git a/lib/oto/util/zip.dart b/lib/oto/util/zip.dart index 3538237..384b919 100644 --- a/lib/oto/util/zip.dart +++ b/lib/oto/util/zip.dart @@ -11,8 +11,8 @@ class Zip implements Command { @override Future execute(DataCommand command) async { Completer c = Completer(); - 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)); diff --git a/lib/test.dart b/lib/test.dart deleted file mode 100644 index 8b13789..0000000 --- a/lib/test.dart +++ /dev/null @@ -1 +0,0 @@ -