1
+ #! /bin/bash
2
+
3
+ declare -A unit
4
+
5
+ # ## Base
6
+ # unit["Terminator"]="/usr/bin/terminator"
7
+ # unit["Screen"]="/usr/bin/screen"
8
+ # unit["tmux"]="/usr/bin/tmux"
9
+ # unit["htop"]="/usr/bin/htop"
10
+ # unit["ripgrep"]="/usr/bin/rg"
11
+ # unit["fzf"]="$HOME/.fzf"
12
+ # unit["jq"]="/usr/bin/jq"
13
+ # unit["Neovim"]="/usr/bin/nvim"
14
+ # unit["Amix_Vim"]="$HOME/.vim_runtime/amix.lock"
15
+ # unit["Doom_Emacs"]="$HOME/.config/emacs/bin/doom"
16
+ # unit["7Zip"]="/usr/bin/7z"
17
+ # unit["UnRAR"]="/usr/bin/unrar"
18
+ # unit["Docs2Unix"]="/usr/bin/dos2unix"
19
+ # unit["thefuck"]="/usr/local/bin/thefuck"
20
+ # unit["VSCode_Code_Runner"]="$HOME/.vscode/extensions/%code-runner%"
21
+ # unit["VSCode_Intellicode"]="$HOME/.vscode/extensions/%intellicode%"
22
+ # unit["VSCode_Spellchecker"]="$HOME/.vscode/extensions/%spellchecker%"
23
+
24
+
25
+ # ## Python
26
+ # unit["pyenv"]=""
27
+ # unit["Pipenv"]=""
28
+ # unit["Poetry"]=""
29
+ # unit["pipx"]="/usr/local/bin/pipx"
30
+ # unit["PyCharm"]="/snap/bin/pycharm-community"
31
+ # unit["IPython"]="/usr/local/bin/ipython"
32
+ # unit["Black"]="/usr/local/bin/black"
33
+ # unit["Flake8"]="/usr/local/bin/flake8"
34
+ # unit["VSCode_Python"]="$HOME/.vscode/extensions/%python%"
35
+
36
+
37
+ # ## Cloud
38
+ # unit["AWS_CLI"]="/usr/local/bin/aws"
39
+ # unit["Azure_CLI"]="/usr/bin/az"
40
+ # unit["Google_Cloud_CLI"]="/snap/bin/gcloud"
41
+ # unit["Digital_Ocean_CLI"]="/snap/bin/doctl"
42
+ # unit["Kubernetes_Kind"]="/usr/local/bin/kind"
43
+ # unit["Kubectl"]="/usr/bin/kubectl"
44
+ # unit["Helm"]="/snap/bin/helm"
45
+ # unit["Terraform"]="/snap/bin/terraform"
46
+
47
+
48
+ # ## Containers and VMs
49
+ # unit["Virtualbox"]="/usr/bin/virtualbox"
50
+ # unit["QEMU_KVM"]="/usr/bin/kvm"
51
+ # unit["Docker"]="/usr/bin/docker"
52
+ # unit["Docker_Compose"]="/usr/local/bin/docker-compose"
53
+ # unit["VSCode_Docker"]="$HOME/.vscode/extensions/%docker%"
54
+
55
+
56
+ # ## Database Clients
57
+ # unit["MySQL_Workbench"]="/snap/bin/mysql-workbench-community"
58
+ # unit["DBeaver"]="/usr/bin/dbeaver"
59
+ # unit["DataGrip"]="/snap/bin/datagrip"
60
+ # unit["pgAdmin_Desktop"]=""
61
+ # unit["SQLite_Browser"]="/usr/bin/sqlitebrowser"
62
+
63
+ # todod this is bad
64
+ # unit["Redis_Commander"]="/usr/local/bin/redis-commander"
65
+ # ~/.nvm/versions/node/v20.10.0/bin/redis-commander
66
+ # unit["usql"]="/usr/bin/usql"
67
+
68
+ nvm_version=" v20.10.0"
69
+
70
+ # fedora puts vscode assets in here:
71
+ vscode_root=" .vscode-server"
72
+
73
+ # ## JavaScript and Node
74
+ unit[" Node_Version_Manager" ]=" $HOME /.nvm/versions/node/$nvm_version "
75
+ unit[" Node_TypeScript" ]=" $HOME /.nvm/versions/node/$nvm_version /bin/tsc"
76
+ unit[" Nodemon" ]=" $HOME /.nvm/versions/%node%"
77
+ unit[" Yarn" ]=" $HOME /.nvm/versions/node/$nvm_version /bin/yarn"
78
+ unit[" VSCode_Node" ]=" $HOME /$vscode_root /extensions/%node%"
79
+ unit[" VSCode_JavaScript" ]=" $HOME /$vscode_root /extensions/%javascript%"
80
+ unit[" VSCode_TypeScript" ]=" $HOME /$vscode_root /extensions/%typescript%"
81
+ unit[" VSCode_ESLint" ]=" $HOME /$vscode_root /extensions/%eslint%"
82
+ unit[" VSCode_Prettier" ]=" $HOME /$vscode_root /extensions/%prettier%"
83
+ unit[" VSCode_Path_Intellisense" ]=" $HOME /$vscode_root /extensions/%path-intellisense%"
84
+
85
+
86
+ # ## Web Tools
87
+ # unit["Angular_CLI"]=""
88
+ # unit["Create_React_App"]="/usr/local/bin/create-react-app"
89
+ # unit["Vue_CLI"]="/usr/local/bin/vue"
90
+ # unit["Webstorm"]="/snap/bin/webstorm"
91
+ # unit["Postman"]="/snap/bin/postman"
92
+ # unit["ngrok"]="/snap/bin/ngrok"
93
+ # unit["localtunnel"]="$HOME/.nvm/versions/node/$nvm_version/bin/lt"
94
+ # unit["Local_Web_Server"]="$HOME/.nvm/versions/node/$nvm_version/bin/ws"
95
+ # unit["Mockoon"]="/snap/bin/mockoon"
96
+
97
+
98
+ # ## Java
99
+ # unit["Eclipse"]="/snap/bin/eclipse"
100
+ # unit["IntelliJ_IDEA_Community"]="/snap/bin/intellij-idea-community"
101
+ # unit["Maven"]="/usr/bin/mvn"
102
+ # unit["Gradle"]="/usr/bin/gradle"
103
+ # unit["Ant"]="/usr/bin/ant"
104
+ # unit["VSCode_Java"]="$HOME/.vscode/extensions/%vscjava%"
105
+
106
+
107
+ # ## C and C++
108
+ # #unit["Binutils"]=""
109
+ # #unit["build-essential"]=""
110
+ # #unit["Libtool"]=""
111
+ # #unit["Boost"]=""
112
+ # unit["Autoconf"]="/usr/bin/autoconf"
113
+ # unit["Automake"]="/usr/bin/automake"
114
+ # unit["Clang"]="/usr/bin/clang-14"
115
+ # unit["CMake"]="/usr/bin/cmake"
116
+ # unit["llvm"]="/usr/bin/%llvm%"
117
+ # unit["Ninja_Build"]="/usr/bin/ninja"
118
+ # unit["Valgrind"]="/usr/bin/valgrind"
119
+ # unit["GDB"]="/usr/bin/gdb"
120
+ # unit["CLion"]="/snap/bin/clion"
121
+ # unit["Conan"]="/usr/local/bin/conan"
122
+ # unit["Meson"]="/usr/local/bin/meson"
123
+ # unit["QT_Creator"]="/usr/bin/qtcreator"
124
+ # unit["VSCode_C++"]="$HOME/.vscode/extensions/%cpp%"
125
+
126
+
127
+ # ## Go
128
+ # unit["Go"]="/usr/local/go/bin/go"
129
+ # unit["Goland"]="/snap/bin/goland"
130
+ # unit["VSCode_Go"]="$HOME/.vscode/extensions/%golang%"
131
+
132
+
133
+ # # Version Control
134
+ unit[" Git_Extras" ]=" /usr/bin/git-extras"
135
+ unit[" Git_Cola" ]=" /usr/bin/git-cola"
136
+ unit[" Mercurial" ]=" /usr/bin/hg"
137
+ unit[" Subversion" ]=" /usr/bin/svn"
138
+ unit[" CVS" ]=" /usr/bin/cvs"
139
+ unit[" KDiff3" ]=" /usr/bin/kdiff3"
140
+ unit[" Meld" ]=" /usr/bin/meld"
141
+
142
+
143
+ # ## PHP
144
+ # unit["PHP"]="/usr/bin/php"
145
+ # unit["Composer"]="/usr/local/bin/composer"
146
+ # unit["phpenv"]="$HOME/.phpenv/bin/phpenv"
147
+ # unit["PhpStorm"]="/snap/bin/phpstorm"
148
+ # unit["VSCode_PHP"]="$HOME/.vscode/extensions/%php%"
149
+
150
+
151
+ # ## Ruby
152
+ # unit["Ruby"]="/usr/bin/ruby"
153
+ # unit["RubyMine"]="/snap/bin/rubymine"
154
+ # unit["VSCode_Ruby"]="$HOME/.vscode/extensions/%ruby%"
155
+
156
+
157
+ # # Rust
158
+ # unit["Rust"]="$HOME/.cargo/bin/rustc"
159
+ # unit["VSCode_Rust"]="$HOME/.vscode/extensions/%rust%"
160
+
161
+ declare -a not_found_packages
162
+
163
+ for key in " ${! unit[@]} " ; do
164
+ if [[ " ${unit[$key]} " == * " %" * ]]; then
165
+ placeholder=$( echo " ${unit[$key]} " | sed -n ' s/.*%\([^%]*\)%.*/\1/p' )
166
+ directory=$( dirname " ${unit[$key]} " )
167
+ if ! ls " $directory " /* " $placeholder " * 1> /dev/null 2>&1 ; then
168
+ not_found_packages+=(" $key " )
169
+ fi
170
+ else
171
+ if [ ! -e " ${unit[$key]} " ]; then
172
+ not_found_packages+=(" $key " )
173
+ fi
174
+ fi
175
+ done
176
+
177
+ if [ ${# not_found_packages[@]} -eq 0 ]; then
178
+ echo " All packages found."
179
+ exit 0
180
+ else
181
+ echo " Packages not found:"
182
+ for package in " ${not_found_packages[@]} " ; do
183
+ echo " - $package "
184
+ done
185
+ exit 1
186
+ fi
0 commit comments