Skip to main content
@sonamu-kit/cli 0.1.0은 sonamu μ‹€ν–‰ νŒŒμΌμ„ μ œκ³΅ν•˜λŠ” μœ μΌν•œ νŒ¨ν‚€μ§€μž…λ‹ˆλ‹€. API ν”„λ‘œμ νŠΈμ—μ„œ sonamu와 ν•¨κ»˜ 직접 μ„€μΉ˜ν•˜μ„Έμš”. sonamu νŒ¨ν‚€μ§€λŠ” 이전 CLIλ₯Ό λŒ€μ‹  μ‹€ν–‰ν•˜λŠ” ν˜Έν™˜μš© μ‹€ν–‰ νŒŒμΌμ„ μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
κΈ°μ‘΄ ν”„λ‘œμ νŠΈμ— sonamuκ°€ 이미 μ„€μΉ˜λ˜μ–΄ μžˆλ‹€λ©΄ ^0.11.0으둜 μ—…λ°μ΄νŠΈν•˜κ³  @sonamu-kit/cli@0.1.0을 μΆ”κ°€ν•˜μ„Έμš”. 이 CLI λ¦΄λ¦¬μŠ€λŠ” Sonamu ^0.11.0을 μ§€μ›ν•©λ‹ˆλ‹€. CLIλŠ” Optique 1.2.4λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ„€μΉ˜λœ λ²„μ „μ˜ μ •ν™•ν•œ λͺ…λ Ή κ΅¬μ‘°λŠ” pnpm sonamu --helpμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ€ν™”ν˜• μ‚¬μš©

TTY ν„°λ―Έλ„μ—μ„œλŠ” μžλ™ν™” μ˜΅μ…˜ 없이 μ‹€ν–‰ν•©λ‹ˆλ‹€.
TTYμ—μ„œ μ΅œμƒμœ„ λͺ…령을 μƒλž΅ν•˜κ±°λ‚˜ 잘λͺ» μž…λ ₯ν•˜κ±°λ‚˜ νΌμ§€ν•˜κ²Œ μž…λ ₯ν•˜λ©΄ λͺ…λ Ή 검색 메뉴가 열리며, μž…λ ₯ν•˜λŠ” μ¦‰μ‹œ λͺ©λ‘μ΄ ν•„ν„°λ§λ©λ‹ˆλ‹€. 각 선택 λ‹¨κ³„μ—λŠ” μ΅œλŒ€ 10개 ν•­λͺ©λ§Œ ν‘œμ‹œλ©λ‹ˆλ‹€. λͺ…λ Ή 그룹을 μ„ νƒν•˜λ©΄ λ°”λ‘œ μ•„λž˜ ν•˜μœ„ λͺ…령이 λ‹¨κ³„μ μœΌλ‘œ 열리고, κ·Έλ£Ή μžμ²΄λ„ μ‹€ν–‰ν•  수 있으면 Use current command ν•­λͺ©μ΄ ν•¨κ»˜ ν‘œμ‹œλ©λ‹ˆλ‹€. pnpm sonamu fixture처럼 λΆˆμ™„μ „ν•œ κ²½λ‘œλŠ” ν•΄λ‹Ή 그룹의 ν•˜μœ„ λͺ…λ Ή λ©”λ‰΄μ—μ„œ λ°”λ‘œ μ‹œμž‘ν•©λ‹ˆλ‹€. λͺ…λ Ή 선택 쀑 μ–΄λŠ λ‹¨κ³„μ—μ„œλ“  Ctrl+Cλ₯Ό λˆ„λ₯΄λ©΄ μ’…λ£Œ μ½”λ“œ 130으둜 λλ‚©λ‹ˆλ‹€. Entityλ₯Ό λ°›λŠ” λͺ…령은 λͺ©λ‘μ—μ„œ Entityλ₯Ό μ„ νƒν•˜κ±°λ‚˜ μž…λ ₯ν•œ Entity 이름을 퍼지 검색할 수 μžˆμŠ΅λ‹ˆλ‹€. fixture import도 TTYμ—μ„œ Entityλ₯Ό μ„ νƒν•˜κ±°λ‚˜ 퍼지 κ²€μƒ‰ν•˜μ§€λ§Œ, 숫자 IDλŠ” μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. TTYκ°€ μ•„λ‹ˆλ©΄ ν”„λ‘¬ν”„νŠΈλ₯Ό μ—΄μ§€ μ•ŠμœΌλ©°, λΉ μ§„ μΈμžμ™€ 잘λͺ»λœ μž…λ ₯은 μ‚¬μš© 였λ₯˜λ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. Entity 검색은 Entity λ©”νƒ€λ°μ΄ν„°λ§Œ 읽으며 Modelμ΄λ‚˜ λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λŸ°νƒ€μž„ λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. --non-interactiveλ₯Ό μ§€μ •ν•˜λ©΄ TTYμ—μ„œλ„ 검색과 확인 ν”„λ‘¬ν”„νŠΈλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ μž…λ ₯이 빠져도 ν”„λ‘¬ν”„νŠΈλ‘œ μ „ν™˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μžλ™ν™”μ™€ μ½”λ”© μ—μ΄μ „νŠΈ

