Posted at

Clipyで保存されたスニペットをどこでも使えるように

@econa77さんが2015年リリースしたクリップボード拡張Macアプリ「Clipy」はこの2年間世界中の人気を集まりました。私は去年からClipy Mateプロジェクトを開発始めたが、多忙でずっとリリースできませんでした。

今回はかの有名なSettings Syncをヒントに、ClipyのスニペットをGistを通してSyncするアプリを作成しました。


Demo


GitHubレポジトリ

https://github.com/jerrywdlee/clipy-mate-cli


システム要項


  • MacOS 10.10 and over

  • Clipy v1.2.0 and over

  • Node.js v8.9.0 and over


インストール


Globalインストール

$ npm i -g clipy-mate-cli

$ clipy-mate

こうすれば clipy-mate コマンドを使えるようになります。


npxで実行

$ npx clipy-mate-cli

機能は上記 clipy-mate コマンドと変わりません。


使い方


GitHubのTokenの発行



  1. GitHubのアカウントを作成してログイン


  2. このページにアクセス


  3. 「Note」欄に適当な名前を記入する、例えば「Clipy-Mate」

  4. 下にスクロールして、「gist」というチェックボックスをチェック

  5. 一番下の[Generate token]ボタンをクリック

  6. 生成された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を再起動しないと「スニペットを編集」で反映されない問題があります。


参考