git command 추가
This commit is contained in:
parent
b4fac1a8fb
commit
54e8df71ad
7 changed files with 103 additions and 20 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
24
lib/oto/git/git.dart
Normal 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue