apm でスターとローカルの差分をとって同期するスクリプトを書いた
apm のスター連携機能
Atom のパッケージマネージャー apm には atom.io のスターと連携する機能があります。 スターをつけたパッケージを一括インストールしたり,インストール済みのパッケージにスターをつけることができます。 これは既存の環境を新しいマシンに移行する場合にとても便利です。
しかし,パッケージをあれこれ試して,それを職場と自宅など複数のマシンで同期したいような場合には不満があります。
たとえば,apm stars --install
を実行すると,スターがついているパッケージであれば,たとえインストール済みであってもすべてインストールしようとします。
利用しているパッケージの数が多いと結構な時間がかかります。
また,apm unstar <package_name>
でスターを外せるのですが,スターはついているけれどもローカルにはないパッケージのスターを一括で外すような機能はありません。
差分同期スクリプト apm-sync
そこで,atom.io のスターの状態とローカルのインストール状況をもとに差分をとって同期する簡単なスクリプトを書いてみました。
同期
リモートのスターの状態にあわせたり,ローカルのインストール状況にあわせたりすることができます。
リモートを基準に同期
スターの状態をもとに差分インストール・差分アンインストールを行います。 スターがついていてローカルにないパッケージをインストールし,スターがついていないがローカルにあるパッケージをアンインストールします。
apm-sync pull
ローカルを基準に同期
インストール状況をもとにスター・アンスターを行います。 インストールされていてスターがついていないパッケージにスターをつけ,インストールされていないがスターがついているパッケージのスターを外します。
apm-sync push
差分情報をつかった処理
ローカルかリモートの状態に同期するだけでなく,差分情報をつかってインストール・アンインストール・スター・アンスターを個別に行うこともできます。
差分インストール
スターがついているけれどインストールされていないパッケージをインストールします。
apm-sync install
差分アンインストール
スターがついてないけれどインストールされているパッケージをアンインストールします。
apm-sync uninstall
差分スター
インストールされているけれどスターがついていないパッケージにスターをつけます。
apm-sync star
差分アンスター
インストールされてないけれどスターがついているパッケージのスターを外します。
apm-sync unstar