全体ロードマップ: https://github.com/yancya/reminder-cli/issues/3(P2-5)
背景
list / show は --format text|json|pretty-json|yaml を持つが、変更系(create / update / complete / delete)は絵文字付きテキストのみ。このため reminder-server は create の出力を正規表現 /ID: ([A-F0-9\-]+)/ でパースして ID を拾っており、出力文言を1文字変えただけで壊れる。変更系にも機械可読な出力を追加する。
現状ポインタ
Sources/reminder-cli/reminder_cli.swift — Create(158行〜) / Update(206行〜) / Delete(285行〜) / Complete(337行〜) に --format オプションなし。List(66行〜) / Show(98行〜) には既にある
Sources/reminder-cli/OutputFormatter.swift — output(reminder:) が単体 Reminder の全フォーマット出力を既に実装済み(再利用できる)
Sources/reminder-cli/ReminderStore.swift — 各操作の実装。操作後の EKReminder から ReminderOutput を組み立てて返せるようにする
ゴールと受け入れ条件
create / update / complete に --format text|json|pretty-json|yaml を追加し、json 系では操作後の Reminder 全体(id, title, listName, isCompleted, priority, dates, notes, url, alarms)を stdout に出力する
delete --format json は {"deleted": true, "id": "...", "title": "..."} 相当の確認オブジェクトを出力する
後方互換 : --format 未指定時のテキスト出力は現行と完全一致(既存の絵文字メッセージを一切変更しない)
--format json 時、確認プロンプト等の人間向けメッセージは stdout に混ぜない(delete の確認は従来通り。JSON は結果のみ)
テストで各フォーマットの出力を検証(テスト基盤 issue に依存。未導入なら先にそちらを実施)
バージョンを 1.1.0 に上げ、README の各コマンド例に --format json を追記
手順
関連
reminder-server 側の追従 issue(正規表現パース廃止)はこの issue の完了後に着手する
全体ロードマップ: https://github.com/yancya/reminder-cli/issues/3(P2-5)
背景
list/showは--format text|json|pretty-json|yamlを持つが、変更系(create/update/complete/delete)は絵文字付きテキストのみ。このため reminder-server は create の出力を正規表現/ID: ([A-F0-9\-]+)/でパースして ID を拾っており、出力文言を1文字変えただけで壊れる。変更系にも機械可読な出力を追加する。現状ポインタ
Sources/reminder-cli/reminder_cli.swift—Create(158行〜) /Update(206行〜) /Delete(285行〜) /Complete(337行〜) に--formatオプションなし。List(66行〜) /Show(98行〜) には既にあるSources/reminder-cli/OutputFormatter.swift—output(reminder:)が単体 Reminder の全フォーマット出力を既に実装済み(再利用できる)Sources/reminder-cli/ReminderStore.swift— 各操作の実装。操作後の EKReminder からReminderOutputを組み立てて返せるようにするゴールと受け入れ条件
create/update/completeに--format text|json|pretty-json|yamlを追加し、json系では操作後の Reminder 全体(id, title, listName, isCompleted, priority, dates, notes, url, alarms)を stdout に出力するdelete --format jsonは{"deleted": true, "id": "...", "title": "..."}相当の確認オブジェクトを出力する--format未指定時のテキスト出力は現行と完全一致(既存の絵文字メッセージを一切変更しない)--format json時、確認プロンプト等の人間向けメッセージは stdout に混ぜない(delete の確認は従来通り。JSON は結果のみ)--format jsonを追記手順
ReminderOutputを返すようリファクタ@Option var format: OutputFormat = .textを追加し、text 時は従来コード、それ以外はOutputFormatter.output(reminder:)に委譲1.1.0-rc1から開始)関連