From 8a1bd822f84e85e31b7abd2c3b744d1489bb0f90 Mon Sep 17 00:00:00 2001 From: Charles Gould Date: Thu, 9 Apr 2020 02:20:27 -0500 Subject: [PATCH] brew: make it easier to install optional tools --- README.md | 2 +- brew/install-extra.fish | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 brew/install-extra.fish diff --git a/README.md b/README.md index 6dec855..d88741d 100644 --- a/README.md +++ b/README.md @@ -7,5 +7,5 @@ My personal configuration files. 1. Clone this repository into `~/dotfiles` 2. Install [Homebrew](https://brew.sh/): `./install-brew.sh` 3. Install tools: `brew bundle install --file=brew/Brewfile` -4. (Optional) Install more tools: `brew bundle install --file=brew/opt/Brewfile` +4. Install optional tools: `brew/install-extra.sh [--casks]` 5. Install everything else, including symlinks: `./install.sh` diff --git a/brew/install-extra.fish b/brew/install-extra.fish new file mode 100755 index 0000000..27eee1f --- /dev/null +++ b/brew/install-extra.fish @@ -0,0 +1,44 @@ +#!/usr/bin/env fish + +# TODO: how to handle other taps (especially an issue for casks) + +function _install_extra_brews --argument-names favorite_brews + set --local brew_pkgs_installed (string collect (brew list)) + set --local brew_pkgs_options + for brew_pkg in (cat $favorite_brews) + if not contains -- $brew_pkg $brew_pkgs_installed + set -a brew_pkgs_options $brew_pkg + end + end + set --local brew_pkgs_inst (string split ' ' -- $brew_pkgs_options | eval "fzf --prompt='[brew:install] '") + if test (count $brew_pkgs_inst) -gt 0 + echo "Installing: $brew_pkgs_inst" + brew install $brew_pkgs_inst + end +end + +function _install_extra_casks --argument-names favorite_casks + set --local brew_casks_installed (string collect (brew cask list)) + set --local brew_casks_options + for brew_cask in (cat $favorite_casks) + if not contains -- $brew_cask $brew_casks_installed + set -a brew_casks_options $brew_cask + end + end + set --local brew_casks_inst (string split ' ' -- $brew_casks_options | eval "fzf --prompt='[brew:install] '") + if test (count $brew_casks_inst) -gt 0 + echo "Installing: $brew_casks_inst" + brew cask install $brew_casks_inst + end +end + +set --local script_dir (dirname (status -f)) + +if contains -- '--casks' $argv + _install_extra_casks (string join '/' -- $script_dir 'casks.txt') +else + _install_extra_brews (string join '/' -- $script_dir 'brews.txt') +end + +functions --erase _install_extra_brews +functions --erase _install_extra_casks