知に至る病

お勉強したことを忘れないように書き留めています。

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

参考資料