λͺ¨λ“  ν•„μˆ˜ μž…λ ₯을 λͺ…μ‹œν•˜κ³  두 μžλ™ν™” μ˜΅μ…˜μ„ ν•¨κ»˜ μ „λ‹¬ν•˜μ„Έμš”.
dev와 startλ₯Ό μ œμ™Έν•œ μœ ν•œν•œ λͺ…령은 stdout에 JSON envelope ν•œ 쀄을 μ”λ‹ˆλ‹€. build도 이에 ν¬ν•¨λ©λ‹ˆλ‹€. 성곡 κ²°κ³Όμ—λŠ” ok, command, data, warningsκ°€ λ“€μ–΄κ°€λ©°, handlerκ°€ 데이터λ₯Ό λ°˜ν™˜ν•˜μ§€ μ•ŠμœΌλ©΄ CLIκ°€ data: null둜 μ •κ·œν™”ν•©λ‹ˆλ‹€. μ‹€νŒ¨ κ²°κ³Όμ—λŠ” ok: false, command, error, exitCodeκ°€ λ“€μ–΄κ°‘λ‹ˆλ‹€. errorμ—λŠ” μ •μ œλœ detailsκ°€ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈλŠ” 인증 정보λ₯Ό λ…ΈμΆœν•˜μ§€ μ•Šκ³  details에 runId와 κ΅¬μ‘°ν™”λœ ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό λ³΄μ‘΄ν•©λ‹ˆλ‹€. task watchλŠ” 비동기 μŠ€νŠΈλ¦Όμ„ λ°˜ν™˜ν•˜λ©° λ³€κ²½λœ Workflow μ‹€ν–‰ snapshotλ§ˆλ‹€ newline-delimited JSON(NDJSON) ν•œ 쀄을 μ”λ‹ˆλ‹€.
μ‚¬λžŒμ΄ μ½λŠ” 좜λ ₯ λ¬Έμžμ—΄μ„ λΆ„μ„ν•˜μ§€ λ§ˆμ„Έμš”. JSON λ˜λŠ” NDJSONκ³Ό ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ μ½”λ“œλ₯Ό ν•¨κ»˜ μ²˜λ¦¬ν•˜μ„Έμš”. dev와 startλŠ” μž₯μ‹œκ°„ μ‹€ν–‰λ˜λŠ” μžμ‹ ν”„λ‘œμ„ΈμŠ€μ— μž‘μ—…μ„ μœ„μž„ν•˜λ―€λ‘œ μ‚¬λžŒμ΄ μ½λŠ” 좜λ ₯만 μ§€μ›ν•©λ‹ˆλ‹€. --json을 μ§€μ •ν•˜λ©΄ μžμ‹μ„ μ‹œμž‘ν•˜κΈ° 전에 μ’…λ£Œ μ½”λ“œ 2와 JSON_UNSUPPORTED μ‹€νŒ¨ envelope ν•œ 쀄을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ‚¬λžŒμš© λͺ¨λ“œμ—μ„œλŠ” μžμ‹ 좜λ ₯을 κ·ΈλŒ€λ‘œ μ „λ‹¬ν•˜λ©°, signal둜 μ’…λ£Œλ˜λ©΄ 128 + signal 번호λ₯Ό ν¬ν•¨ν•œ μžμ‹ μ’…λ£Œ μ½”λ“œλ₯Ό κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. buildλŠ” 일반 μœ ν•œ λͺ…λ Ήμ²˜λŸΌ JSON을 μ§€μ›ν•©λ‹ˆλ‹€. 메타데이터 좜λ ₯은 JSON envelopeλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. --help와 --version은 Optique의 일반 ν…μŠ€νŠΈ 메타데이터λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€. completion은 JSON μžλ™ν™” μ˜΅μ…˜ 없이 ν˜ΈμΆœν•˜λ©΄ 일반 ν…μŠ€νŠΈ μžλ™ μ™„μ„± 슀크립트λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€. μœ„μž„λœ dev와 start ν”„λ‘œμ„ΈμŠ€λŠ” 이 ν‘œμ— μ—†λŠ” μ’…λ£Œ μ½”λ“œλ„ λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Fixture μžλ™ν™” μž…λ ₯

