DEV Community

Deep Panchal
Deep Panchal

Posted on • Edited on

15 3

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, 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, git, and unzip 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
Enter fullscreen mode Exit fullscreen mode

Example

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

ruby 2.6.3
python 3.10.4
nodejs 16.0.0
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

!!! 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

References:

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay