--- name: deploy description: PC にあるファイルを、FTP で組み込み機器に送るスキル。送った後に権限(実行できるようにするなど)を付け、サム値のファイルも一緒に送れる。「機器に送って」「デプロイして」と頼まれたとき、送り先の設定ファイルを用意するとき、設定を確かめるときに使う。スラッシュコマンド /embedded-debug-loop:deploy で、このスキルだけを呼び出しても使える。 --- # deploy:機器にファイルを送る ## 何をするスキルか PC にあるファイルを、FTP で組み込み機器に送ります。 送った後に、ファイルの権限を変えられます(例:755)。 サム値のファイルを作って、一緒に送ることもできます。 サム値は、ファイルが壊れていないかを機器で確かめる値です。 送り先や送るファイルは、設定ファイルに書きます。 設定ファイルは、作業フォルダの `.embedded-debug-loop/deploy.yaml` です。 作業フォルダは、ふつうは今のフォルダです。 どのコマンドでも、スクリプトは次のこともします。 - `.embedded-debug-loop` フォルダに `.gitignore` がなければ、作ります。 中身は `*` です。設定やログを git に入れないためです。 - 設定ファイルに、ひな形にある項目が足りないことがあります(スキルを新しくしたときなど)。 そのときは、足りない項目を、説明のコメントと一緒にファイルの最後に足します。 値はひな形のままです。ほかの所は変えません。 ## 頼まれ方と、すること このスキルのフォルダを `<このスキルのフォルダ>` と書きます。 コマンドは、作業フォルダで実行します。 ### (a) 「機器に送って」「デプロイして」と頼まれたとき ``` python3 <このスキルのフォルダ>/scripts/deploy.py run ``` 設定ファイルのとおりに、ファイルを機器に送ります。 ### (b) 設定ファイルの場所を聞かれたとき・用意するよう頼まれたとき ``` python3 <このスキルのフォルダ>/scripts/deploy.py config-path ``` 設定ファイルの場所を出します。 なければ、ひな形から作ります(`created` が true)。 `missing` には、必須なのにまだ空の項目が並びます。 ### (c) 設定を確かめるよう頼まれたとき ``` python3 <このスキルのフォルダ>/scripts/deploy.py check ``` 設定の中身を確かめます。 機器に FTP でログインできるかも試します。 ファイルは送りません。 ### 付けられるもの - 作業フォルダが今のフォルダと違うとき:`--workdir <フォルダ>` - 設定ファイルが別の場所にあるとき:`--config <ファイル>` ## 結果の伝え方 コマンドは、結果を JSON で1つだけ出します。 - `message` を、そのまま利用者に伝えます。 - `notes` があれば、それも伝えます。 - `added` に項目があれば、設定ファイルに新しい項目を足したことを伝えます。 `message` にも書いてあります。値はひな形のままなので、書き換えてよいと伝えます。 - 記録のファイルの場所(`log`)を伝えます。 - JSON の項目名(`ok`、`mode`、`checksum_kind`、`remote_size` など)は、利用者に見せません。 ふつうの言葉で言い換えます(例:「権限」「サム値の種類」「機器でのファイルの大きさ」)。 - 設定ファイルの項目名(host、file_mode など)は、見せてかまいません。 利用者が自分で書き換えるものだからです。 ### 送れたとき 見分け方:`ok` が true です。 - `files` の中身を短い表で伝えます。 送ったファイル、機器の送り先、権限、サム値です。 - 権限を付けなかったファイル(`mode` が null)は、権限の欄に「付けていない」と書きます。 「変更なし」とは書きません。送った後の権限は、機器の FTP サーバーが決めるからです。 `message` にある、file_mode についての文も伝えます。 ### 設定を確かめたとき(check) - `summary` の主な設定を、短い表で伝えます。 - パスワードは、空なら「(空)」、空でなければ「***」と書きます。 ### 設定に問題があるとき 見分け方:`problems` に文が入っています。 - 問題を1つずつ並べて伝えます。 - 設定ファイルの場所(`config`)を伝えます。 - 設定ファイルは、利用者が直接書き直してよいと伝えます。 - 各項目の意味は、項目のすぐ上のコメントに書いてあると伝えます。 ### 送れなかったとき 見分け方:`ok` が false で、`problems` がありません。 - `message` に、原因と確かめることが書いてあります。 - くわしくは、記録のファイルにあると伝えます。 ## 守ること - 頼まれないかぎり、設定ファイルを書き換えません。 ただし、足りない項目は、スクリプトが自分で足します。 - つながらないときに、何度もやり直しません。 やり直さずに、`message` を伝えて終えます。どうするかは、頼んだ側か利用者が決めます。 - パスワードを画面に出しません。JSON の中でも伏せてあります。 設定ファイルの中身を見せるときも、パスワードは伏せます。 - スクリプトの終了コードは、利用者に伝えません。