pipeline if update
This commit is contained in:
parent
ea5cd8fbfa
commit
4493c4d97b
5 changed files with 49 additions and 30 deletions
|
|
@ -51,15 +51,8 @@ class Application {
|
|||
print(composer.buildYaml);
|
||||
|
||||
property = build.property;
|
||||
|
||||
if (build.pipeline == null) {
|
||||
//이후 pipeline 안정이후, command로만 빌드는 삭제, pipeline 필수로 넣도록 구성
|
||||
for (var command in build.commands) {
|
||||
await printBuildStep('Phase Start: ${command.name}', Color.green);
|
||||
await Command.byType(command.command).execute(command);
|
||||
}
|
||||
} else {
|
||||
//set command in dic, 중복 커맨드 id 필터
|
||||
|
||||
//set command in dic, 중복 커맨드 id 필터
|
||||
for (var command in build.commands) {
|
||||
if (dataCommandMap.containsKey(command.id)) {
|
||||
var ex = ExceptionData();
|
||||
|
|
@ -84,7 +77,7 @@ class Application {
|
|||
|
||||
//start build
|
||||
await pipeline.execute();
|
||||
}
|
||||
|
||||
} on Exception catch (e, stacktace) {
|
||||
await CLI.printString(e.toString(), color: Color.redStrong);
|
||||
await CLI.printString(stacktace.toString(), color: Color.yellowStrong);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ class DataCondition implements DataValidator {
|
|||
late String? condition_version;
|
||||
@JsonKey(name: 'condition-bool')
|
||||
late String? condition_bool;
|
||||
@JsonKey(name: 'condition-object')
|
||||
late dynamic condition_object;
|
||||
|
||||
DataCondition();
|
||||
|
||||
|
|
@ -57,6 +59,9 @@ class DataCondition implements DataValidator {
|
|||
} else if (condition_bool != null) {
|
||||
condition = condition_bool!;
|
||||
type = 'bool';
|
||||
} else if (condition_object != null) {
|
||||
condition = condition_object;
|
||||
type = 'object';
|
||||
} else {
|
||||
result.message = 'Syntax requires a condition.';
|
||||
result.enable = false;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ DataCondition _$DataConditionFromJson(Map<String, dynamic> json) =>
|
|||
..condition_float = json['condition-float'] as String?
|
||||
..condition_string = json['condition-string'] as String?
|
||||
..condition_version = json['condition-version'] as String?
|
||||
..condition_bool = json['condition-bool'] as String?;
|
||||
..condition_bool = json['condition-bool'] as String?
|
||||
..condition_object = json['condition-object'];
|
||||
|
||||
Map<String, dynamic> _$DataConditionToJson(DataCondition instance) =>
|
||||
<String, dynamic>{
|
||||
|
|
@ -35,6 +36,7 @@ Map<String, dynamic> _$DataConditionToJson(DataCondition instance) =>
|
|||
'condition-string': instance.condition_string,
|
||||
'condition-version': instance.condition_version,
|
||||
'condition-bool': instance.condition_bool,
|
||||
'condition-object': instance.condition_object,
|
||||
};
|
||||
|
||||
DataIf _$DataIfFromJson(Map<String, dynamic> json) => DataIf()
|
||||
|
|
@ -45,6 +47,7 @@ DataIf _$DataIfFromJson(Map<String, dynamic> json) => DataIf()
|
|||
..condition_string = json['condition-string'] as String?
|
||||
..condition_version = json['condition-version'] as String?
|
||||
..condition_bool = json['condition-bool'] as String?
|
||||
..condition_object = json['condition-object']
|
||||
..on_true = json['on-true'] as List<dynamic>?
|
||||
..on_false = json['on-false'] as List<dynamic>?;
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ Map<String, dynamic> _$DataIfToJson(DataIf instance) => <String, dynamic>{
|
|||
'condition-string': instance.condition_string,
|
||||
'condition-version': instance.condition_version,
|
||||
'condition-bool': instance.condition_bool,
|
||||
'condition-object': instance.condition_object,
|
||||
'on-true': instance.on_true,
|
||||
'on-false': instance.on_false,
|
||||
};
|
||||
|
|
@ -68,6 +72,7 @@ DataWhile _$DataWhileFromJson(Map<String, dynamic> json) => DataWhile()
|
|||
..condition_string = json['condition-string'] as String?
|
||||
..condition_version = json['condition-version'] as String?
|
||||
..condition_bool = json['condition-bool'] as String?
|
||||
..condition_object = json['condition-object']
|
||||
..on_do = json['on-do'] as List<dynamic>?;
|
||||
|
||||
Map<String, dynamic> _$DataWhileToJson(DataWhile instance) => <String, dynamic>{
|
||||
|
|
@ -78,6 +83,7 @@ Map<String, dynamic> _$DataWhileToJson(DataWhile instance) => <String, dynamic>{
|
|||
'condition-string': instance.condition_string,
|
||||
'condition-version': instance.condition_version,
|
||||
'condition-bool': instance.condition_bool,
|
||||
'condition-object': instance.condition_object,
|
||||
'on-do': instance.on_do,
|
||||
};
|
||||
|
||||
|
|
@ -89,6 +95,7 @@ DataSwitch _$DataSwitchFromJson(Map<String, dynamic> json) => DataSwitch()
|
|||
..condition_string = json['condition-string'] as String?
|
||||
..condition_version = json['condition-version'] as String?
|
||||
..condition_bool = json['condition-bool'] as String?
|
||||
..condition_object = json['condition-object']
|
||||
..cases = (json['cases'] as List<dynamic>)
|
||||
.map((e) => DataSwitchValue.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
|
|
@ -102,6 +109,7 @@ Map<String, dynamic> _$DataSwitchToJson(DataSwitch instance) =>
|
|||
'condition-string': instance.condition_string,
|
||||
'condition-version': instance.condition_version,
|
||||
'condition-bool': instance.condition_bool,
|
||||
'condition-object': instance.condition_object,
|
||||
'cases': instance.cases,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: unnecessary_cast, unnecessary_null_comparison
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dart_framework/core/app_data_manager.dart';
|
||||
|
|
@ -10,9 +12,9 @@ import 'package:oto_cli/oto/pipeline/pipeline_exe.dart';
|
|||
|
||||
abstract class PipelineCondition extends PipelineExecutor {
|
||||
late DataCondition data;
|
||||
Map<String, bool Function(String, String, dynamic Function(String))>
|
||||
Map<String, bool Function(dynamic, dynamic, dynamic Function(String?))>
|
||||
conditions = {};
|
||||
Map<String, dynamic Function(String value)> types = {};
|
||||
Map<String, dynamic Function(String? value)> typeCaster = {};
|
||||
|
||||
@override
|
||||
PipelineValidateResult initialize(Map<String, dynamic> set) {
|
||||
|
|
@ -24,16 +26,13 @@ abstract class PipelineCondition extends PipelineExecutor {
|
|||
' == ': (v0, v1, caster) => caster(v0) == caster(v1),
|
||||
' != ': (v0, v1, caster) => caster(v0) != caster(v1),
|
||||
};
|
||||
types = {
|
||||
'int': (value) => value == 'null' ? null : int.parse(value) as int?,
|
||||
'float': (value) =>
|
||||
value == 'null' ? null : double.parse(value) as double?,
|
||||
'string': (value) => value == 'null' ? null : value,
|
||||
'bool': (value) =>
|
||||
value == 'null' ? null : (value.toLowerCase() == 'true') as bool?,
|
||||
'version': (value) => value == 'null'
|
||||
? null
|
||||
: AppDataManager.to.versionToNumber(value) as double?
|
||||
typeCaster = {
|
||||
'int': (value) => (value == 'null' || value == null) ? null : int.parse(value) as int?,
|
||||
'float': (value) => (value == 'null' || value == null) ? null : double.parse(value) as double?,
|
||||
'string': (value) => (value == 'null' || value == null) ? null : value,
|
||||
'bool': (value) => (value == 'null' || value == null) ? null : (value.toLowerCase() == 'true') as bool?,
|
||||
'version': (value) => (value == 'null' || value == null) ? null : AppDataManager.to.versionToNumber(value) as double?,
|
||||
'object': (value) => (value == 'null' || value == null) ? null : value,
|
||||
};
|
||||
return PipelineValidateResult();
|
||||
}
|
||||
|
|
@ -52,10 +51,21 @@ abstract class PipelineCondition extends PipelineExecutor {
|
|||
for (var item in conditions.entries) {
|
||||
if (condition.contains(item.key)) {
|
||||
var list = condition.split(item.key);
|
||||
var value0 = Command.replaceTagValue(list[0]);
|
||||
var value1 = Command.replaceTagValue(list[1]);
|
||||
result.conditionValue = '$value0${item.key}$value1';
|
||||
result.result = item.value(value0, value1, types[data.type]!);
|
||||
dynamic value0;
|
||||
dynamic value1;
|
||||
if(data.type == 'object')
|
||||
{
|
||||
value0 = Command.replaceSingleTagValue(list[0]);
|
||||
value1 = Command.replaceSingleTagValue(list[1]);
|
||||
result.conditionValue = '${value0.toString()}${item.key}${value1.toString()}';
|
||||
}
|
||||
else
|
||||
{
|
||||
value0 = Command.replaceTagValue(list[0]);
|
||||
value1 = Command.replaceTagValue(list[1]);
|
||||
result.conditionValue = '$value0${item.key}$value1';
|
||||
}
|
||||
result.result = item.value(value0, value1, typeCaster[data.type]!);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,15 @@
|
|||
property:
|
||||
workspace: .
|
||||
|
||||
pieline:
|
||||
pipeline:
|
||||
id: main
|
||||
workflow:
|
||||
- exe: jira
|
||||
- exe: slackUser
|
||||
- exe: slackChannel
|
||||
- if:
|
||||
condition-object: <!property.slackUser> != null
|
||||
on-true:
|
||||
- exe: slackUser
|
||||
- exe: slackChannel
|
||||
|
||||
commands:
|
||||
- command: Jira
|
||||
|
|
|
|||
Loading…
Reference in a new issue