@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 ν°λ―Έλμμλ μλν μ΅μ μμ΄ μ€νν©λλ€.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) ν μ€μ μλλ€.
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λ₯Ό μΌνλ‘ κ΅¬λΆν΄ μ λ¬ν μ μμ΅λλ€.