Windowsでasdfを使う(ダメでした。。)

バージョン管理としてanyenvではなくて最近使われてきているasdfを使ってみる。

Scoopでインストールできるだろうと思ってたら、パッケージが無かった。。
ので、asdfのホームページを参考にインストールしてみる。

インストール

依存関係のインストール

gitとcurlが必要だそうです。Scoopでインストールします。

> scoop install curl git
Installing 'curl' (8.9.1_1) [64bit] from 'main' bucket
curl-8.9.1_1-win64-mingw.tar.xz (4.2 MB) [====================================================================] 100%
Checking hash of curl-8.9.1_1-win64-mingw.tar.xz ... ok.
Extracting curl-8.9.1_1-win64-mingw.tar.xz ... done.
Linking ~\scoop\apps\curl\current => ~\scoop\apps\curl\8.9.1_1
Creating shim for 'curl'.
'curl' (8.9.1_1) was installed successfully!

gitは既にインストールされていたので、curlだけインストールされた。

asdfのダウンロード

公式ダウンロードのgitでのダウンロードを使用する。

ディレクトリ指定を ~/.asdf にすると ~ というディレクトリが作られてしまうので、ホームディレクトリで .asdf を指定するようにした。

> git clone https://github.com/asdf-vm/asdf.git .asdf --branch v0.14.0
Cloning into '.asdf'...
remote: Enumerating objects: 8834, done.
remote: Counting objects: 100% (747/747), done.
remote: Compressing objects: 100% (436/436), done.
remote: Total 8834 (delta 381), reused 582 (delta 293), pack-reused 8087 (from 1)
Receiving objects: 100% (8834/8834), 3.06 MiB | 3.73 MiB/s, done.
Resolving deltas: 100% (5226/5226), done.
Note: switching to 'ccdd47df9b73d0a22235eb06ad4c48eb57360832'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

asdfのインストール

PowerShell Core & Git の設定方法を使います。

PowerShell Core & Git
~/.config/powershell/profile.ps1に下記の行を追記します:
. "$HOME/.asdf/asdf.ps1"

なんにもならない。
Windowsのプロファイルは $HOME\Documents\PowerShell\Profile.ps1 らしいので、こちらに書いてみる。

ダメでした。。

バージョン確認してみる。

> asdf --version
Get-Command: C:\Users\tmacoto\.asdf\asdf.ps1:23
Line |
  23 |    $asdf = $(Get-Command -CommandType Application asdf).Source
     |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | The term 'asdf' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the
     | spelling of the name, or if a path was included, verify that the path is correct and try again.
InvalidOperation: C:\Users\tmacoto\.asdf\asdf.ps1:29
Line |
  29 |      & $asdf $args
     |        ~~~~~
     | The expression after '&' in a pipeline element produced an object that was not valid. It must result in a
     | command name, a script block, or a CommandInfo object.

?????
どうやら、asdf は Windows には対応してないみたいだ。。 #450
Windowsで使ってる人はWSLで使ってるようです。ネイティブWindowsは蚊帳の外。

とほーーーーー(涙

サクッと .asdf ディレクトリを削除!!

救世主 vfox

先ほどの #450 に気になる記述が。。

fyi, since this issue hasn’t been resolved for a while. I’ve spent some time developing a CLI tool that operates in the same manner as asdf, providing capabilities through plugins and support native Windows, non-WSL.

docs: https://vfox.lhan.me/
repo: https://github.com/version-fox/vfox
plugins: https://github.com/version-fox/vfox-plugins

vfoxというツールをWindowsで使えないシェルベースのasdfをgo言語で書き直して作ったらしい。
スバラシイ!!

しかもscoopでインストールできるとのこと。早速試してみよう。
(2024/08/16現在 2.6kスター)

でも、やっぱり、、

使いたいのはPythonとNode.jsだけなので、それぞれでバージョン管理を入れてシンプル(?)に使ってみよう。

コメント