diff --git a/assets/pipeline-test.yaml b/assets/pipeline-test.yaml index 6c807b9..51de59a 100644 --- a/assets/pipeline-test.yaml +++ b/assets/pipeline-test.yaml @@ -14,11 +14,27 @@ pipeline: #일반적인 if문과 동일 - if: #property의 내용은 기본 dynamic(Object)형으로써, 비교시 정확한 캐스팅 필요, 적지 않을시 기본 string - condition-int: == + condition-int: == on-false: - exe: zip commands: +- command: Git + id: git + param: + workspace: + commands: + - restore . + - clean -f + - switch pipeline + +- command: GitRev + id: git-rev + param: + workspace: + result-value: + + ### Version 쓰기 - command: CreateAppData id: appData @@ -26,8 +42,8 @@ commands: scm: Git name: OTO relativeAssetPath: assets/data - returnVersion: "" - returnHash: "" + returnVersion: "" + returnHash: "" ### 실행가능한 파일로 빌드 - command: BuildDart @@ -38,6 +54,6 @@ commands: - command: Zip id: zip param: - zipFile: "/release/oto_win_v.zip" + zipFile: "/release/oto_win_v.zip" zipList: - - "/release/oto_cli.exe" + - "/release/oto_cli.exe" diff --git a/lib/oto/application.dart b/lib/oto/application.dart index 6b9ef0c..7c6206a 100644 --- a/lib/oto/application.dart +++ b/lib/oto/application.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:dart_framework/platform/process.dart'; -import 'package:dart_framework/subtitle/parser_base.dart'; import 'package:dart_framework/utils/system_util.dart'; import 'package:oto_cli/cli/cli.dart'; import 'package:oto_cli/oto/command.dart'; @@ -223,10 +222,6 @@ class PipelineExe extends PipelineExecutor { class PipelineAsync extends PipelineExe { @override Future execute() async { - var now = DateTime.now(); - var time = - '${now.minute.toString().padLeft(2)}:${now.second.toString().padLeft(2)}:${now.millisecond.toString().padLeft(2)}'; - print('==================> [$time] Async Execute: $targetCommandID'); executeAsync(await commandData); return simpleFuture; } diff --git a/lib/oto/command.dart b/lib/oto/command.dart index 155f8ad..8685fb3 100644 --- a/lib/oto/command.dart +++ b/lib/oto/command.dart @@ -90,8 +90,8 @@ abstract class Command { var regEx = RegExp(r'()'); var match = regEx.firstMatch(tag); tag = match!.group(2)!; - if (tag.startsWith('common')) { - var key = tag.replaceFirst('common.', ''); + if (tag.startsWith('property')) { + var key = tag.replaceFirst('property.', ''); Application.instance.property![key] = value; } } @@ -99,14 +99,14 @@ abstract class Command { static dynamic _getTagValue(String value) { var setted = false; dynamic data; - if (value.startsWith('common.')) { + if (value.startsWith('property.')) { var map = Application.instance.property; - var param = value.replaceFirst('common.', ''); + var param = value.replaceFirst('property.', ''); if (map!.containsKey(param)) { data = map[param]; setted = true; } else { - print('"$value" is not exist in common'); + print('"$value" is not exist in property'); data = ''; setted = true; } @@ -114,7 +114,7 @@ abstract class Command { if (!setted) { throw Exception( - 'Command.getTagValue: "$value" is not defined in common.'); + 'Command.getTagValue: "$value" is not defined in property.'); } return data; } @@ -142,7 +142,7 @@ abstract class Command { class SimpleCommand extends Command { @override Future execute(DataCommand command) async { - var common = Application.instance.property; + var property = Application.instance.property; var jenkins = Application.instance.jenkinsData; print(command.param); return simpleFuture; diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index 1ce0ebe..48b0372 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -1,3 +1,5 @@ +// ignore_for_file: non_constant_identifier_names + import 'package:dart_framework/utils/slack/slack_sender.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:dart_framework/core/app_data_manager.dart'; @@ -305,3 +307,30 @@ class DataShell { _$DataShellFromJson(json); Map toJson() => _$DataShellToJson(this); } + +//Git +@JsonSerializable() +class DataGit { + DataGit(); + + late String? workspace; + late List commands; + + factory DataGit.fromJson(Map json) => + _$DataGitFromJson(json); + Map toJson() => _$DataGitToJson(this); +} + +//Git +@JsonSerializable() +class DataGitRev { + DataGitRev(); + + late String? workspace; + @JsonKey(name: 'result-value') + late String result_value; + + factory DataGitRev.fromJson(Map json) => + _$DataGitRevFromJson(json); + Map toJson() => _$DataGitRevToJson(this); +} diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index 6066325..c6470ec 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -317,3 +317,23 @@ Map _$DataShellToJson(DataShell instance) => { 'workspace': instance.workspace, 'path': instance.path, }; + +DataGit _$DataGitFromJson(Map json) => DataGit() + ..workspace = json['workspace'] as String? + ..commands = + (json['commands'] as List).map((e) => e as String).toList(); + +Map _$DataGitToJson(DataGit instance) => { + 'workspace': instance.workspace, + 'commands': instance.commands, + }; + +DataGitRev _$DataGitRevFromJson(Map json) => DataGitRev() + ..workspace = json['workspace'] as String? + ..result_value = json['result-value'] as String; + +Map _$DataGitRevToJson(DataGitRev instance) => + { + 'workspace': instance.workspace, + 'result-value': instance.result_value, + }; diff --git a/lib/oto/git/git.dart b/lib/oto/git/git.dart new file mode 100644 index 0000000..5d5b795 --- /dev/null +++ b/lib/oto/git/git.dart @@ -0,0 +1,24 @@ +import 'dart:async'; + +import 'package:oto_cli/oto/application.dart'; +import 'package:oto_cli/oto/command.dart'; +import 'package:oto_cli/oto/data/command_data.dart'; +import 'package:dart_framework/platform/process.dart'; + +class Git extends Command { + @override + Future execute(DataCommand command) async { + var common = Application.instance.property; + var jenkins = Application.instance.jenkinsData; + var data = DataExecuteApp.fromJson(command.param); + + var exe = Command.replaceTag(data.executable); + var desktop = Command.replaceTag(data.desktopServicePath); + print('Process Start: $exe'); + var content = 'start "" "$exe" & exit'; + + var buffer = StringBuffer(content); + var processData = await ProcessExecutor.run(buffer, workspace: desktop); + return complete(processData.exitCode, command); + } +} diff --git a/lib/oto/util/execute_app.dart b/lib/oto/util/execute_app.dart index f180870..7c74143 100644 --- a/lib/oto/util/execute_app.dart +++ b/lib/oto/util/execute_app.dart @@ -18,8 +18,7 @@ class ExecuteApp extends Command { var content = 'start "" "$exe" & exit'; var buffer = StringBuffer(content); - var processData = - await ProcessExecutor.run(buffer, workspace: data.desktopServicePath); - return complete(0, command); + var processData = await ProcessExecutor.run(buffer, workspace: desktop); + return complete(processData.exitCode, command); } }