justfiles for automating various tasks on my workstation
1# Upgrade Python tools 2[group('install')] 3upgrade-python-tools: 4 #!/usr/bin/env bash 5 pipx list --short | awk '{print $1}' | xargs pipx upgrade 6 7# Ensure lsps and formatters are installed 8[group('install')] 9ensure-lsp: 10 #!/usr/bin/env bash 11 go install github.com/reteps/dockerfmt@latest 12 go install github.com/google/yamlfmt/cmd/yamlfmt@latest 13 go install github.com/wader/jq-lsp@latest 14 sudo npm install -g markdownlint-cli2 15 sudo npm install -g ansible-language-server 16 sudo npm install -g bash-language-server 17 sudo npm install -g vscode-langservers-extracted 18 sudo npm install -g dockerfile-language-server-nodejs 19 command -v cargo-binstall || cargo install cargo-binstall 20 cargo-binstall -y just-lsp 21 cargo-binstall -y taplo-cli 22 cargo-binstall -y kdlfmt 23 cargo-binstall -y systemd-lsp 24 pipx install ansible-lint 25 pipx install basedpyright 26 pipx install black 27 pipx install isort 28 pipx install nginxfmt 29 echo "Install shellcheck shfmt jq with your distro's package manager" 30 31# Install todo.txt 32[group('install')] 33install-todotxt: 34 #!/usr/bin/env bash 35 URL=$(curl --silent https://api.github.com/repos/todotxt/todo.txt-cli/releases/latest | jq -r '.assets[] | select(.name| test(".*.tar.gz$")).browser_download_url') 36 FILENAME=$(basename "$URL") 37 DIRNAME=$(basename "$URL" .tar.gz) 38 TEMP_DIR=$(mktemp -d) 39 wget "$URL" -O "${TEMP_DIR}/${FILENAME}" 40 tar -zxvf "${TEMP_DIR}/${FILENAME}" -C "${TEMP_DIR}" 41 sudo cp -fv "${TEMP_DIR}/${DIRNAME}/todo.sh" /usr/local/bin/ 42 rm -rf "$TEMP_DIR" 43 echo "todo.sh successfully installed to /usr/local/bin/" 44 45# Install Go tools 46[group('install')] 47install-go-tools: 48 #!/usr/bin/env bash 49 go_tools=( 50 "golang.org/x/tools/gopls@latest" 51 "github.com/fatih/gomodifytags@latest" 52 "github.com/cweill/gotests/...@latest" 53 "github.com/x-motemen/gore/cmd/gore@latest" 54 "golang.org/x/tools/cmd/guru@latest" 55 "github.com/themimitoof/ipg@latest" 56 ) 57 for x in "${go_tools[@]}"; do 58 go install "$x" 59 done 60 61# Install Python tools 62[group('install')] 63install-python-tools: 64 #!/usr/bin/env bash 65 pipx install ansible --include-deps --force 66 py_tools=( 67 "black" 68 "bpython" 69 "pyflakes" 70 "isort" 71 "pipenv" 72 "nose" 73 "poetry" 74 "pytest" 75 "uv" 76 "qbt-helper" 77 "get-def" 78 "print-wp-sources" 79 ) 80 for x in "${py_tools[@]}"; do 81 pipx install "$x" 82 done 83 bpy_inject_tools=( 84 "bs4" 85 "matplotlib" 86 "pandas" 87 "qbittorrent-api" 88 "requests" 89 "rich" 90 ) 91 for x in "${bpy_inject_tools[@]}"; do 92 pipx inject bpython "$x" 93 done 94 95# Install Node tools 96[group('install')] 97install-node-tools: 98 #!/usr/bin/env bash 99 node_tools=( 100 "@bitwarden/cli" 101 "@catppuccin/inkcat" 102 "prettier" 103 "js-beautify" 104 "stylelint" 105 ) 106 for x in "${node_tools[@]}"; do 107 sudo npm install -g "$x" 108 done 109 110# Install Flatpaks 111[group('install')] 112install-flatpaks: 113 #!/usr/bin/env bash 114 sudo flatpak install -y \ 115 app.zen_browser.zen \ 116 com.calibre_ebook.calibre \ 117 com.discordapp.Discord \ 118 com.github.iwalton3.jellyfin-media-player \ 119 com.nextcloud.desktopclient.nextcloud \ 120 fi.skyjake.Lagrange \ 121 org.signal.Signal 122 123# vim: ts=4 sts=4 sw=4 et ft=just