---
# [샘플] 파일 조작

property:
  workspace: /path/to/project
  version: 1.0.0

pipeline:
  id: main
  workflow:
  - exe: read-config        # 파일 읽기
  - exe: string-replace     # 내용 치환
  - exe: write-config       # 파일 쓰기
  - exe: copy-release       # 복사
  - exe: zip-release        # 압축
  - exe: delete-temp        # 임시 파일 삭제

commands:
# 파일 전체 내용 읽기 → property 저장
- command: FileRead
  id: read-config
  param:
    path: <!property.workspace>/config/app.conf
    setContent: <@property.configContent>
    showPrint: false

# 문자열 치환
- command: StringReplace
  id: string-replace
  param:
    text: <!property.configContent>
    pair:
    - from: "VERSION_PLACEHOLDER"
      to: <!property.version>
    - from: "ENV_PLACEHOLDER"
      to: prod
    setValue: <@property.configContent>

# 파일에 내용 쓰기
- command: FileWrite
  id: write-config
  param:
    path: <!property.workspace>/build/app.conf
    content: <!property.configContent>

# 파일/디렉토리 복사 (copyMap: from → to)
- command: Copy
  id: copy-release
  param:
    ignorePattern:
    - "*.log"
    - ".DS_Store"
    copyMap:
      "<!property.workspace>/build/*": "<!property.workspace>/release"

# 이동 (isMove: true)
# - command: Copy
#   id: move-file
#   param:
#     isMove: true
#     copyMap:
#       "<!property.workspace>/tmp/output": "<!property.workspace>/release"

# 압축
- command: Zip
  id: zip-release
  param:
    zipFile: "<!property.workspace>/dist/release_v<!property.version>.zip"
    zipList:
    - "<!property.workspace>/release"

# 파일/디렉토리 삭제
- command: Delete
  id: delete-temp
  param:
    list:
    - "<!property.workspace>/tmp"
    - "<!property.workspace>/build"

# 파일 메타데이터 조회
- command: FileInfo
  id: file-info
  param:
    path: "<!property.workspace>/dist/release_v<!property.version>.zip"
    setInfo: <@property.fileInfo>
