- Split BuildIOS command into build_ios_archive and build_ios_build - Split Git command into git_branch, git_remote, git_revision, git_stash - Add cli_style.dart and printer.dart for consistent CLI output - Add macos_signing.dart for macOS/iOS code signing - Refactor pipeline system (pipeline, pipeline_condition, pipeline_contain, etc.) - Update tag_system, defined_data, pipeline_data - Update application and command files for new structure - Add tests for new command catalog and core functionality - Update README with new features
42 lines
2 KiB
Text
42 lines
2 KiB
Text
# Complete - 02+yaml_validation
|
|
|
|
## 완료 일시
|
|
|
|
2026-05-20
|
|
|
|
## 요약
|
|
|
|
YAML 기본 구조, command list, workflow node shape 검증을 DataBuild 파싱 전후의 명시 validation message로 정리했다. 총 3회 리뷰 루프 후 최종 PASS.
|
|
|
|
## 루프 이력
|
|
|
|
| Plan | Review | Verdict | 메모 |
|
|
|------|--------|---------|------|
|
|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | FAIL | root/property/command id 타입 오류가 generated parser/type error로 노출되어 follow-up 필요 |
|
|
| `plan_cloud_G07_1.log` | `code_review_cloud_G07_1.log` | FAIL | non-string workflow task key가 jsonEncode raw error로 노출되어 follow-up 필요 |
|
|
| `plan_cloud_G07_2.log` | `code_review_cloud_G07_2.log` | PASS | nested YAML 변환 안전화와 workflow key validation test 확인 완료 |
|
|
|
|
## 구현/정리 내용
|
|
|
|
- `Application.build()`에서 `DataBuild.fromJson()` 전에 build map과 command list 기본 구조를 검증하도록 했다.
|
|
- `getMapFromYamlA()`를 nested `YamlMap`/`YamlList` 재귀 변환 방식으로 바꿔 JSON encoder raw error를 피했다.
|
|
- `Pipeline.pipelineInitialize()`에서 workflow item shape와 unsupported task 메시지에 index와 지원 task 목록을 포함하도록 했다.
|
|
- root non-map, property non-map, command id/type non-string, workflow numeric key invalid YAML 테스트를 추가했다.
|
|
- 코드 포맷을 적용했다.
|
|
|
|
## 최종 검증
|
|
|
|
- `dart analyze` - PASS; `Analyzing oto... No issues found!`
|
|
- `dart test test/oto_application_test.dart test/oto_core_test.dart` - PASS; `+12: All tests passed!`
|
|
- `dart test test/oto_command_catalog_test.dart` - PASS; `+5: All tests passed!`
|
|
- `dart run bin/main.dart exe -f assets/yaml/sample/01_basic.yaml` - PASS; `Build Successfully Complete`
|
|
- `dart run bin/main.dart exe -f assets/yaml/sample/02_pipeline_if.yaml` - PASS; `Build Successfully Complete`
|
|
- numeric workflow key smoke - PASS; expected failure path now reports `Validate Pipeline` with `workflow[0]` instead of raw encoder error.
|
|
|
|
## 잔여 Nit
|
|
|
|
- 없음
|
|
|
|
## 후속 작업
|
|
|
|
- 없음
|