λΉ„λŒ€ν™”ν˜• fixture helperλŠ” 결정적 기본값을 μ‚¬μš©ν•©λ‹ˆλ‹€. λ‹€μŒ selectorκ°€ μ—†μœΌλ©΄ ν”„λ‘¬ν”„νŠΈλ₯Ό μ—΄μ§€ μ•Šκ³  μ’…λ£Œ μ½”λ“œ 2λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • fixture genμ—λŠ” --all λ˜λŠ” --include ENTITY_LISTκ°€ ν•„μš”ν•©λ‹ˆλ‹€.
  • κΈ°μ‘΄ λ°©μ‹μ˜ fixture fetchμ—λŠ” --all λ˜λŠ” --include ENTITY_LISTκ°€ ν•„μš”ν•©λ‹ˆλ‹€.
  • fixture exploreμ—λŠ” Entity ν•˜λ‚˜λ₯Ό μ§€μ •ν•˜λŠ” --include ENTITYκ°€ ν•„μš”ν•©λ‹ˆλ‹€. μ‰Όν‘œλ‘œ κ΅¬λΆ„ν•œ λͺ©λ‘μ„ μ „λ‹¬ν•˜μ§€ λ§ˆμ„Έμš”. 이 λͺ…λ Ήμ—μ„œ --all은 λΉ„λŒ€ν™”ν˜• selector둜 μΈμ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • Fixture 전솑 previewμ—λŠ” μœ„μΉ˜ 인자 ENTITY와 --source, --target, --field, ν•˜λ‚˜ μ΄μƒμ˜ --value, --relation include|exclude|none, --depthκ°€ λͺ¨λ‘ ν•„μš”ν•©λ‹ˆλ‹€.
λΉ„λŒ€ν™”ν˜• fixture gen은 기본적으둜 count 5, μ €μž₯ λŒ€μƒ db, LLM λ―Έμ‚¬μš©, cache μ‚¬μš©, dummy user λͺ¨λ“œλ₯Ό μ„ νƒν•©λ‹ˆλ‹€. λͺ…μ‹œν•œ μ˜΅μ…˜μ€ 이 기본값을 λŒ€μ²΄ν•©λ‹ˆλ‹€.

λ‘œκΉ… μ˜΅μ…˜

