yaml 파일로 읽어 실행

This commit is contained in:
leedongmyung[desktop] 2023-11-05 18:03:16 +09:00
parent daa70e44f2
commit 769ccbad16
6 changed files with 110 additions and 51 deletions

9
.vscode/launch.json vendored
View file

@ -23,7 +23,14 @@
"request": "launch", "request": "launch",
"type": "dart", "type": "dart",
"program": "./bin/main.dart", "program": "./bin/main.dart",
"args": ["exe", "-j", "-t"] "args": ["exe", "-f ./build_win.yaml"]
},
{
"name": "test",
"request": "launch",
"type": "dart",
"program": "./test/test.dart",
"args": []
} }
] ]
} }

30
build_win.yaml Normal file
View file

@ -0,0 +1,30 @@
---
common:
workspace: "."
commands:
### Version 쓰기
- command: CreateAppData
param:
scm: Git
name: OTO
relativeAssetPath: assets/data
returnVersion: "<!common.version>"
returnHash: "<!common.hash>"
### 프로젝트 패키지 업데이트
- command: BuildDart
param: {}
### 실행가능한 파일로 빌드
- command: BuildDartCompile
param:
targetDartFile: "./bin/main.dart"
buildFileName: oto_cli
### 최종 zip 파일 형태로 저장
- command: Zip
param:
zipFile: "<!common.workspace>/release/oto_win_v<!common.version>.zip"
zipList:
- "<!common.workspace>/release/oto_cli.exe"

View file

@ -23,8 +23,8 @@ class CommandExe extends CommandBase {
startJenkinsBuild(parameters.contains('-t')); startJenkinsBuild(parameters.contains('-t'));
break; break;
} }
if (item.startsWith('-f ')) { if (item.startsWith('-f')) {
startYaml(item.replaceFirst('-f ', '')); startYaml(item.replaceFirst('-f', '').trimLeft());
break; break;
} }
} }
@ -32,15 +32,18 @@ class CommandExe extends CommandBase {
} }
void startJenkinsBuild(bool isTest) { void startJenkinsBuild(bool isTest) {
Application.instance.build(isTest); Application.instance.build(isTest ? BuildType.test : BuildType.jenkins);
} }
void startYaml(String target) { void startYaml(String target) {
var file = File(target); var file = File(target);
if (file.existsSync()) { if (file.existsSync()) {
Application.instance
.build(BuildType.file, yamlContent: file.readAsStringSync());
} else { } else {
print( CLI.print([
CLI.style('There are no files in path "$target"', color: Color.red)); CLI.style('There are no files in path "$target"', color: Color.red)
]);
} }
} }

View file

@ -6,6 +6,8 @@ import 'package:oto_cli/oto/data/data.dart';
import 'package:oto_cli/oto/data/jenkins_data.dart'; import 'package:oto_cli/oto/data/jenkins_data.dart';
import 'package:oto_cli/oto/test_data.dart'; import 'package:oto_cli/oto/test_data.dart';
enum BuildType { jenkins, test, file }
class Application { class Application {
Application._privateConstructor(); Application._privateConstructor();
static final Application _instance = Application._privateConstructor(); static final Application _instance = Application._privateConstructor();
@ -21,7 +23,7 @@ class Application {
return _jenkinsData; return _jenkinsData;
} }
Future<void> build(bool isTest) async { Future<void> build(BuildType buildType, {String? yamlContent}) async {
// await test(); // await test();
// return; // return;
@ -29,49 +31,51 @@ class Application {
Map<String, dynamic>? jenkinsMap; Map<String, dynamic>? jenkinsMap;
// var envArgs = envArguments(arguments); // var envArgs = envArguments(arguments);
// bool isTest = envArgs.containsKey('isTest'); //for Unit Test // bool isTest = envArgs.containsKey('isTest'); //for Unit Test
if (isTest) { switch (buildType) {
//Test map case BuildType.test:
buildMap = TestData.buildMap; //Test map
jenkinsMap = TestData.jenkinsMap!; buildMap = TestData.buildMap;
print('Start test build...'); _jenkinsData = DataJenkins.fromJson(TestData.jenkinsMap!);
} else { print('Start test build...');
String os = Platform.operatingSystem; break;
var enable = true;
print('Current OS: $os'); case BuildType.jenkins:
print('Start build...'); String os = Platform.operatingSystem;
String jsonStr = ''; var enable = true;
if (Platform.isMacOS || Platform.isLinux) { print('Current OS: $os');
await Process.run('zsh', [ print('Start build...');
'${Directory.current.path}/assets/script/shell/jenkins_env_params.sh' String jsonStr = '';
]).then((ProcessResult result) => jsonStr = result.stdout); if (Platform.isMacOS || Platform.isLinux) {
jenkinsMap = getMapFromJson(jsonStr)!; await Process.run('zsh', [
} else if (Platform.isWindows) { '${Directory.current.path}/assets/script/shell/jenkins_env_params.sh'
print('Win Test!!'); ]).then((ProcessResult result) => jsonStr = result.stdout);
await Process.run('cmd', [ jenkinsMap = getMapFromJson(jsonStr)!;
'/C', } else if (Platform.isWindows) {
'${Directory.current.path}/assets/script/batch/jenkins_env_params.bat' await Process.run('cmd', [
]).then((ProcessResult result) => jsonStr = result.stdout); '/C',
jenkinsMap = getMapFromJson(jsonStr); '${Directory.current.path}/assets/script/batch/jenkins_env_params.bat'
} else { ]).then((ProcessResult result) => jsonStr = result.stdout);
enable = false; jenkinsMap = getMapFromJson(jsonStr);
print( } else {
'is not Mac/Windows/Linux. build must be execute in Mac/Windows os system'); enable = false;
} print(
if (enable) { 'is not Mac/Windows/Linux. build must be execute in Mac/Windows os system');
printBuildStep('Jenkins Variables'); }
print(jsonStr); if (enable) {
} printBuildStep('Jenkins Variables');
print(jsonStr);
}
buildMap = getMapFromYaml(await getBuildData());
_jenkinsData = DataJenkins.fromJson(jenkinsMap!);
break;
case BuildType.file:
buildMap = getMapFromYaml(yamlContent!);
_jenkinsData = DataJenkins.fromJson(TestData.jenkinsMap!);
break;
} }
if (jenkinsMap != null) { await execute(buildMap!);
_jenkinsData = DataJenkins.fromJson(jenkinsMap);
if (!isTest) {
var buildStr = await getBuildData();
buildMap = getMapFromYaml(buildStr);
}
await execute(buildMap!);
}
} }
Future<void> execute(Map<String, dynamic> buildMap) async { Future<void> execute(Map<String, dynamic> buildMap) async {

View file

@ -19,8 +19,8 @@ dependencies:
ref: master ref: master
dev_dependencies: dev_dependencies:
lints: ^2.0.0 lints: ^3.0.0
test: ^1.21.0 test: ^1.24.9
build_runner: ^2.1.4 build_runner: ^2.1.4
json_serializable: ^6.0.1 json_serializable: ^6.0.1

View file

@ -1,5 +1,20 @@
import 'package:test/test.dart'; import 'package:test/test.dart';
void main() { void main() {
test('calculate', () {}); setUp(() async {
print('[SetUp] Set up initalize enviroments');
});
group('CLI', () {
test('calculate', () {
expect(2 + 3, equals(5));
});
test('calculate2', () {
expect(2 + 3, equals(6));
});
});
tearDown(() {
print('[TearDown] Post process. this doing event failed');
});
} }