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 formatters are installed
8[group('install')]
9ensure-formatters:
10 #!/usr/bin/env bash
11 cargo install --git https://github.com/nushell/nufmt
12 go install github.com/reteps/dockerfmt@latest
13 go install github.com/google/yamlfmt/cmd/yamlfmt@latest
14 sudo npm install -g markdownlint-cli2
15 pipx install ansible-lint
16 pipx install black
17 pipx install isort
18 pipx install nginxfmt
19 echo "Install shellcheck shfmt jq with your distro's package manager"
20
21# Install todo.txt
22[group('install')]
23install-todotxt:
24 #!/usr/bin/env bash
25 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')
26 FILENAME=$(basename "$URL")
27 DIRNAME=$(basename "$URL" .tar.gz)
28 TEMP_DIR=$(mktemp -d)
29 wget "$URL" -O "${TEMP_DIR}/${FILENAME}"
30 tar -zxvf "${TEMP_DIR}/${FILENAME}" -C "${TEMP_DIR}"
31 sudo cp -fv "${TEMP_DIR}/${DIRNAME}/todo.sh" /usr/local/bin/
32 rm -rf "$TEMP_DIR"
33 echo "todo.sh successfully installed to /usr/local/bin/"
34
35# Install Go tools
36[group('install')]
37install-go-tools:
38 #!/usr/bin/env bash
39 go_tools=(
40 "golang.org/x/tools/gopls@latest"
41 "github.com/fatih/gomodifytags@latest"
42 "github.com/cweill/gotests/...@latest"
43 "github.com/x-motemen/gore/cmd/gore@latest"
44 "golang.org/x/tools/cmd/guru@latest"
45 "github.com/themimitoof/ipg@latest"
46 )
47 for x in "${go_tools[@]}"; do
48 go install "$x"
49 done
50
51# Install Python tools
52[group('install')]
53install-python-tools:
54 #!/usr/bin/env bash
55 pipx install ansible --include-deps --force
56 py_tools=(
57 "black"
58 "bpython"
59 "pyflakes"
60 "isort"
61 "pipenv"
62 "nose"
63 "poetry"
64 "pytest"
65 "uv"
66 "qbt-helper"
67 "get-def"
68 "print-wp-sources"
69 )
70 for x in "${py_tools[@]}"; do
71 pipx install "$x"
72 done
73 bpy_inject_tools=("bs4" "requests" "rich" "qbittorrent-api")
74 for x in "${bpy_inject_tools[@]}"; do
75 pipx inject bpython "$x"
76 done
77
78# Install Node tools
79[group('install')]
80install-node-tools:
81 #!/usr/bin/env bash
82 node_tools=(
83 "@bitwarden/cli"
84 "@catppuccin/inkcat"
85 "prettier"
86 "js-beautify"
87 "stylelint"
88 )
89 for x in "${node_tools[@]}"; do
90 sudo npm install -g "$x"
91 done
92
93# Install Flatpaks
94[group('install')]
95install-flatpaks:
96 #!/usr/bin/env bash
97 flatpak install -y \
98 app.zen_browser.zen \
99 com.bitwarden.desktop \
100 com.calibre_ebook.calibre \
101 com.discordapp.Discord \
102 com.github.iwalton3.jellyfin-media-player \
103 com.nextcloud.desktopclient.nextcloud \
104 fi.skyjake.Lagrange
105
106# vim: ts=4 sts=4 sw=4 et ft=just