git command 추가

This commit is contained in:
leedongmyung[desktop] 2023-11-20 20:57:52 +09:00
parent b4fac1a8fb
commit 54e8df71ad
7 changed files with 103 additions and 20 deletions

View file

@ -14,11 +14,27 @@ pipeline:
#일반적인 if문과 동일
- if:
#property의 내용은 기본 dynamic(Object)형으로써, 비교시 정확한 캐스팅 필요, 적지 않을시 기본 string
condition-int: <property:test> == <property:result>
condition-int: <!property:test> == <!property:result>
on-false:
- exe: zip
commands:
- command: Git
id: git
param:
workspace: <!property.workspace>
commands:
- restore .
- clean -f
- switch pipeline
- command: GitRev
id: git-rev
param:
workspace: <!property.workspace>
result-value: <!property.git_rev>
### Version 쓰기
- command: CreateAppData
id: appData
@ -26,8 +42,8 @@ commands:
scm: Git
name: OTO
relativeAssetPath: assets/data
returnVersion: "<!common.version>"
returnHash: "<!common.hash>"
returnVersion: "<!property.version>"
returnHash: "<!property.hash>"
### 실행가능한 파일로 빌드
- command: BuildDart
@ -38,6 +54,6 @@ commands:
- command: Zip
id: zip
param:
zipFile: "<!common.workspace>/release/oto_win_v<!common.version>.zip"
zipFile: "<!property.workspace>/release/oto_win_v<!property.version>.zip"
zipList:
- "<!common.workspace>/release/oto_cli.exe"
- "<!property.workspace>/release/oto_cli.exe"

View file

@ -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;
}

View file

@ -90,8 +90,8 @@ abstract class Command {
var regEx = RegExp(r'(<!)([a-zA-Z0-9.]+)(>)');
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;

View file

@ -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<String, dynamic> toJson() => _$DataShellToJson(this);
}
//Git
@JsonSerializable()
class DataGit {
DataGit();
late String? workspace;
late List<String> commands;
factory DataGit.fromJson(Map<String, dynamic> json) =>
_$DataGitFromJson(json);
Map<String, dynamic> toJson() => _$DataGitToJson(this);
}
//Git
@JsonSerializable()
class DataGitRev {
DataGitRev();
late String? workspace;
@JsonKey(name: 'result-value')
late String result_value;
factory DataGitRev.fromJson(Map<String, dynamic> json) =>
_$DataGitRevFromJson(json);
Map<String, dynamic> toJson() => _$DataGitRevToJson(this);
}

View file

@ -317,3 +317,23 @@ Map<String, dynamic> _$DataShellToJson(DataShell instance) => <String, dynamic>{
'workspace': instance.workspace,
'path': instance.path,
};
DataGit _$DataGitFromJson(Map<String, dynamic> json) => DataGit()
..workspace = json['workspace'] as String?
..commands =
(json['commands'] as List<dynamic>).map((e) => e as String).toList();
Map<String, dynamic> _$DataGitToJson(DataGit instance) => <String, dynamic>{
'workspace': instance.workspace,
'commands': instance.commands,
};
DataGitRev _$DataGitRevFromJson(Map<String, dynamic> json) => DataGitRev()
..workspace = json['workspace'] as String?
..result_value = json['result-value'] as String;
Map<String, dynamic> _$DataGitRevToJson(DataGitRev instance) =>
<String, dynamic>{
'workspace': instance.workspace,
'result-value': instance.result_value,
};

24
lib/oto/git/git.dart Normal file
View file

@ -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);
}
}

View file

@ -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);
}
}