@@ -20,6 +20,37 @@ if [[ -x "$(command -v brew)" ]]; then
2020 }
2121fi
2222
23+ __homebrew_funcs () {
24+ # Install a specific version of a Homebrew formula
25+ # @param {string} $1 Formula name
26+ # @param {string} $2 Formula version
27+ vintage () {
28+ # Ensure homebrew/core is tapped and up to date
29+ brew tap | grep -xq homebrew/core \
30+ && brew update \
31+ || brew tap --force homebrew/core
32+
33+ # Ensure homebrew/local is created
34+ brew tap | grep -xq homebrew/local \
35+ || brew tap homebrew/local
36+
37+ # Extract the formula
38+ brew extract --force " --version=${2:? } " " ${1:? } " homebrew/local
39+
40+ # If the formula is already installed, re-link it
41+ if brew list -1 | grep -xq " ${1:? } @${2:? } " ; then
42+ brew unlink " ${1:? } @${2:? } "
43+ brew link --overwrite " ${1:? } @${2:? } "
44+ return 0
45+ fi
46+
47+ # Install the formula and ensure it's linked
48+ brew install " homebrew/local/${1:? } @${2:? } " \
49+ || brew link --overwrite " ${1:? } @${2:? } "
50+ }
51+ }
52+ __homebrew_funcs
53+
2354
2455# #### App installs #####
2556
@@ -49,36 +80,39 @@ if command -v brew &> /dev/null; then
4980fi
5081
5182# App store applications
52- if command -v brew & > /dev/null && ! command -v mas & > /dev/null; then
53- brew install mas
54- # Installed applications aren't enumerated immediately, `mas list` may return nothing
83+ if command -v brew & > /dev/null; then
84+ if ! command -v mas & > /dev/null; then
85+ brew install mas
86+ # Installed applications aren't enumerated immediately, `mas list` may return nothing
87+ else
88+ # If there are no installed applications, it could be because a newer OS version needs a newer version of 'mas'
89+ mas list | grep -Eq ' ^[0-9]+ ' || brew upgrade mas
90+ fi
91+ fi
92+ if command -v mas & > /dev/null; then
93+ mas_list=$( mas list)
94+ for app_id in $(
95+ # ----- Applications -----
96+ # TODO: Keka (paid)
97+ # Kindle
98+ echo " 302584613"
99+ # TODO: LibreOffice (paid)
100+ # TODO: Maccy (paid)
101+ # Menu World Time
102+ # echo "1446377255"
103+ # NordVPN
104+ echo " 905953485"
105+ # Telegram
106+ # echo "747648890"
107+ # ----- Safari Extensions -----
108+ # 1Password for Safari
109+ echo " 1569813296"
110+ # Grammarly for Safari
111+ echo " 1462114288"
112+ ) ; do
113+ echo " ${mas_list} " | grep " ^${app_id} " & > /dev/null || mas install " ${app_id} "
114+ done
55115fi
56- # if command -v mas &> /dev/null; then
57- # mas_list=$(mas list)
58- # for app_id in $(
59- # # ----- Applications -----
60- # # TODO: Keka (paid)
61- # # Kindle
62- # echo "302584613"
63- # # TODO: LibreOffice (paid)
64- # # TODO: Maccy (paid)
65- # # Menu World Time
66- # # echo "1446377255"
67- # # NordVPN
68- # # echo "905953485"
69- # # Telegram
70- # # echo "747648890"
71- # # WhatsApp
72- # # echo "310633997"
73- # # ----- Safari Extensions -----
74- # # 1Password for Safari
75- # echo "1569813296"
76- # # Grammarly for Safari
77- # echo "1462114288"
78- # ); do
79- # echo "${mas_list}" | grep "^${app_id} " &> /dev/null || mas install "${app_id}"
80- # done
81- # fi
82116
83117# macOS DNS flush
84118flush () {
0 commit comments