CLIλŠ” Optique의 LogTape 톡합을 μ‚¬μš©ν•©λ‹ˆλ‹€. κΈ°λ³Έ warning λ ˆλ²¨μ—μ„œ -v, -vv, -vvvλ₯Ό μΆ”κ°€ν•˜λ©΄ 각각 info, debug, trace 둜그λ₯Ό μ„ νƒν•©λ‹ˆλ‹€. κΈ΄ μ˜΅μ…˜ --verbose도 λ°˜λ³΅ν•  수 있으며 ν•œ 번 μΆ”κ°€ν•  λ•Œλ§ˆλ‹€ 둜그 λ ˆλ²¨μ„ ν•œ 단계 λ†’μž…λ‹ˆλ‹€.
--log-format은 jsonl, logfmt, color, plain을 λ°›μŠ΅λ‹ˆλ‹€. --log-output을 μƒλž΅ν•˜λ©΄ λ‘œκ·ΈλŠ” 기본적으둜 stderr둜 μ „μ†‘λ©λ‹ˆλ‹€. --log-output=-도 둜그λ₯Ό stderr둜 보내며, λ‹€λ₯Έ 값은 파일 경둜둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€. --json λͺ¨λ“œμ—μ„œλŠ” λͺ…λ Ή λ΄‰νˆ¬μ™€ 이벀트 객체만 stdout에 κΈ°λ‘λ©λ‹ˆλ‹€. λ‘œκΉ… μ˜΅μ…˜μ„ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ ν”„λ‘œμ νŠΈμ˜ Sonamu λ‘œκΉ… 섀정을 λ³€κ²½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 잘λͺ»λœ λ‘œκΉ… 값은 λͺ…λ Ή μ΄ˆκΈ°ν™” 전에 μ’…λ£Œ μ½”λ“œ 2둜 κ±°μ ˆν•©λ‹ˆλ‹€.

λ³€κ²½ μž‘μ—…

