Setup asdf & direnv

⚙️ Environment setup

ASDF Version Manager

asdf is a tool version manager. All tool version definitions are contained within one file (.tool-versions) which you can check in to your project’s Git repository to share with your team,…


This content originally appeared on DEV Community and was authored by Deep Panchal

⚙️ Environment setup

ASDF Version Manager

asdf is a tool version manager. All tool version definitions are contained within one file (.tool-versions) which you can check in to your project's Git repository to share with your team, ensuring everyone is using the exact same versions of tools.

Reference: https://asdf-vm.com/guide/introduction.html

Install asdf

  • Make sure you have curl and git installed.
  • Download asdf with

    git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
    
  • If you are using bash, add the following to your ~/.bashrc file:

    . $HOME/.asdf/asdf.sh
    
    # configure completions
    . $HOME/.asdf/completions/asdf.bash
    
  • If you are using zsh, add the following to your ~/.zshrc file:

    . $HOME/.asdf/asdf.sh
    
    # if using oh-my-zsh, add `asdf` to your plugins list
    # for example: plugins=(... asdf ...)
    
    # if you are not using oh-my-zsh, add the following to your `.zshrc` file:
    
    # append completions to fpath
    fpath=(${ASDF_DIR}/completions $fpath)
    
    # initialise completions with ZSH's compinit
    autoload -Uz compinit && compinit
    

Install plugins

After installing asdf, add all the plugins found in the .tool-versions file. This depends on the tools defined in your .tool-versions file depending on the repository.

# Add all the plugins to asdf.
cat .tool-versions | awk '{print $1}' | xargs -I _ asdf plugin add _

# Install all tools according to .tool-versions.
asdf install

Example

If your project's .tool-versions file contains the following:

ruby 2.6.3
python 3.10.4
nodejs 16.0.0

Then you can install all the tools with their specified versions by running asdf install.

Global tool versions

Optionally, you can add the following .tool-versions file to your home directory:

direnv 2.31.0
nodejs 16.13.2
pnpm 7.1.5
java adoptopenjdk-8.0.272+10
minikube 1.25.1
helm 3.6.3
helmfile 0.139.9
kubectl 1.23.3
kubespy 0.6.0
kubectx 0.9.4
jq 1.6
golang 1.15.15
poetry 1.1.13

!!! Note
Make sure you stay up to date with the latest or stable versions of tools.

Refer to official asdf documentation for more information.

Direnv

direnv is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.

Setup any project with direnv by creating a .envrc file that looks like the following:

#!/usr/bin/env bash
export CR_PAT=<YOUR_GITHUB_PAT_WITH_REPO_READ_AND_WRITE>
export NODE_AUTH_TOKEN=$CR_PAT
export DEBUG="*"

cat <<EOF >.env
VITE_BASE_URL=${VITE_BASE_URL}
NODE_AUTH_TOKEN=${CR_PAT}
EOF

Hook asdf with direnv

Setup

  • Install asdf-plugin for direnv using the following:

    asdf plugin-add direnv
    
  • Setup shell

    # change --shell flag based on your current shell (bash, zsh, fish, etc.)
    asdf direnv setup --shell zsh --version latest
    
  • Once direnv is hooked up, you can run the following command on the root directory of your project to update your environment given that you have a .envrc file in your project root.

    asdf direnv local
    

Creating temporary environments

You can create a temporary environment without editing .envrc or .tool-versions

# Enter a new shell having python and node
asdf direnv shell python 3.8.10 nodejs 14.18.2

# Just execute a npx command under some node version
asdf direnv shell nodejs 14.18.2 -- npx create-react-app

References:


This content originally appeared on DEV Community and was authored by Deep Panchal


Print Share Comment Cite Upload Translate Updates
APA

Deep Panchal | Sciencx (2022-06-14T22:23:16+00:00) Setup asdf & direnv. Retrieved from https://www.scien.cx/2022/06/14/setup-asdf-direnv/

MLA
" » Setup asdf & direnv." Deep Panchal | Sciencx - Tuesday June 14, 2022, https://www.scien.cx/2022/06/14/setup-asdf-direnv/
HARVARD
Deep Panchal | Sciencx Tuesday June 14, 2022 » Setup asdf & direnv., viewed ,<https://www.scien.cx/2022/06/14/setup-asdf-direnv/>
VANCOUVER
Deep Panchal | Sciencx - » Setup asdf & direnv. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/06/14/setup-asdf-direnv/
CHICAGO
" » Setup asdf & direnv." Deep Panchal | Sciencx - Accessed . https://www.scien.cx/2022/06/14/setup-asdf-direnv/
IEEE
" » Setup asdf & direnv." Deep Panchal | Sciencx [Online]. Available: https://www.scien.cx/2022/06/14/setup-asdf-direnv/. [Accessed: ]
rf:citation
» Setup asdf & direnv | Deep Panchal | Sciencx | https://www.scien.cx/2022/06/14/setup-asdf-direnv/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.