Json reader command 추가
This commit is contained in:
parent
eaed1bc8d7
commit
7402d6a133
8 changed files with 125 additions and 25 deletions
|
|
@ -8,6 +8,7 @@ pipeline:
|
|||
- exe: git
|
||||
- exe: git-rev
|
||||
- exe: git-count
|
||||
- exe: json-reader
|
||||
|
||||
#동기식 실행, 해당 수행이 끝나야만 다음 스텝실행, command일경우 해당 id 기입
|
||||
- async: appData
|
||||
|
|
@ -44,16 +45,16 @@ commands:
|
|||
param:
|
||||
result-value: <!property.git-count>
|
||||
|
||||
# ### Json value read
|
||||
# - command: JsonValue
|
||||
# id: json-value
|
||||
# param:
|
||||
# - set:
|
||||
# from: gitHash
|
||||
# to: <!property:old-git-rev>
|
||||
# - set:
|
||||
# from: version
|
||||
# to: <!property:old-version>
|
||||
### Json value read
|
||||
- command: JsonReader
|
||||
id: json-reader
|
||||
param:
|
||||
path: ./assets/data/app_data.json
|
||||
pair:
|
||||
- from: gitHash
|
||||
to: <!property.old-git-rev>
|
||||
- from: version
|
||||
to: <!property.old-version>
|
||||
|
||||
### Version 쓰기
|
||||
- command: CreateAppData
|
||||
|
|
@ -62,8 +63,8 @@ commands:
|
|||
scm: Git
|
||||
name: OTO
|
||||
relativeAssetPath: assets/data
|
||||
returnVersion: "<!property.version>"
|
||||
returnHash: "<!property.hash>"
|
||||
return-version: "<!property.version>"
|
||||
return-hash: "<!property.hash>"
|
||||
|
||||
### 실행가능한 파일로 빌드
|
||||
- command: BuildDart
|
||||
|
|
|
|||
|
|
@ -9,14 +9,13 @@ class CreateAppData extends Command {
|
|||
|
||||
@override
|
||||
Future execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataAppDataCreator.fromJson(command.param);
|
||||
var workspace = getWorkspace(data.workspace);
|
||||
|
||||
var appData = await AppDataManager.to
|
||||
.create(data.scm, workspace, data.relativeAssetPath, data.name);
|
||||
Command.setReturnValue(data.returnVersion, appData.version);
|
||||
Command.setReturnValue(data.returnHash, appData.gitHash.substring(0, 7));
|
||||
setReturn(data.return_version, appData.version);
|
||||
setReturn(data.return_hash, appData.gitHash.substring(0, 7));
|
||||
return complete(0, command);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ class BuildDart extends Command {
|
|||
|
||||
@override
|
||||
Future execute(DataCommand command) async {
|
||||
Completer<bool> c = Completer<bool>();
|
||||
var data = DataBuildDart.fromJson(command.param);
|
||||
var workspace = getWorkspace(data.workspace);
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import 'package:oto_cli/oto/commands/build/build_dot_net.dart';
|
|||
import 'package:oto_cli/oto/commands/build/build_flutter.dart';
|
||||
import 'package:oto_cli/oto/commands/build/build_ios.dart';
|
||||
import 'package:oto_cli/oto/commands/git/git.dart';
|
||||
import 'package:oto_cli/oto/commands/util/json.dart';
|
||||
import 'package:oto_cli/oto/data/command_data.dart';
|
||||
import 'package:oto_cli/oto/data/jenkins_data.dart';
|
||||
import 'package:oto_cli/oto/commands/file/delete.dart';
|
||||
|
|
@ -46,7 +47,8 @@ enum CommandType {
|
|||
Shell,
|
||||
Git,
|
||||
GitRev,
|
||||
GitCount
|
||||
GitCount,
|
||||
JsonReader
|
||||
}
|
||||
|
||||
abstract class Command {
|
||||
|
|
@ -73,6 +75,7 @@ abstract class Command {
|
|||
CommandType.Git: Git(),
|
||||
CommandType.GitRev: GitRev(),
|
||||
CommandType.GitCount: GitCount(),
|
||||
CommandType.JsonReader: JsonReader()
|
||||
};
|
||||
|
||||
factory Command.byType(CommandType type) {
|
||||
|
|
@ -91,6 +94,7 @@ abstract class Command {
|
|||
if (tag.startsWith('property')) {
|
||||
var key = tag.replaceFirst('property.', '');
|
||||
Application.instance.property[key] = value;
|
||||
print('=========> set return - $key : $value');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -139,7 +143,11 @@ abstract class Command {
|
|||
}
|
||||
|
||||
String getWorkspace(String? dataWorkspace) {
|
||||
var path = getPathNormal(dataWorkspace ?? jenkinsData!.workspace);
|
||||
return getAbs(dataWorkspace ?? jenkinsData!.workspace);
|
||||
}
|
||||
|
||||
String getAbs(String path) {
|
||||
path = getPathNormal(path);
|
||||
if (path == '.' || path.startsWith('./')) {
|
||||
path = path.replaceFirst('.', getPathNormal(pathlib.current));
|
||||
}
|
||||
|
|
|
|||
41
lib/oto/commands/util/json.dart
Normal file
41
lib/oto/commands/util/json.dart
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:oto_cli/oto/commands/command.dart';
|
||||
import 'package:oto_cli/oto/data/command_data.dart';
|
||||
|
||||
class JsonReader extends Command {
|
||||
@override
|
||||
Future execute(DataCommand command) async {
|
||||
var data = DataJsonReader.fromJson(command.param);
|
||||
var path = getAbs(data.path);
|
||||
var file = File(path);
|
||||
if (file.existsSync()) {
|
||||
var content = await file.readAsString();
|
||||
try {
|
||||
Map<String, dynamic> json = jsonDecode(content);
|
||||
Map<String, dynamic> temp = json;
|
||||
for (var item in data.pair) {
|
||||
var keys = item.from.split('.');
|
||||
for (var i = 0; i < keys.length; ++i) {
|
||||
var key = keys[i];
|
||||
if (temp.containsKey(key)) {
|
||||
if (i == keys.length - 1) {
|
||||
setReturn(item.to, temp[keys[i]].toString());
|
||||
break;
|
||||
} else {
|
||||
temp = temp[keys[i]];
|
||||
}
|
||||
} else {
|
||||
throw Exception('Not exist key: "$key" in $item');
|
||||
}
|
||||
}
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
throw Exception('Json parsing error: $e');
|
||||
}
|
||||
} else {
|
||||
throw Exception('Json File not exist: $path');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -65,8 +65,10 @@ class DataAppDataCreator extends DataParam {
|
|||
|
||||
late SCMType scm;
|
||||
late String relativeAssetPath;
|
||||
late String returnVersion;
|
||||
late String returnHash;
|
||||
@JsonKey(name: 'return-version')
|
||||
late String return_version;
|
||||
@JsonKey(name: 'return-hash')
|
||||
late String return_hash;
|
||||
late String name;
|
||||
|
||||
factory DataAppDataCreator.fromJson(Map<String, dynamic> json) =>
|
||||
|
|
@ -349,3 +351,28 @@ class DataGitRev extends DataParam {
|
|||
_$DataGitRevFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$DataGitRevToJson(this);
|
||||
}
|
||||
|
||||
//GitRev
|
||||
@JsonSerializable()
|
||||
class DataJsonReader extends DataParam {
|
||||
DataJsonReader();
|
||||
|
||||
late String path;
|
||||
late List<DataPair> pair;
|
||||
|
||||
factory DataJsonReader.fromJson(Map<String, dynamic> json) =>
|
||||
_$DataJsonReaderFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$DataJsonReaderToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class DataPair {
|
||||
late String from;
|
||||
late String to;
|
||||
|
||||
DataPair();
|
||||
|
||||
factory DataPair.fromJson(Map<String, dynamic> json) =>
|
||||
_$DataPairFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$DataPairToJson(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ const _$CommandTypeEnumMap = {
|
|||
CommandType.Git: 'Git',
|
||||
CommandType.GitRev: 'GitRev',
|
||||
CommandType.GitCount: 'GitCount',
|
||||
CommandType.JsonReader: 'JsonReader',
|
||||
};
|
||||
|
||||
DataParam _$DataParamFromJson(Map<String, dynamic> json) =>
|
||||
|
|
@ -81,8 +82,8 @@ DataAppDataCreator _$DataAppDataCreatorFromJson(Map<String, dynamic> json) =>
|
|||
..workspace = json['workspace'] as String?
|
||||
..scm = $enumDecode(_$SCMTypeEnumMap, json['scm'])
|
||||
..relativeAssetPath = json['relativeAssetPath'] as String
|
||||
..returnVersion = json['returnVersion'] as String
|
||||
..returnHash = json['returnHash'] as String
|
||||
..return_version = json['return-version'] as String
|
||||
..return_hash = json['return-hash'] as String
|
||||
..name = json['name'] as String;
|
||||
|
||||
Map<String, dynamic> _$DataAppDataCreatorToJson(DataAppDataCreator instance) =>
|
||||
|
|
@ -90,8 +91,8 @@ Map<String, dynamic> _$DataAppDataCreatorToJson(DataAppDataCreator instance) =>
|
|||
'workspace': instance.workspace,
|
||||
'scm': _$SCMTypeEnumMap[instance.scm]!,
|
||||
'relativeAssetPath': instance.relativeAssetPath,
|
||||
'returnVersion': instance.returnVersion,
|
||||
'returnHash': instance.returnHash,
|
||||
'return-version': instance.return_version,
|
||||
'return-hash': instance.return_hash,
|
||||
'name': instance.name,
|
||||
};
|
||||
|
||||
|
|
@ -387,3 +388,27 @@ Map<String, dynamic> _$DataGitRevToJson(DataGitRev instance) =>
|
|||
'workspace': instance.workspace,
|
||||
'result-value': instance.result_value,
|
||||
};
|
||||
|
||||
DataJsonReader _$DataJsonReaderFromJson(Map<String, dynamic> json) =>
|
||||
DataJsonReader()
|
||||
..workspace = json['workspace'] as String?
|
||||
..path = json['path'] as String
|
||||
..pair = (json['pair'] as List<dynamic>)
|
||||
.map((e) => DataPair.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
|
||||
Map<String, dynamic> _$DataJsonReaderToJson(DataJsonReader instance) =>
|
||||
<String, dynamic>{
|
||||
'workspace': instance.workspace,
|
||||
'path': instance.path,
|
||||
'pair': instance.pair,
|
||||
};
|
||||
|
||||
DataPair _$DataPairFromJson(Map<String, dynamic> json) => DataPair()
|
||||
..from = json['from'] as String
|
||||
..to = json['to'] as String;
|
||||
|
||||
Map<String, dynamic> _$DataPairToJson(DataPair instance) => <String, dynamic>{
|
||||
'from': instance.from,
|
||||
'to': instance.to,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ class PipelineExe extends PipelineExecutor {
|
|||
var now = DateTime.now();
|
||||
var time =
|
||||
'${now.minute.toString().padLeft(2)}:${now.second.toString().padLeft(2)}:${now.millisecond.toString().padLeft(2)}';
|
||||
print('==================> [$time] Execute: $targetCommandID');
|
||||
// print('==================> [$time] Execute: $targetCommandID');
|
||||
var data = await commandData;
|
||||
await Command.byType(data.command).execute(data);
|
||||
return simpleFuture;
|
||||
|
|
|
|||
Loading…
Reference in a new issue