μ‹€ν–‰ 전에 μ „μš© preview λͺ…λ Ήμ΄λ‚˜ ν•΄λ‹Ή λͺ…λ Ήμ˜ --dry-run을 μ‚¬μš©ν•˜μ„Έμš”. μ‹€ν–‰ μ˜΅μ…˜μ€ λͺ…λ Ήλ§ˆλ‹€ λ‹€λ¦…λ‹ˆλ‹€.
migrate apply와 migrate rollback의 λΉ„λŒ€ν™”ν˜• μ‹€ν–‰μ—λŠ” --execute --confirm이 ν•„μš”ν•©λ‹ˆλ‹€. 운영 DBλ₯Ό λŒ€μƒμœΌλ‘œ μ‹€ν–‰ν•  λ•ŒλŠ” --force-reason REASON도 전달해야 ν•©λ‹ˆλ‹€. fixture init, fixture import, fixture sync, fixture gen은 기본적으둜 dry-run이며, --executeλ₯Ό μ§€μ •ν•΄μ•Όλ§Œ 데이터λ₯Ό λ³€κ²½ν•©λ‹ˆλ‹€. TTYμ—μ„œλŠ” 확인 ν”„λ‘¬ν”„νŠΈμ— 응닡해야 ν•©λ‹ˆλ‹€. λΉ„λŒ€ν™”ν˜• ν˜ΈμΆœμ—λŠ” --execute --confirm이 ν•„μš”ν•˜λ©°, μ‹€ν–‰ 승인 없이 κΈ°λ³Έ λ˜λŠ” λͺ…μ‹œμ  dry-run을 ν˜ΈμΆœν•˜λ©΄ μ’…λ£Œ μ½”λ“œ 3을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ—„κ²©ν•œ import ν˜•μ‹μ€ fixture import ENTITY ID... --executeμž…λ‹ˆλ‹€. Entity와 숫자 IDλ₯Ό ν•˜λ‚˜ 이상 λͺ…μ‹œν•˜μ„Έμš”. TTYμ—μ„œλŠ” Entityλ₯Ό μ„ νƒν•˜κ±°λ‚˜ 퍼지 검색할 수 μžˆμ§€λ§Œ IDλŠ” μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. fixture fetchλŠ” 기본적으둜 dry-runμž…λ‹ˆλ‹€. μ‹€ν–‰ν•˜λ €λ©΄ --executeλ₯Ό μ§€μ •ν•˜κ³  TTY 확인 ν”„λ‘¬ν”„νŠΈμ— μ‘λ‹΅ν•˜κ±°λ‚˜ --execute --confirm을 μ‚¬μš©ν•©λ‹ˆλ‹€. 전솑 ν˜•μ‹μ—λŠ” ENTITY, --source, --target, --field, ν•˜λ‚˜ μ΄μƒμ˜ --value, --relation, --depthκ°€ λͺ¨λ‘ ν•„μš”ν•˜λ©°, κΈ°μ‘΄ ν˜•μ‹μ—λŠ” --all λ˜λŠ” --includeκ°€ ν•„μš”ν•©λ‹ˆλ‹€. scaffold batch, task pause, task resume, task cancel, cdd rule add, cdd acλŠ” 기본적으둜 dry-runμž…λ‹ˆλ‹€. TTYμ—μ„œ νŒŒμΌμ΄λ‚˜ μƒνƒœλ₯Ό λ³€κ²½ν•˜λ €λ©΄ --executeλ₯Ό μ§€μ •ν•˜κ³  확인 ν”„λ‘¬ν”„νŠΈμ— μ‘λ‹΅ν•˜κ±°λ‚˜ --confirm을 μΆ”κ°€ν•˜μ„Έμš”. λΉ„λŒ€ν™”ν˜• μ‹€ν–‰μ—λŠ” --execute --confirm을 μ‚¬μš©ν•©λ‹ˆλ‹€. cdd rule addμ—λŠ” --rule-key, --id, --when, --textκ°€ λͺ¨λ‘ ν•„μš”ν•©λ‹ˆλ‹€. migrate run은 기본적으둜 dry-runμ΄μ§€λ§Œ 이 λͺ¨λ“œλŠ” Migration κ³„νšμ„ λ§Œλ“€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. migrate preview TARGET --action apply둜 적용 κ³„νšμ„ ν™•μΈν•œ λ‹€μŒ, migrate run --executeλ₯Ό μ‹€ν–‰ν•˜κ³  TTY ν”„λ‘¬ν”„νŠΈμ— μ‘λ‹΅ν•˜κ±°λ‚˜ --confirm을 μΆ”κ°€ν•˜μ„Έμš”. NODE_ENV=productionμ—μ„œ migrate run --executeλ₯Ό ν˜ΈμΆœν•  λ•ŒλŠ” --force-reason REASON도 전달해야 ν•˜λ©°, μƒλž΅ν•˜λ©΄ μ’…λ£Œ μ½”λ“œ 3을 λ°˜ν™˜ν•©λ‹ˆλ‹€. migrate shadow TARGET은 test와 fixture만 λ°›μŠ΅λ‹ˆλ‹€. dry-run은 μž…λ ₯만 κ²€μ¦ν•˜λ©° Shadow Migration을 μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ Shadow κ²€μ¦μ—λŠ” --executeλ₯Ό μ§€μ •ν•˜κ³  TTY ν”„λ‘¬ν”„νŠΈμ— μ‘λ‹΅ν•˜κ±°λ‚˜ --execute --confirm을 μ‚¬μš©ν•˜μ„Έμš”. scaffold batchλŠ” --executeλ₯Ό μ§€μ •ν•΄μ•Ό νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€. ν™•μΈν•œ κ²°κ³Όκ°€ κΈ°μ‘΄ νŒŒμΌμ„ λŒ€μ²΄ν•΄μ•Ό ν•œλ‹€λ©΄ μ‹€ν–‰ λͺ…령에도 --overwriteλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. i18n importλŠ” --format workbook|json ν˜•μ‹μ˜ --file FILE을 읽고, i18n exportλŠ” μ§€μ •ν•œ ν˜•μ‹κ³Ό κ²½λ‘œμ— νŒŒμΌμ„ μ”λ‹ˆλ‹€. i18n import와 ν•­λͺ© λ³€κ²½μ—λŠ” --execute --confirm을 μ‚¬μš©ν•˜λ©°, exportλŠ” 파일만 μƒμ„±ν•©λ‹ˆλ‹€. i18n listλ‚˜ i18n export에 --locale LOCALE을 μΆ”κ°€ν•˜λ©΄ ν•΄λ‹Ή locale만 ν¬ν•¨ν•©λ‹ˆλ‹€. i18n update에 --source project|entityλ₯Ό μΆ”κ°€ν•˜λ©΄ κ°±μ‹ ν•  ν•­λͺ©μ˜ 좜처λ₯Ό λͺ…μ‹œν•©λ‹ˆλ‹€. μƒλž΅ν•˜λ©΄ 사전에 λ“±λ‘λœ κΈ°μ‘΄ 좜처λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λ©°, 사전에 μ—†λŠ” key라면 project둜 ν΄λ°±ν•©λ‹ˆλ‹€. skills syncλŠ” 이전 ν”„λ‘œμ νŠΈμ˜ postinstall 슀크립트λ₯Ό μœ„ν•œ ν˜Έν™˜ λͺ…λ Ήμž…λ‹ˆλ‹€. νŒŒμΌμ„ λ³€κ²½ν•˜μ§€ μ•Šκ³  μ™ΈλΆ€ μ„€μΉ˜ μ•ˆλ‚΄λ§Œ 좜λ ₯ν•œ λ’€ μ’…λ£Œ μ½”λ“œ 0으둜 λλ‚©λ‹ˆλ‹€. entity show ENTITYλŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” Entity idλ₯Ό λ°›μœΌλ©΄ μ‹€νŒ¨ν•©λ‹ˆλ‹€. μ΄μ „μ²˜λŸΌ ok: true와 data: null을 μ’…λ£Œ μ½”λ“œ 0으둜 λ°˜ν™˜ν•˜μ§€ μ•Šκ³ , ENTITY_NOT_FOUND 였λ₯˜ λ΄‰νˆ¬μ™€ μ’…λ£Œ μ½”λ“œ 1을 λ°˜ν™˜ν•©λ‹ˆλ‹€. null 응닡을 β€œμ°Ύμ§€ λͺ»ν•¨β€μœΌλ‘œ μ²˜λ¦¬ν•˜λ˜ --json μžλ™ν™”λŠ” μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. CLIλŠ” Entity μ œμ•ˆ λͺ…령을 μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. AIλ₯Ό μ΄μš©ν•œ Entity λŒ€ν™” κΈ°λŠ₯은 Sonamu Webμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ…λ Ή 경둜

