6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

開発者の環境や技術Advent Calendar 2019

Day 5

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

Last updated at Posted at 2019-09-11

@econa77さんが2015年リリースしたクリップボード拡張Macアプリ「Clipy」はこの2年間世界中の人気を集まりました。私は去年から**Clipy Mateプロジェクト**を開発始めたが、多忙でずっとリリースできませんでした。
今回はかの有名なSettings Syncをヒントに、ClipyのスニペットをGistを通してSyncするアプリを作成しました。

Demo

clipy-mate_demo.gif

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の発行

  1. GitHubのアカウントを作成してログイン
  2. **このページ**にアクセス
  3. **「Note」**欄に適当な名前を記入する、例えば「Clipy-Mate」
  4. 下にスクロールして、**「gist」**というチェックボックスをチェック
  5. 一番下の**[Generate token]**ボタンをクリック
  6. 生成されたTokenをコピーしてメモしておく
fig-1.png fig-2.png fig-3.png fig-4.png

対話式UIを使う

npxを使う場合、下記の clipy-mate コマンドを npx clipy-mate-cli コマンドと置き換えば実行できます。

$ clipy-mate

初期化

最初の一回はGitHub Tokenを聞かれるので、先ほどメモしたTokenを記入してください。
Gist IDが聞かれた時、空欄で進むと、新しいGistが作成されます。
asciicast

スニペットのアップロード

新規作成されたGistの場合、まずローカルのClipyのスニペットをアップロードしてから使えます。
asciicast

スニペットの同期

Gistから、保存されたスニペットを読み込み、ローカルのClipyを更新します。
同じIDのスニペットが更新されます。ローカルに存在しないスニペットが作成されます。
asciicast

Clipyの初期化

ローカルに保存されたスニペットを全部削除して、Gistに保存されたスニペットに置き換えます。
asciicast

コマンドラインで使う

コマンドラインで使う場合、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系がおすすめです。参考
  • mergeを使うとき、同じIDのfolderが存在する場合、正しく中身がMergeされない問題が存在します。 **v0.4.0**で修復しました

参考

6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?