Merge pull request #6187 from treyharris/refactor-develop_brew_cask
Refactor {develop,production}_brew_cask
This commit is contained in:
commit
6eb45048b0
|
@ -2,6 +2,11 @@
|
|||
#
|
||||
# develop_brew_cask
|
||||
#
|
||||
# Called via symlink as:
|
||||
# production_brew_cask
|
||||
#
|
||||
|
||||
called_as="$(basename $0)"
|
||||
|
||||
###
|
||||
### settings
|
||||
|
@ -61,6 +66,19 @@ not_inside_homebrew () {
|
|||
fi
|
||||
}
|
||||
|
||||
remove_dev_links () {
|
||||
local tap_dir="$1"
|
||||
/bin/rm -- rubylib Casks
|
||||
/bin/mv -- production_rubylib rubylib
|
||||
/bin/mv -- production_Casks Casks
|
||||
cd "$tap_dir"
|
||||
/bin/rm -- lib Casks
|
||||
/bin/mv -- production_lib lib
|
||||
/bin/mv -- production_Casks Casks
|
||||
printf "brew-cask is now in production mode\n"
|
||||
printf "It is safe to run 'brew update' if you are in production mode for all Caskroom repos.\n"
|
||||
}
|
||||
|
||||
create_dev_links () {
|
||||
local tap_dir="$1"
|
||||
local git_root="$2"
|
||||
|
@ -81,7 +99,23 @@ create_dev_links () {
|
|||
### main
|
||||
###
|
||||
|
||||
_develop_brew_cask () {
|
||||
_develop_brew_cask_develop_action () {
|
||||
die "brew-cask is already set up for development"
|
||||
}
|
||||
|
||||
_develop_brew_cask_production_action () {
|
||||
create_dev_links "$tap_dir" "$git_root"
|
||||
}
|
||||
|
||||
_production_brew_cask_develop_action () {
|
||||
remove_dev_links "$tap_dir"
|
||||
}
|
||||
|
||||
_production_brew_cask_production_action () {
|
||||
die "brew-cask is already set up for production"
|
||||
}
|
||||
|
||||
_main () {
|
||||
|
||||
# initialization
|
||||
cd_to_project_root
|
||||
|
@ -97,15 +131,15 @@ _develop_brew_cask () {
|
|||
# action
|
||||
cd_to_version_dir "$cellar_dir" "$version_dir"
|
||||
if [[ -e "production_rubylib" ]]; then
|
||||
die "brew-cask is already set up for development"
|
||||
eval "_${called_as}_develop_action"
|
||||
else
|
||||
create_dev_links "$tap_dir" "$git_root"
|
||||
eval "_${called_as}_production_action"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# process args
|
||||
if [[ $1 =~ ^-+h(elp)?$ ]]; then
|
||||
_develop_brew_cask_usage () {
|
||||
|
||||
printf "develop_brew_cask
|
||||
|
||||
Symlink private repo directories into Homebrew's Cellar, so
|
||||
|
@ -120,10 +154,42 @@ Note: it is not safe to run 'brew update' while development
|
|||
mode is in effect.
|
||||
|
||||
"
|
||||
|
||||
}
|
||||
|
||||
_production_brew_cask_usage () {
|
||||
|
||||
printf "production_brew_cask
|
||||
|
||||
Undo all symlinks created by 'develop_brew_cask' so that the
|
||||
'brew cask' command will use only released code and Casks
|
||||
within Homebrew.
|
||||
|
||||
After running this command it is safe to run 'brew update',
|
||||
unless you are using similar scripts to create symlinks into
|
||||
other Caskroom development repos.
|
||||
|
||||
"
|
||||
|
||||
}
|
||||
|
||||
# ensure we're called by a valid name
|
||||
case "${called_as}" in
|
||||
develop_brew_cask) ;;
|
||||
production_brew_cask) ;;
|
||||
*)
|
||||
die "ERROR: name ${called_as} not recognized"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# process args
|
||||
if [[ $1 =~ ^-+h(elp)?$ ]]; then
|
||||
eval "_${called_as}_usage"
|
||||
exit
|
||||
fi
|
||||
|
||||
# dispatch main
|
||||
_develop_brew_cask "${@}"
|
||||
_main "${@}"
|
||||
|
||||
#
|
||||
|
|
|
@ -1,123 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# production_brew_cask
|
||||
#
|
||||
|
||||
###
|
||||
### settings
|
||||
###
|
||||
|
||||
set -e # exit on any uncaught error
|
||||
set +o histexpand # don't expand history expressions
|
||||
shopt -s nocasematch # case-insensitive regular expressions
|
||||
|
||||
###
|
||||
### configurable global variables
|
||||
###
|
||||
|
||||
tap_subdir="Library/Taps/caskroom/homebrew-cask"
|
||||
|
||||
###
|
||||
### functions
|
||||
###
|
||||
|
||||
warn () {
|
||||
local message="$@"
|
||||
message="${message//\\t/$'\011'}"
|
||||
message="${message//\\n/$'\012'}"
|
||||
message="${message%"${message##*[![:space:]]}"}"
|
||||
printf "%s\n" "$message" 1>&2
|
||||
}
|
||||
|
||||
die () {
|
||||
warn "$@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
cd_to_project_root () {
|
||||
local script_dir="$(/usr/bin/dirname "$0")"
|
||||
cd "$script_dir"
|
||||
local git_root="$(git rev-parse --show-toplevel)"
|
||||
if [[ -z "$git_root" ]]; then
|
||||
die "ERROR: Could not find git project root"
|
||||
fi
|
||||
cd "$git_root"
|
||||
}
|
||||
|
||||
cd_to_version_dir () {
|
||||
local cellar_dir="$1"
|
||||
local version_dir="$2"
|
||||
if [[ -z "$version_dir" ]]; then
|
||||
die "ERROR: Could not find version dir under $cellar_dir/"
|
||||
fi
|
||||
cd "$cellar_dir/$version_dir"
|
||||
}
|
||||
|
||||
not_inside_homebrew () {
|
||||
local tap_dir="$1"
|
||||
local git_root="$2"
|
||||
if [[ "$(/usr/bin/stat -L -f '%i' -- "$tap_dir")" -eq "$(/usr/bin/stat -L -f '%i' -- "$git_root")" ]]; then
|
||||
die "\nERROR: Run this script in your private repo, not inside Homebrew.\n"
|
||||
fi
|
||||
}
|
||||
|
||||
remove_dev_links () {
|
||||
local tap_dir="$1"
|
||||
/bin/rm -- rubylib Casks
|
||||
/bin/mv -- production_rubylib rubylib
|
||||
/bin/mv -- production_Casks Casks
|
||||
cd "$tap_dir"
|
||||
/bin/rm -- lib Casks
|
||||
/bin/mv -- production_lib lib
|
||||
/bin/mv -- production_Casks Casks
|
||||
printf "brew-cask is now in production mode\n"
|
||||
printf "It is safe to run 'brew update' if you are in production mode for all Caskroom repos.\n"
|
||||
}
|
||||
|
||||
###
|
||||
### main
|
||||
###
|
||||
|
||||
_production_brew_cask () {
|
||||
|
||||
# initialization
|
||||
cd_to_project_root
|
||||
local git_root="$(/bin/pwd)"
|
||||
local brew_prefix="$(brew --prefix)"
|
||||
local cellar_dir="$brew_prefix/Cellar/brew-cask"
|
||||
local version_dir="$(/bin/ls -- "$cellar_dir/" | /usr/bin/sort | /usr/bin/tail -1)"
|
||||
local tap_dir="$brew_prefix/$tap_subdir"
|
||||
|
||||
# sanity check
|
||||
not_inside_homebrew "$tap_dir" "$git_root"
|
||||
|
||||
# action
|
||||
cd_to_version_dir "$cellar_dir" "$version_dir"
|
||||
if [[ -e "production_rubylib" ]]; then
|
||||
remove_dev_links "$tap_dir"
|
||||
else
|
||||
die "brew-cask is already set up for production"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# process args
|
||||
if [[ $1 =~ ^-+h(elp)?$ ]]; then
|
||||
printf "production_brew_cask
|
||||
|
||||
Undo all symlinks created by 'develop_brew_cask' so that the
|
||||
'brew cask' command will use only released code and Casks
|
||||
within Homebrew.
|
||||
|
||||
After running this command it is safe to run 'brew update',
|
||||
unless you are using similar scripts to create symlinks into
|
||||
other Caskroom development repos.
|
||||
|
||||
"
|
||||
exit
|
||||
fi
|
||||
|
||||
# dispatch main
|
||||
_production_brew_cask "${@}"
|
||||
|
||||
#
|
|
@ -0,0 +1 @@
|
|||
develop_brew_cask
|
Loading…
Reference in New Issue