migrate applyλŠ” development, staging, production, fixture, test λ‹€μ„― λŒ€μƒμ„ μ›ν•˜λŠ” μˆœμ„œμ™€ μ‘°ν•©μœΌλ‘œ λ°›μŠ΅λ‹ˆλ‹€. TTYμ—μ„œλŠ” λŒ€μƒμ„ μƒλž΅ν•˜λ©΄ ν•˜λ‚˜ 이상을 κ³ λ₯΄λŠ” 닀쀑 선택 ν”„λ‘¬ν”„νŠΈκ°€ μ—΄λ¦½λ‹ˆλ‹€. TTYκ°€ μ•„λ‹ˆκ±°λ‚˜ --non-interactiveλ₯Ό μ§€μ •ν•œ ν˜ΈμΆœμ—λŠ” λŒ€μƒμ„ ν•˜λ‚˜ 이상 전달해야 ν•©λ‹ˆλ‹€. migrate shadow TARGET은 둜컬의 fixture와 test λŒ€μƒλ§Œ λ°›μŠ΅λ‹ˆλ‹€. migrate code, migrate preview, migrate rollback은 λ‹€μ„― λŒ€μƒ 쀑 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. auth generate --plugins PLUGINSμ—λŠ” λ‹€μŒ plugin IDλ₯Ό μ‰Όν‘œλ‘œ ꡬ뢄해 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.
ν•„μˆ˜ μ˜΅μ…˜κ³Ό ν—ˆμš©λœ 값을 ν™•μΈν•˜λ €λ©΄ ν•˜μœ„ λͺ…λ Ήμ˜ 도움말을 μ‹€ν–‰ν•˜μ„Έμš”.

μ…Έ μžλ™ μ™„μ„±

Optique 1.2.4λŠ” Bash, zsh, fish, PowerShell, Nushell용 슀크립트λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
μƒμ„±ν•œ ν‘œμ€€ 좜λ ₯을 ν•΄λ‹Ή μ…Έμ˜ μžλ™ μ™„μ„± 섀정에 μ €μž₯ν•˜κ±°λ‚˜ source ν•˜μ„Έμš”.

κ΄€λ ¨ λ¬Έμ„œ