8 Commits
Author SHA1 Message Date
seung6lee c8e663fd91 add codex 2026-08-25 07:54:05 +09:00
seung6lee ae452038e7 add mactex & claude-code 2026-08-24 22:37:59 +09:00
seung6lee 825fd81ca7 edit apps.csv 2026-08-18 11:55:39 +09:00
seung6lee 08cc0e7e5a add draw.io 2026-08-04 23:32:49 +09:00
Seungjun Lee 6f7ec6e245 remove texty from auto installing 2026-08-01 07:29:00 +09:00
Seungjun Lee 100fe99f94 add even-better-toml vscode extension 2026-07-30 09:42:01 +09:00
Seungjun Lee a959fdfead add tmux 2026-07-25 22:50:35 +09:00
Seungjun Lee e5ba30d4d1 format code & add todo 2026-07-25 22:50:05 +09:00
3 changed files with 230 additions and 184 deletions
+1
View File
@@ -2,3 +2,4 @@
Todo: Todo:
☐ Make dependency not hardcoded ☐ Make dependency not hardcoded
☐ Pass depencency detect if package is in list ☐ Pass depencency detect if package is in list
☐ add type in brewfile_tool.py
+114 -102
View File
@@ -1,102 +1,114 @@
name,type,mas_id,install_on_setup,category,description,price name,type,mas_id,install_on_setup,category,description,price
rcmd,cask,,yes,personalization,Keyboard based app switcher,paid affine,cask,,yes,knowledge,Opensource notion alternative,free
ente-auth,cask,,yes,security,Free secure two-factor auth service,free affinity,cask,,yes,creativity,Photoshop alternative by canva,free
android-platform-tools,cask,,no,utilities,ADB tools,free android-platform-tools,cask,,no,utilities,ADB tools,free
sozercan/repo/kaset,cask,,yes,media,MacOS YTM client,free android-studio,cask,,no,development,Tools for building Android applications,free
latest,cask,,yes,utilities,Check all app update,free appcleaner,cask,,yes,utilities,Remove app without residue,free
localsend,cask,,no,network,Share file between devices,free arduino-ide,cask,,no,development,Arduino IDE,free
modern-csv,cask,,no,development,CSV viewer for large file,free claude,cask,,yes,ai,Claude desktop client,free
motrix,cask,,no,network,Torrent download client,free claude-code,cask,,no,productivity,llm agent,free
orbstack,cask,,yes,development,Docker replacement,free clop,cask,,yes,personalization,File compressor,free
pika,cask,,yes,utilities,Color picker,free cloudflare-warp,cask,,no,network,Bypass https lock,free
timescribe,cask,,yes,productivity,Time and App usage tracker,free codex,cask,,ne,productivity,llm agent,free
warp,cask,,yes,development,Best Terminal,free discord,cask,,yes,social,Discord desktop client,free
fluent-reader,cask,,yes,productivity,RSS Reader,free drawio,cask,,no,development,Diagram design,free
lunacy,cask,,yes,creativity,Figma alternative,free ente-auth,cask,,yes,security,Free secure two-factor auth service,free
zen,cask,,yes,productivity,Firefox based main browser,free fluent-reader,cask,,yes,productivity,RSS Reader,free
opencloud,cask,,yes,network,Opencloud desktop client,free iina,cask,,yes,media,Media player,free
raycast,cask,,yes,personalization,Superior version of spotlight,free insomnia,cask,,yes,development,API tester,free
claude,cask,,yes,ai,Claude desktop client,free itsycal,cask,,yes,personalization,Menubar calendar app,free
lookaway,cask,,yes,personalization,Eye protection,paid karabiner-elements,cask,,yes,personalization,Keyboard customization tool,free
notion,cask,,yes,knowledge,Notion desktop client,free keka,cask,,yes,utilities,File extraction enhancer,free
visual-studio-code,cask,,yes,development,Code editor,free keyboardcleantool,cask,,yes,utilities,Lock keyboard input during cleaning,free
maccy,cask,,yes,personalization,Clipboard manager,free latest,cask,,yes,utilities,Check all app update,free
iina,cask,,yes,media,Media player,free localsend,cask,,no,network,Share file between devices,free
itsycal,cask,,yes,personalization,Menubar calendar app,free lookaway,cask,,yes,personalization,Eye protection,paid
sidenotes,cask,,yes,knowledge,Sidepanel note app,paid lunacy,cask,,yes,creativity,Figma alternative,free
rectangle,cask,,yes,personalization,Window management tool,free maccy,cask,,yes,personalization,Clipboard manager,free
karabiner-elements,cask,,yes,personalization,Keyboard customization tool,free mactex,cask,,yes,productivity,Latex integration,free
zotero,cask,,no,knowledge,Reference organize tool,free modern-csv,cask,,no,development,CSV viewer for large file,free
affine,cask,,yes,knowledge,Opensource notion alternative,free monitorcontrol,cask,,yes,personalization,Control external monitor brightness,free
affinity,cask,,yes,creativity,Photoshop alternative by canva,free motrix,cask,,no,network,Torrent download client,free
discord,cask,,yes,social,Discord desktop client,free notion,cask,,yes,knowledge,Notion desktop client,free
shifty,cask,,yes,personalization,Night shift adjust tool,free obsidian,cask,,yes,knowledge,Knowledge management tool,free
keka,cask,,yes,utilities,File extraction enhancer,free opencloud,cask,,yes,network,Opencloud desktop client,free
keyboardcleantool,cask,,yes,utilities,Lock keyboard input during cleaning,free openmtp,cask,,yes,utilities,Android device connector,free
appcleaner,cask,,yes,utilities,Remove app without residue,free orbstack,cask,,yes,development,Docker replacement,free
monitorcontrol,cask,,yes,personalization,Control external monitor brightness,free pika,cask,,yes,utilities,Color picker,free
tunnelbear,cask,,yes,network,VPN,free quarto,cask,,no,utilities,File converter,free
arduino-ide,cask,,no,development,Arduino IDE,free raycast,cask,,yes,personalization,Superior version of spotlight,free
clop,cask,,yes,personalization,File compressor,free rcmd,cask,,yes,personalization,Keyboard based app switcher,paid
insomnia,cask,,yes,development,API tester,free rectangle,cask,,yes,personalization,Window management tool,free
obsidian,cask,,yes,knowledge,Knowledge management tool,free responsively,cask,,no,development,Browser for responsible website development,free
openmtp,cask,,yes,utilities,Android device connector,free shifty,cask,,yes,personalization,Night shift adjust tool,free
responsively,cask,,no,development,Browser for responsible website development,free sidenotes,cask,,yes,knowledge,Sidepanel note app,paid
telegram,cask,,yes,social,Telegram desktop client,free sozercan/repo/kaset,cask,,yes,media,MacOS YTM client,free
wireshark-app,cask,,no,network,Network packets capturer,free telegram,cask,,yes,social,Telegram desktop client,free
git,formula,,yes,development,File version manager,free thaw,cask,,yes,personalization,Menubar hidder,free
mole,formula,,yes,utilities,System optimizer,free timescribe,cask,,yes,productivity,Time and App usage tracker,free
fastfetch,formula,,yes,utilities,Neofetch alternative,free tunnelbear,cask,,yes,network,VPN,free
mas,formula,,yes,utilities,CLI appstore,free visual-studio-code,cask,,yes,development,Code editor,free
tree,formula,,yes,utilities,File structure tree,free warp,cask,,yes,development,Best Terminal,free
scrcpy,formula,,no,utilities,Android screen mirroring,free wireshark-app,cask,,no,network,Network packets capturer,free
thaw,cask,,yes,personalization,Menubar hidder,free zen,cask,,yes,productivity,Firefox based main browser,free
nmap,formula,,no,network,Network scanner,free zotero,cask,,no,knowledge,Reference organize tool,free
davinci resolve ,manual,,no,creativity,Video editor,free caddy,formula,,no,network,Reverse proxy,free
tageditor,mas,984278082,no,utilities,Audio file metadata editor,free fastfetch,formula,,yes,utilities,Neofetch alternative,free
Allkdic,mas,1033453958,yes,productivity,Menubar dictionary,free git,formula,,yes,development,File version manager,free
Bitwarden,mas,1352778147,yes,security,Password manager,free mas,formula,,yes,utilities,CLI appstore,free
Hancom Office HWP Viewer,mas,416746898,yes,productivity,Hancom Office HWP Viewer,free mise,formula,,yes,development,Package version manager,free
KakaoTalk,mas,869223134,yes,social,KakaoTalk,free mole,formula,,yes,utilities,System optimizer,free
Linearity Curve,mas,1219074514,no,creativity,Vector based design tool,free nmap,formula,,no,network,Network scanner,free
Poolsuite FM,mas,1514817810,no,media,Internet music radio,free scrcpy,formula,,no,utilities,Android screen mirroring,free
Print to PDF,mas,1639234272,yes,utilities,Save pdf to file,free tmux,formula,,yes,development,Terminal multiplexer,free
RunCat Neo,mas,6757801838,yes,personalization,Menubar system usage visualizer,free tree,formula,,yes,utilities,File structure tree,free
Texty,mas,1538996043,yes,social,Third-party google chat desktop client,free typst,formula,,no,utilities,Markup writing system,free
Windows App,mas,1295203466,yes,productivity,Windows RDP client,free uv,formula,,yes,development,Python virtual environment,free
WireGuard,mas,1451685025,yes,network,Wireguard client,free wget,formula,,yes,utilities,File downloader,free
Xcode,mas,497799835,no,development,Xcode,free davinci resolve ,manual,,no,creativity,Video editor,free
anthropic.claude-code,vscode,,yes,tool,Claude integration,free droppy,manual,,no,personalization,Notch customization,paid
bierner.markdown-mermaid,vscode,,yes,integration,Support mermaid,free Microsoft excel,manual,,no,productivity,Microsoft excel,paid
esbenp.prettier-vscode,vscode,,yes,format,Formatter,free Microsoft powerpoint,manual,,no,productivity,Microsoft powerpoint,paid
fabiospampinato.vscode-todo-plus,vscode,,yes,tool,Todo management,free Microsoft word,manual,,no,productivity,Microsoft word,paid
formulahendry.code-runner,vscode,,yes,tool,Code runner with shortcuts support,free Allkdic,mas,1033453958,yes,productivity,Menubar dictionary,free
inferrinizzard.prettier-sql-vscode,vscode,,yes,format,SQL formatter,free Bitwarden,mas,1352778147,yes,security,Password manager,free
james-yu.latex-workshop,vscode,,yes,integration,Latex integration,free Hancom Office HWP Viewer,mas,416746898,yes,productivity,Hancom Office HWP Viewer,free
marp-team.marp-vscode,vscode,,no,integration,Support marp(MD based presentation),free KakaoTalk,mas,869223134,yes,social,KakaoTalk,free
matt-meyers.vscode-dbml,vscode,,yes,integration,Support DBML,free Linearity Curve,mas,1219074514,no,creativity,Vector based design tool,free
mechatroner.rainbow-csv,vscode,,yes,format,CSV highlighter,free Poolsuite FM,mas,1514817810,no,media,Internet music radio,free
ms-azuretools.vscode-containers,vscode,,yes,tool,Container tool,free Print to PDF,mas,1639234272,yes,utilities,Save pdf to file,free
ms-python.python,vscode,,yes,language,Python integration,free RunCat Neo,mas,6757801838,yes,personalization,Menubar system usage visualizer,free
ms-python.debugpy,vscode,,yes,language,Dependency of ms-python.python,free tageditor,mas,984278082,no,utilities,Audio file metadata editor,free
ms-python.vscode-pylance,vscode,,yes,language,Dependency of ms-python.python,free Texty,mas,1538996043,no,social,Third-party google chat desktop client,free
ms-python.vscode-python-envs,vscode,,yes,language,Dependency of ms-python.python,free Windows App,mas,1295203466,yes,productivity,Windows RDP client,free
ms-vscode-remote.remote-ssh,vscode,,yes,tool,SSH conntection,free WireGuard,mas,1451685025,yes,network,Wireguard client,free
ms-vscode-remote.remote-ssh-edit,vscode,,yes,tool,Dependency of ms-vscode-remote.remote-ssh,free Xcode,mas,497799835,no,development,Xcode,free
ms-vscode.remote-explorer,vscode,,yes,tool,Dependency of ms-vscode-remote.remote-ssh,free anthropic.claude-code,vscode,,yes,tool,Claude integration,free
pkief.material-icon-theme,vscode,,yes,theme,Best icon,free bierner.markdown-mermaid,vscode,,yes,integration,Support mermaid,free
pkief.material-product-icons,vscode,,yes,theme,Best product icon,free charliermarsh.ruff,vscode,,yes,format,Python formatter,free
pomdtr.excalidraw-editor,vscode,,no,integration,Excalidraw integration,free esbenp.prettier-vscode,vscode,,yes,format,Formatter,free
rickaym.manim-sideview,vscode,,no,integration,Manim integration,free fabiospampinato.vscode-todo-plus,vscode,,yes,tool,Todo management,free
ritwickdey.liveserver,vscode,,no,tool,Web frontend live server,free formulahendry.code-runner,vscode,,yes,tool,Code runner with shortcuts support,free
svelte.svelte-vscode,vscode,,yes,language,Sevelte integration,free inferrinizzard.prettier-sql-vscode,vscode,,yes,format,SQL formatter,free
wayou.vscode-todo-highlight,vscode,,yes,tool,Todo file highlighter,free james-yu.latex-workshop,vscode,,yes,integration,Latex integration,free
yzhang.markdown-all-in-one,vscode,,yes,language,Markdown highlighter & formatter,free marp-team.marp-vscode,vscode,,no,integration,Support marp(MD based presentation),free
zhuangtongfa.material-theme,vscode,,yes,theme,Best darkmode theme (One Dark Pro),free matt-meyers.vscode-dbml,vscode,,yes,integration,Support DBML,free
charliermarsh.ruff,vscode,,yes,format,Python formatter,free mechatroner.rainbow-csv,vscode,,yes,format,CSV highlighter,free
droppy,manual,,no,personalization,Notch customization,paid ms-azuretools.vscode-containers,vscode,,yes,tool,Container tool,free
Microsoft word,manual,,no,productivity,Microsoft word,paid ms-python.debugpy,vscode,,yes,language,Dependency of ms-python.python,free
Microsoft excel,manual,,no,productivity,Microsoft excel,paid ms-python.python,vscode,,yes,language,Python integration,free
Microsoft powerpoint,manual,,no,productivity,Microsoft powerpoint,paid ms-python.vscode-pylance,vscode,,yes,language,Dependency of ms-python.python,free
wget,formula,,yes,utilities,File downloader,free ms-python.vscode-python-envs,vscode,,yes,language,Dependency of ms-python.python,free
mise,formula,,yes,development,Package version manager,free ms-vscode-remote.remote-ssh,vscode,,yes,tool,SSH conntection,free
ms-vscode-remote.remote-ssh-edit,vscode,,yes,tool,Dependency of ms-vscode-remote.remote-ssh,free
ms-vscode.remote-explorer,vscode,,yes,tool,Dependency of ms-vscode-remote.remote-ssh,free
pkief.material-icon-theme,vscode,,yes,theme,Best icon,free
pkief.material-product-icons,vscode,,yes,theme,Best product icon,free
pomdtr.excalidraw-editor,vscode,,yes,integration,Excalidraw integration,free
rickaym.manim-sideview,vscode,,no,integration,Manim integration,free
ritwickdey.liveserver,vscode,,no,tool,Web frontend live server,free
svelte.svelte-vscode,vscode,,yes,language,Sevelte integration,free
tamasfe.even-better-toml,vscode,,yes,language,TOML integration,free
wayou.vscode-todo-highlight,vscode,,yes,tool,Todo file highlighter,free
yzhang.markdown-all-in-one,vscode,,yes,language,Markdown highlighter & formatter,free
zhuangtongfa.material-theme,vscode,,yes,theme,Best darkmode theme (One Dark Pro),free
1 name type mas_id install_on_setup category description price
2 rcmd affine cask yes personalization knowledge Keyboard based app switcher Opensource notion alternative paid free
3 ente-auth affinity cask yes security creativity Free secure two-factor auth service Photoshop alternative by canva free
4 android-platform-tools cask no utilities ADB tools free
5 sozercan/repo/kaset android-studio cask yes no media development MacOS YTM client Tools for building Android applications free
6 latest appcleaner cask yes utilities Check all app update Remove app without residue free
7 localsend arduino-ide cask no network development Share file between devices Arduino IDE free
8 modern-csv claude cask no yes development ai CSV viewer for large file Claude desktop client free
9 motrix claude-code cask no network productivity Torrent download client llm agent free
10 orbstack clop cask yes development personalization Docker replacement File compressor free
11 pika cloudflare-warp cask yes no utilities network Color picker Bypass https lock free
12 timescribe codex cask yes ne productivity Time and App usage tracker llm agent free
13 warp discord cask yes development social Best Terminal Discord desktop client free
14 fluent-reader drawio cask yes no productivity development RSS Reader Diagram design free
15 lunacy ente-auth cask yes creativity security Figma alternative Free secure two-factor auth service free
16 zen fluent-reader cask yes productivity Firefox based main browser RSS Reader free
17 opencloud iina cask yes network media Opencloud desktop client Media player free
18 raycast insomnia cask yes personalization development Superior version of spotlight API tester free
19 claude itsycal cask yes ai personalization Claude desktop client Menubar calendar app free
20 lookaway karabiner-elements cask yes personalization Eye protection Keyboard customization tool paid free
21 notion keka cask yes knowledge utilities Notion desktop client File extraction enhancer free
22 visual-studio-code keyboardcleantool cask yes development utilities Code editor Lock keyboard input during cleaning free
23 maccy latest cask yes personalization utilities Clipboard manager Check all app update free
24 iina localsend cask yes no media network Media player Share file between devices free
25 itsycal lookaway cask yes personalization Menubar calendar app Eye protection free paid
26 sidenotes lunacy cask yes knowledge creativity Sidepanel note app Figma alternative paid free
27 rectangle maccy cask yes personalization Window management tool Clipboard manager free
28 karabiner-elements mactex cask yes personalization productivity Keyboard customization tool Latex integration free
29 zotero modern-csv cask no knowledge development Reference organize tool CSV viewer for large file free
30 affine monitorcontrol cask yes knowledge personalization Opensource notion alternative Control external monitor brightness free
31 affinity motrix cask yes no creativity network Photoshop alternative by canva Torrent download client free
32 discord notion cask yes social knowledge Discord desktop client Notion desktop client free
33 shifty obsidian cask yes personalization knowledge Night shift adjust tool Knowledge management tool free
34 keka opencloud cask yes utilities network File extraction enhancer Opencloud desktop client free
35 keyboardcleantool openmtp cask yes utilities Lock keyboard input during cleaning Android device connector free
36 appcleaner orbstack cask yes utilities development Remove app without residue Docker replacement free
37 monitorcontrol pika cask yes personalization utilities Control external monitor brightness Color picker free
38 tunnelbear quarto cask yes no network utilities VPN File converter free
39 arduino-ide raycast cask no yes development personalization Arduino IDE Superior version of spotlight free
40 clop rcmd cask yes personalization File compressor Keyboard based app switcher free paid
41 insomnia rectangle cask yes development personalization API tester Window management tool free
42 obsidian responsively cask yes no knowledge development Knowledge management tool Browser for responsible website development free
43 openmtp shifty cask yes utilities personalization Android device connector Night shift adjust tool free
44 responsively sidenotes cask no yes development knowledge Browser for responsible website development Sidepanel note app free paid
45 telegram sozercan/repo/kaset cask yes social media Telegram desktop client MacOS YTM client free
46 wireshark-app telegram cask no yes network social Network packets capturer Telegram desktop client free
47 git thaw formula cask yes development personalization File version manager Menubar hidder free
48 mole timescribe formula cask yes utilities productivity System optimizer Time and App usage tracker free
49 fastfetch tunnelbear formula cask yes utilities network Neofetch alternative VPN free
50 mas visual-studio-code formula cask yes utilities development CLI appstore Code editor free
51 tree warp formula cask yes utilities development File structure tree Best Terminal free
52 scrcpy wireshark-app formula cask no utilities network Android screen mirroring Network packets capturer free
53 thaw zen cask yes personalization productivity Menubar hidder Firefox based main browser free
54 nmap zotero formula cask no network knowledge Network scanner Reference organize tool free
55 davinci resolve caddy manual formula no creativity network Video editor Reverse proxy free
56 tageditor fastfetch mas formula 984278082 no yes utilities Audio file metadata editor Neofetch alternative free
57 Allkdic git mas formula 1033453958 yes productivity development Menubar dictionary File version manager free
58 Bitwarden mas mas formula 1352778147 yes security utilities Password manager CLI appstore free
59 Hancom Office HWP Viewer mise mas formula 416746898 yes productivity development Hancom Office HWP Viewer Package version manager free
60 KakaoTalk mole mas formula 869223134 yes social utilities KakaoTalk System optimizer free
61 Linearity Curve nmap mas formula 1219074514 no creativity network Vector based design tool Network scanner free
62 Poolsuite FM scrcpy mas formula 1514817810 no media utilities Internet music radio Android screen mirroring free
63 Print to PDF tmux mas formula 1639234272 yes utilities development Save pdf to file Terminal multiplexer free
64 RunCat Neo tree mas formula 6757801838 yes personalization utilities Menubar system usage visualizer File structure tree free
65 Texty typst mas formula 1538996043 yes no social utilities Third-party google chat desktop client Markup writing system free
66 Windows App uv mas formula 1295203466 yes productivity development Windows RDP client Python virtual environment free
67 WireGuard wget mas formula 1451685025 yes network utilities Wireguard client File downloader free
68 Xcode davinci resolve mas manual 497799835 no development creativity Xcode Video editor free
69 anthropic.claude-code droppy vscode manual yes no tool personalization Claude integration Notch customization free paid
70 bierner.markdown-mermaid Microsoft excel vscode manual yes no integration productivity Support mermaid Microsoft excel free paid
71 esbenp.prettier-vscode Microsoft powerpoint vscode manual yes no format productivity Formatter Microsoft powerpoint free paid
72 fabiospampinato.vscode-todo-plus Microsoft word vscode manual yes no tool productivity Todo management Microsoft word free paid
73 formulahendry.code-runner Allkdic vscode mas 1033453958 yes tool productivity Code runner with shortcuts support Menubar dictionary free
74 inferrinizzard.prettier-sql-vscode Bitwarden vscode mas 1352778147 yes format security SQL formatter Password manager free
75 james-yu.latex-workshop Hancom Office HWP Viewer vscode mas 416746898 yes integration productivity Latex integration Hancom Office HWP Viewer free
76 marp-team.marp-vscode KakaoTalk vscode mas 869223134 no yes integration social Support marp(MD based presentation) KakaoTalk free
77 matt-meyers.vscode-dbml Linearity Curve vscode mas 1219074514 yes no integration creativity Support DBML Vector based design tool free
78 mechatroner.rainbow-csv Poolsuite FM vscode mas 1514817810 yes no format media CSV highlighter Internet music radio free
79 ms-azuretools.vscode-containers Print to PDF vscode mas 1639234272 yes tool utilities Container tool Save pdf to file free
80 ms-python.python RunCat Neo vscode mas 6757801838 yes language personalization Python integration Menubar system usage visualizer free
81 ms-python.debugpy tageditor vscode mas 984278082 yes no language utilities Dependency of ms-python.python Audio file metadata editor free
82 ms-python.vscode-pylance Texty vscode mas 1538996043 yes no language social Dependency of ms-python.python Third-party google chat desktop client free
83 ms-python.vscode-python-envs Windows App vscode mas 1295203466 yes language productivity Dependency of ms-python.python Windows RDP client free
84 ms-vscode-remote.remote-ssh WireGuard vscode mas 1451685025 yes tool network SSH conntection Wireguard client free
85 ms-vscode-remote.remote-ssh-edit Xcode vscode mas 497799835 yes no tool development Dependency of ms-vscode-remote.remote-ssh Xcode free
86 ms-vscode.remote-explorer anthropic.claude-code vscode yes tool Dependency of ms-vscode-remote.remote-ssh Claude integration free
87 pkief.material-icon-theme bierner.markdown-mermaid vscode yes theme integration Best icon Support mermaid free
88 pkief.material-product-icons charliermarsh.ruff vscode yes theme format Best product icon Python formatter free
89 pomdtr.excalidraw-editor esbenp.prettier-vscode vscode no yes integration format Excalidraw integration Formatter free
90 rickaym.manim-sideview fabiospampinato.vscode-todo-plus vscode no yes integration tool Manim integration Todo management free
91 ritwickdey.liveserver formulahendry.code-runner vscode no yes tool Web frontend live server Code runner with shortcuts support free
92 svelte.svelte-vscode inferrinizzard.prettier-sql-vscode vscode yes language format Sevelte integration SQL formatter free
93 wayou.vscode-todo-highlight james-yu.latex-workshop vscode yes tool integration Todo file highlighter Latex integration free
94 yzhang.markdown-all-in-one marp-team.marp-vscode vscode yes no language integration Markdown highlighter & formatter Support marp(MD based presentation) free
95 zhuangtongfa.material-theme matt-meyers.vscode-dbml vscode yes theme integration Best darkmode theme (One Dark Pro) Support DBML free
96 charliermarsh.ruff mechatroner.rainbow-csv vscode yes format Python formatter CSV highlighter free
97 droppy ms-azuretools.vscode-containers manual vscode no yes personalization tool Notch customization Container tool paid free
98 Microsoft word ms-python.debugpy manual vscode no yes productivity language Microsoft word Dependency of ms-python.python paid free
99 Microsoft excel ms-python.python manual vscode no yes productivity language Microsoft excel Python integration paid free
100 Microsoft powerpoint ms-python.vscode-pylance manual vscode no yes productivity language Microsoft powerpoint Dependency of ms-python.python paid free
101 wget ms-python.vscode-python-envs formula vscode yes utilities language File downloader Dependency of ms-python.python free
102 mise ms-vscode-remote.remote-ssh formula vscode yes development tool Package version manager SSH conntection free
103 ms-vscode-remote.remote-ssh-edit vscode yes tool Dependency of ms-vscode-remote.remote-ssh free
104 ms-vscode.remote-explorer vscode yes tool Dependency of ms-vscode-remote.remote-ssh free
105 pkief.material-icon-theme vscode yes theme Best icon free
106 pkief.material-product-icons vscode yes theme Best product icon free
107 pomdtr.excalidraw-editor vscode yes integration Excalidraw integration free
108 rickaym.manim-sideview vscode no integration Manim integration free
109 ritwickdey.liveserver vscode no tool Web frontend live server free
110 svelte.svelte-vscode vscode yes language Sevelte integration free
111 tamasfe.even-better-toml vscode yes language TOML integration free
112 wayou.vscode-todo-highlight vscode yes tool Todo file highlighter free
113 yzhang.markdown-all-in-one vscode yes language Markdown highlighter & formatter free
114 zhuangtongfa.material-theme vscode yes theme Best darkmode theme (One Dark Pro) free
+115 -82
View File
@@ -1,25 +1,47 @@
import csv import csv
import subprocess
import shutil
import datetime import datetime
import sys
import re import re
import shutil
import subprocess
import sys
# ====== Config ====== # ====== Config ======
CSV_FILE = './apps.csv' CSV_FILE = "./apps.csv"
BREWFILE = './Brewfile' BREWFILE = "./Brewfile"
SUPPORT_CONFIG = { SUPPORT_CONFIG = {
'formula': {'token': 'brew', 'structure': lambda data: f'brew "{data["name"]}"', 'dependency': [] }, "formula": {
'cask' : {'token': 'cask', 'structure': lambda data: f'cask "{data["name"]}"', 'dependency': [] }, "token": "brew",
'mas': {'token': 'mas', 'structure': lambda data: f'mas "{data["name"]}", id: {data["mas_id"]}', 'dependency': [{'name': 'mas', 'script': ['brew', 'install', 'mas']}] }, "structure": lambda data: f'brew "{data["name"]}"',
'vscode': {'token': 'vscode', 'structure': lambda data: f'vscode "{data["name"]}"', 'dependency': [{'name': 'code', 'script': ['brew', 'install', '--cask', 'visual-studio-code']}] } "dependency": [],
},
"cask": {
"token": "cask",
"structure": lambda data: f'cask "{data["name"]}"',
"dependency": [],
},
"mas": {
"token": "mas",
"structure": lambda data: f'mas "{data["name"]}", id: {data["mas_id"]}',
"dependency": [{"name": "mas", "script": ["brew", "install", "mas"]}],
},
"vscode": {
"token": "vscode",
"structure": lambda data: f'vscode "{data["name"]}"',
"dependency": [
{
"name": "code",
"script": ["brew", "install", "--cask", "visual-studio-code"],
}
],
},
} }
MANUAL_TYPE = 'manual' MANUAL_TYPE = "manual"
support_types = list(SUPPORT_CONFIG.keys()) support_types = list(SUPPORT_CONFIG.keys())
def clear(): def clear():
subprocess.run(['clear']) subprocess.run(["clear"])
def check_package(name): def check_package(name):
@@ -28,124 +50,131 @@ def check_package(name):
return False return False
return True return True
def check_brew(): def check_brew():
if not check_package('brew'): if not check_package("brew"):
print('❌ Unable to find brew') print("❌ Unable to find brew")
sys.exit() sys.exit()
def get_csv(): def get_csv():
with open(CSV_FILE, 'r', encoding='utf-8-sig') as f: with open(CSV_FILE, "r", encoding="utf-8-sig") as f:
return list(csv.DictReader(f)) return list(csv.DictReader(f))
def extract_tap(name): def extract_tap(name):
parts = name.split('/') parts = name.split("/")
if len(parts) == 3: if len(parts) == 3:
return f'{parts[0]}/{parts[1]}' return f"{parts[0]}/{parts[1]}"
return None return None
def create_brewfile(): def create_brewfile():
try: try:
with open(BREWFILE, 'r') as old: with open(BREWFILE, "r") as old:
stamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') stamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
with open(f'./Brewfile_{stamp}.backup', 'w') as new: with open(f"./Brewfile_{stamp}.backup", "w") as new:
new.writelines(old.readlines()) new.writelines(old.readlines())
print(f'📢 Backup old Brewfile (Brewfile_{stamp}.backup)') print(f"📢 Backup old Brewfile (Brewfile_{stamp}.backup)")
except FileNotFoundError: except FileNotFoundError:
pass pass
raw_list = get_csv() raw_list = get_csv()
temp = {pkg_type:[] for pkg_type in support_types} temp = {pkg_type: [] for pkg_type in support_types}
taps = set() taps = set()
for row in raw_list: for row in raw_list:
pkg_type = row['type'] pkg_type = row["type"]
if pkg_type in temp.keys(): if pkg_type in temp.keys():
if row['install_on_setup'] == 'yes': if row["install_on_setup"] == "yes":
tap = extract_tap(row['name']) tap = extract_tap(row["name"])
if tap: if tap:
taps.add(tap) taps.add(tap)
content = f'# {row["description"]}\n{SUPPORT_CONFIG[pkg_type]["structure"](row)}\n' content = f"# {row['description']}\n{SUPPORT_CONFIG[pkg_type]['structure'](row)}\n"
temp[pkg_type].append(content) temp[pkg_type].append(content)
elif pkg_type != MANUAL_TYPE: elif pkg_type != MANUAL_TYPE:
print(f'Error: {row["name"]} {pkg_type}') print(f"Error: {row['name']} {pkg_type}")
sys.exit() sys.exit()
with open(BREWFILE, 'w') as f: with open(BREWFILE, "w") as f:
if taps: if taps:
f.write(f'# {"=" * 15} tap {"=" * 15}\n') f.write(f"# {'=' * 15} tap {'=' * 15}\n")
for tap in sorted(taps): for tap in sorted(taps):
f.write(f'tap "{tap}"\n') f.write(f'tap "{tap}"\n')
f.write('\n') f.write("\n")
for pkg_type in support_types: for pkg_type in support_types:
f.write(f'# {"=" * 15} {pkg_type} {"=" * 15}\n') f.write(f"# {'=' * 15} {pkg_type} {'=' * 15}\n")
f.writelines(temp[pkg_type]) f.writelines(temp[pkg_type])
f.write('\n') f.write("\n")
print("✅ Successfully created Brewfile")
print('✅ Successfully created Brewfile')
def handle_untrusted_taps(): def handle_untrusted_taps():
taps = set() taps = set()
try: try:
with open(BREWFILE, 'r') as f: with open(BREWFILE, "r") as f:
for line in f: for line in f:
m = re.fullmatch(r'tap "([^/]+/[^/]+)"', line.strip()) m = re.fullmatch(r'tap "([^/]+/[^/]+)"', line.strip())
if m: if m:
taps.add(m.group(1)) taps.add(m.group(1))
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find Brewfile (create it first)') print("❌ Unable to find Brewfile (create it first)")
return False return False
if taps: if taps:
print('⚠️ These third-party taps are needed') print("⚠️ These third-party taps are needed")
for tap in sorted(taps): for tap in sorted(taps):
print(f' - {tap}') print(f" - {tap}")
print(' These taps is not official and my execute certain script.\n') print(" These taps is not official and my execute certain script.\n")
if input('Trust these taps? (y/N): ').strip().lower() !='y': if input("Trust these taps? (y/N): ").strip().lower() != "y":
print('📢 Operation is canceled as these taps are not allowed.') print("📢 Operation is canceled as these taps are not allowed.")
return False return False
for tap in sorted(taps): for tap in sorted(taps):
try: try:
subprocess.run(['brew', 'tap', tap], check=True) subprocess.run(["brew", "tap", tap], check=True)
subprocess.run(['brew', 'trust', tap], check=True) subprocess.run(["brew", "trust", tap], check=True)
print(f'✅ Successfully installed tap "{tap}"') print(f'✅ Successfully installed tap "{tap}"')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f'❌ Failed to install tap "{tap}" ({e.returncode})') print(f'❌ Failed to install tap "{tap}" ({e.returncode})')
return False return False
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find brew') print("❌ Unable to find brew")
return False return False
return True return True
def get_brewfile_types(): def get_brewfile_types():
token_to_type = {SUPPORT_CONFIG[t]['token']: t for t in support_types} token_to_type = {SUPPORT_CONFIG[t]["token"]: t for t in support_types}
types = set() types = set()
try: try:
with open(BREWFILE, 'r') as f: with open(BREWFILE, "r") as f:
for line in f: for line in f:
token = line.strip().split(' ', 1)[0] token = line.strip().split(" ", 1)[0]
if token in token_to_type: if token in token_to_type:
types.add(token_to_type[token]) types.add(token_to_type[token])
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find Brewfile (create it first)') print("❌ Unable to find Brewfile (create it first)")
return types return types
def install_dependencies(): def install_dependencies():
dependencies = [] dependencies = []
seen = set() seen = set()
for pkg_type in get_brewfile_types(): for pkg_type in get_brewfile_types():
for dep in SUPPORT_CONFIG[pkg_type]['dependency']: for dep in SUPPORT_CONFIG[pkg_type]["dependency"]:
if dep['name'] not in seen: if dep["name"] not in seen:
seen.add(dep['name']) seen.add(dep["name"])
dependencies.append(dep) dependencies.append(dep)
for dep in dependencies: for dep in dependencies:
if check_package(dep['name']): if check_package(dep["name"]):
print(f'✅ Dependency "{dep["name"]}" already installed') print(f'✅ Dependency "{dep["name"]}" already installed')
continue continue
print(f'📢 Installing missing dependency "{dep["name"]}"...') print(f'📢 Installing missing dependency "{dep["name"]}"...')
try: try:
subprocess.run(dep['script'], check=True) subprocess.run(dep["script"], check=True)
print(f'✅ Successfully installed dependency "{dep["name"]}"') print(f'✅ Successfully installed dependency "{dep["name"]}"')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f'❌ Failed to install dependency "{dep["name"]}" ({e.returncode})') print(f'❌ Failed to install dependency "{dep["name"]}" ({e.returncode})')
@@ -155,79 +184,82 @@ def install_dependencies():
return False return False
return True return True
def bundle_install(): def bundle_install():
if not handle_untrusted_taps(): if not handle_untrusted_taps():
return return
if not install_dependencies(): if not install_dependencies():
print('❌ Aborting install due to missing dependency') print("❌ Aborting install due to missing dependency")
return return
try: try:
subprocess.run(['brew', 'bundle', 'install', f'--file={BREWFILE}'], check=True) subprocess.run(["brew", "bundle", "install", f"--file={BREWFILE}"], check=True)
print('✅ Successfully install all packages') print("✅ Successfully install all packages")
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f'❌ Failed to install some packages ({e.returncode})') print(f"❌ Failed to install some packages ({e.returncode})")
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find brew') print("❌ Unable to find brew")
def bundle_check(): def bundle_check():
try: try:
print('📢 Check script running') print("📢 Check script running")
result = subprocess.run( result = subprocess.run(
['brew', 'bundle', 'check', f'--file={BREWFILE}', '--verbose'] ["brew", "bundle", "check", f"--file={BREWFILE}", "--verbose"]
) )
if result.returncode == 0: if result.returncode == 0:
print('✅ All packages are installed') print("✅ All packages are installed")
return True return True
else: else:
print('⚠️ There are uninstalled package(s)') print("⚠️ There are uninstalled package(s)")
return False return False
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find brew') print("❌ Unable to find brew")
return False return False
def bundle_cleanup(): def bundle_cleanup():
try: try:
subprocess.run(['brew', 'bundle', 'cleanup', f'--file={BREWFILE}']) subprocess.run(["brew", "bundle", "cleanup", f"--file={BREWFILE}"])
if input('⚠️ Are sure to remove? (y/N): ').strip().lower() == 'y': if input("⚠️ Are sure to remove? (y/N): ").strip().lower() == "y":
subprocess.run(['brew', 'bundle', 'cleanup', f'--file={BREWFILE}', '--force'], check=True) subprocess.run(
print('✅ Successfully cleanup') ["brew", "bundle", "cleanup", f"--file={BREWFILE}", "--force"],
check=True,
)
print("✅ Successfully cleanup")
else: else:
print('📢 Canceled') print("📢 Canceled")
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f'❌ Failed to cleanup ({e.returncode})') print(f"❌ Failed to cleanup ({e.returncode})")
except FileNotFoundError: except FileNotFoundError:
print('❌ Unable to find brew') print("❌ Unable to find brew")
def select_option(): def select_option():
options = [ options = [
{'text': 'Create Brewfile', 'func': create_brewfile}, {"text": "Create Brewfile", "func": create_brewfile},
{'text': 'Install packages', 'func': bundle_install}, {"text": "Install packages", "func": bundle_install},
{'text': 'Check packages', 'func': bundle_check}, {"text": "Check packages", "func": bundle_check},
{'text': 'Cleanup packages', 'func': bundle_cleanup}, {"text": "Cleanup packages", "func": bundle_cleanup},
{'text': 'Exit', 'func': sys.exit} {"text": "Exit", "func": sys.exit},
] ]
while True: while True:
print('Select option') print("Select option")
for idx, row in enumerate(options, 1): for idx, row in enumerate(options, 1):
print(f' {idx}) {row["text"]}') print(f" {idx}) {row['text']}")
raw = input('option: ').strip() raw = input("option: ").strip()
try: try:
clear() clear()
idx = int(raw) - 1 idx = int(raw) - 1
if 0 <= idx < len(options): if 0 <= idx < len(options):
options[idx]['func']() options[idx]["func"]()
print() print()
return return
else: else:
print('⚠️ Write valid number\n') print("⚠️ Write valid number\n")
except ValueError: except ValueError:
print('⚠️ Write valid number\n') print("⚠️ Write valid number\n")
def main(): def main():
@@ -235,5 +267,6 @@ def main():
while True: while True:
select_option() select_option()
if __name__ == '__main__':
if __name__ == "__main__":
main() main()