@econa77さんが2015年リリースしたクリップボード拡張Macアプリ「Clipy」はこの2年間世界中の人気を集まりました。私は去年から**Clipy Mateプロジェクト**を開発始めたが、多忙でずっとリリースできませんでした。
今回はかの有名なSettings Syncをヒントに、ClipyのスニペットをGistを通してSyncするアプリを作成しました。
Demo
GitHubレポジトリ
システム要項
- MacOS 10.10 and over
- Clipy v1.2.0 and over
- Node.js v8.9.0 ~ v10 (Realmはnode v12には対応していません)
インストール
Globalインストール
$ npm i -g clipy-mate-cli
$ clipy-mate
こうすれば clipy-mate
コマンドを使えるようになります。
npx
で実行
$ npx clipy-mate-cli
機能は上記 clipy-mate
コマンドと変わりません。
使い方
GitHubのTokenの発行
- GitHubのアカウントを作成してログイン
- **このページ**にアクセス
- **「Note」**欄に適当な名前を記入する、例えば「Clipy-Mate」
- 下にスクロールして、**「gist」**というチェックボックスをチェック
- 一番下の**[Generate token]**ボタンをクリック
- 生成されたTokenをコピーしてメモしておく
対話式UIを使う
npx
を使う場合、下記の clipy-mate
コマンドを npx clipy-mate-cli
コマンドと置き換えば実行できます。
$ clipy-mate
初期化
最初の一回はGitHub Tokenを聞かれるので、先ほどメモしたTokenを記入してください。
Gist IDが聞かれた時、空欄で進むと、新しいGistが作成されます。
スニペットのアップロード
新規作成されたGistの場合、まずローカルのClipyのスニペットをアップロードしてから使えます。
スニペットの同期
Gistから、保存されたスニペットを読み込み、ローカルのClipyを更新します。
同じIDのスニペットが更新されます。ローカルに存在しないスニペットが作成されます。
Clipyの初期化
ローカルに保存されたスニペットを全部削除して、Gistに保存されたスニペットに置き換えます。
コマンドラインで使う
コマンドラインで使う場合、Cronに登録して、定期実行することも可能です。
npx
を使う場合、下記の clipy-mate
コマンドを npx clipy-mate-cli
コマンドと置き換えば実行できます。
# helper
$ clipy-mate --help
# Create or Update GitHub Settings
$ clipy-mate -e -t <YOUR TOKEN> [-g <YOUR GIST ID>]
# Upload Clipy snippets
$ clipy-mate -u
# Or
$ clipy-mate --upload
# Or
$ clipy-mate upload
# Download and merge Clipy snippets
$ clipy-mate -m
# Or
$ clipy-mate --merge
# Or
$ clipy-mate merge
# [Danger!] Download and Reset local snippets
# It will delete all local snippets
$ clipy-mate -f
# Or
$ clipy-mate --force
# Or
$ clipy-mate force
Configファイル
Configファイルは下記の場所に保存されています。
$HOME/.clipy-mate-cli/settings.json
Gistの構造
<YOUR_NAME>/ClipyMateCli
というGistが作られますが、その中身は下記のようです。
-
ClipyMateCli
はスニペットのアップロード時間などの情報を保存しています -
clipySnippets.json
はClipy Mateが読み取るスニペット情報ファイルです -
clipySnippets.xml
は上記ファイルのXML版、Clipyの「インポート」機能で導入できます
既知のBug等
- Clipy v1.1.2以下を使う場合、Clipyが起動している間、
default.realm
の操作はできないため、必ずClipyを終了してから操作を行います。Clipy v1.2.0以上であれば、そんな問題が存在しません。 - スニペットを更新した場合、Clipyを再起動しないと「スニペットを編集」で反映されない問題があります。
- Clipyのデータを読み取るためのライブラリRealmは、nodejs v12に対応していないため、node v10系がおすすめです。参考
-
**v0.4.0**で修復しましたmerge
を使うとき、同じIDのfolderが存在する場合、正しく中身がMergeされない問題が存在します。