Howdunnit

存在証明と生存確認

asdf-vm を使用したバージョン管理

asdf-vm とは

asdf-vm(以下asdf)は、バージョン管理ツールです。

使い方がシンプルで、いろんな言語に使えるため、重宝しています。また、プラグイン作成が簡単なので、普段自分が使用している言語が無いなと思っても、プラグインを作成、バージョン管理ができてしまいます。

公式にはこれらの言語をプラグインとしていますが、プラグイン作成ガイドラインに則ってプラグインを作成することで、自分で作ったプラグインを公式のプラグインとして追加してもらうことも可能です。

個人的にも、負荷試験ツールであるloadimpact/k6プラグインや、catをシンタックスハイライト出来るようにしたccatのプラグインを作成しています。

github.com

github.com

How to use asdf-vm

asdf-vmの使い方について簡単に説明します。

Install asdf-vm

まず、asdf-vm自体の導入です。公式の手順[^1]を参照するのが良いでしょう。

以下は、Bash on macOS の場合です。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.3

$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile

Add plugin

ここからは、↑で紹介したloadimpact/k6を例にして紹介します。
loadimpact/k6プラグインを追加します。

$ asdf plugin-add k6 https://github.com/grimoh/asdf-k6.git

公式のプラグインの場合、インストールもとのURLが不要となります。

Remove plugin

loadimpact/k6プラグインをアンインストールします。

$ asdf plugin-remove k6

List all available versions

loadimpact/k6プラグインを使用してインストール可能なバージョンの一覧を表示します。
この中から使用するバージョンを選択し、インストールして使用します。

$ asdf list-all k6

Install version

loadimpact/k6の0.24.0をインストールしてみます。
インストールを行ってもパスが通っているわけでは無いので、使用することはできません。

$ asdf install k6 0.24.0

Uninstall version

loadimpact/k6の0.24.0をアンインストールしてみます。

$ asdf uninstall k6 0.24.0

Set current version

global設定で全環境で使用するバージョンを固定します。

$ asdf global k6 0.24.0

このバージョンの指定を行うことで、使用できるようになります。

local設定で今いるディレクトリ内で使用するバージョンを固定します。

$ asdf local k6 0.24.0

プラグインの作成

プラグインの作成方法についてです。プラグイン作成ガイドライン[^2]を参照するのが良いでしょう。

プラグインは、他の言語やツールのバージョン管理をサポートするための、いくつかの実行可能スクリプトを含むgitリポジトリです。含まれるスクリプトについて簡単に紹介します。

Required scripts

必要なスクリプトとしては以下があります。

  • bin/list-all
    • インストール可能なすべてのバージョンを一覧表示します
  • bin/install
    • 指定されたバージョンをインストールします

Optional scripts

任意で追加できるスクリプトとしては以下があります。

  • bin/list-bin-path
    • 指定されたバージョンのツールの実行可能ファイルを一覧表示します
  • bin/exec-env
    • パッケージ内のバイナリを実行するようにenvを設定します
  • bin/exec-path
    • 指定されたバージョンのツールの実行可能パスを取得します
  • bin/uninstall
    • 特定のバージョンのツールをアンインストールします
  • bin/parse-legacy-file

まとめ

簡単にですが、asdf-vmの使用方法とプラグインの作成方法について記載してみました。 asdf-vmプラグインシェルスクリプトで簡単に作成できるので、作ってみると面白いと思います。 最後まで、ありがとうございました。