あらすじ
DashのSnippetですが、Dash Guideやネットにある情報を見る限り
DashのGUIから登録する方法しか提供されていないようです。
DashはSnippetのデータをSQLiteで管理しています。
そこで、このデータ構造を把握し中身を直接操作することで
Snippetの情報を管理できることまで確認できました。
とはいえ、毎回SQLを発行してSnippetを管理するのは面倒すぎます。
そこで簡単にSnippetを管理できるツールを作ることにしました。
さて、このツールはDELETE-INSERTでデータを管理するので
実行する前に既存スニペットを設定ファイル化したいです。
今回はSnippetのdump機能を追加します。
前提
- ツールは自分のチーム内のユースケースを最低限満たす水準を目標とする
- コストをかけすぎない
- 私達のチームはRubyの開発をしているためRubyでツールを作る
- SQLiteのDBを直接いじるのはアプリケーションの提供側の想定外だろうから、当ツールの利用は自己責任
- 少なくとも
library.dash
をバックアップしておけばツール導入前のSnippetは復旧可
- 少なくとも
- 設定ファイルはTOMLを使いました。YAMLで使いたい!とかある場合はプルリクください
- 生成ファイルはSnippetのAbbreviationから
[a-z]
,[A-Z]
,[1-9]
,-
,_
以外の文字を削除したものにします。- これらの文字を削除したうえで同じ名前になるものはファイルを上書きます。
要件
- 現在登録済みの Snippet を 1Snippet 1ファイル で TOMLファイル として生成する
- 出力先は
./snippets/backup/*.toml
とする
セットアップ
前回記事と変わらないので省略します。
dumpのタスクが追加になったので、 rake
のタスクは以下のようになっています。
$ rake -T rake dash:build # build snippets rake dash:dump # dump snippets
デモ
実行前
前回サンプルのSnippetを3件登録した状態です。
Build
$ rake dash:dump 2015/12/15 23:32:38 - DEBUG - start dump snippets 2015/12/15 23:32:38 - DEBUG - snippet count = 3 2015/12/15 23:32:38 - DEBUG - complete output ./snippets/dump/javatitle.toml 2015/12/15 23:32:38 - DEBUG - complete output ./snippets/dump/javatitle2.toml 2015/12/15 23:32:38 - DEBUG - complete output ./snippets/dump/title.toml 2015/12/15 23:32:38 - DEBUG - finish dump snippets
生成結果
$ cd snippets/dump $ cat *.toml [snippet] body = "line1\nline1\nline2\n" syntax = "Java" tag = "Java" title = "javatitle;;" [snippet] body = "line1\nline1\nline2\n" syntax = "Java" tag = "Java" title = "javatitle2;;" [snippet] body = "line1\nline1\nline2\n" syntax = "Ruby" tag = "Ruby"