From c3ba67af3c0956a59d1506904ca8b03fc89e7c7a Mon Sep 17 00:00:00 2001 From: Nathaniel Landau Date: Mon, 21 Sep 2015 12:55:49 -0400 Subject: [PATCH] Two files now for installing mac apps via homebrew casks --- setupScripts/devApps.sh | 254 ++++++++++++++++++++++++++ setupScripts/{casks.sh => macApps.sh} | 12 -- setupScripts/newMacSetup.sh | 21 ++- 3 files changed, 265 insertions(+), 22 deletions(-) create mode 100644 setupScripts/devApps.sh rename setupScripts/{casks.sh => macApps.sh} (97%) diff --git a/setupScripts/devApps.sh b/setupScripts/devApps.sh new file mode 100644 index 0000000..f8aeccd --- /dev/null +++ b/setupScripts/devApps.sh @@ -0,0 +1,254 @@ +#!/usr/bin/env bash + +# ################################################## +# My Generic BASH script template +# +version="1.0.0" # Sets version variable for this script +# +scriptTemplateVersion="1.0.1" # Version of scriptTemplate.sh +# that this script is based on +# +# This script installs Homebrew Casks - allowing for command line +# installation of native Mac Applications. Once Homebrew Casks is installed, +# this script then installs a number of applications. +# +# For logging levels use the following functions: +# - header: Prints a script header +# - input: Ask for user input +# - success: Print script success +# - info: Print information to the user +# - notice: Notify the user of something +# - warning: Warn the user of something +# - error: Print a non-fatal error +# - die: A fatal error. Will exit the script +# - debug: Debug information +# - verbose: Debug info only printed when 'verbose' flag is set to 'true'. +# +# HISTORY: +# +# * 2015-02-07 - v1.0.0 - First Creation +# +# ################################################## + +# Source Scripting Utilities +# ----------------------------------- +# If these can't be found, update the path to the file +# ----------------------------------- +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +if [ -f "${SCRIPTDIR}/../lib/utils.sh" ]; then + source "${SCRIPTDIR}/../lib/utils.sh" +else + echo "Please find the file util.sh and add a reference to it in this script. Exiting." + exit 1 +fi + +# trapCleanup Function +# ----------------------------------- +# Any actions that should be taken if the script is prematurely +# exited. Always call this function at the top of your script. +# ----------------------------------- +function trapCleanup() { + echo "" + if is_dir "${tmpDir}"; then + rm -r "${tmpDir}" + fi + die "Exit trapped." # Edit this if you like. +} + +# Set Flags +# ----------------------------------- +# Flags which can be overridden by user input. +# Default values are below +# ----------------------------------- +quiet=0 +printLog=0 +verbose=0 +force=0 +strict=0 + + +# Set Local Variables +# ----------------------------------- +# A set of variables used by many scripts +# ----------------------------------- + +# Set Script name and location variables +scriptName=`basename ${0}` # Full name +scriptBasename="$(basename ${scriptName} .sh)" # Strips '.sh' from name +scriptPath="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Set time stamp +now=$(date +"%m-%d-%Y %r") +# Set hostname +thisHost=$(hostname) + +# Create temp directory with three random numbers and the process ID +# in the name. This directory is removed automatically at exit. + tmpDir="/tmp/${scriptName}.$RANDOM.$RANDOM.$RANDOM.$$" + (umask 077 && mkdir "${tmpDir}") || { + die "Could not create temporary directory! Exiting." + } + +# Logging +# ----------------------------------- +# Log is only used when the '-l' flag is set. +# +# To never save a logfile change variable to '/dev/null' +# Save to Desktop use: $HOME/Desktop/${scriptBasename}.log +# Save to standard user log location use: $HOME/Library/Logs/${scriptBasename}.log +# ----------------------------------- +logFile="$HOME/Library/Logs/${scriptBasename}.log" + + +function mainScript() { +############## Begin Script Here ################### +header "Beginning ${scriptName}" + + +# Set Variables +LISTINSTALLED="brew cask list" +INSTALLCOMMAND="brew cask install --appdir=/Applications" + +RECIPES=( + charles + codekit + github + imagealpha + imageoptim + istat-menus + java + joinme + kaleidoscope + licecap + mamp + paw + suspicious-package + tower +) + +# Run Functions + +hasHomebrew +hasCasks +brewMaintenance +doInstall +brewCleanup + + +header "Completed ${scriptName}" +############## End Script Here ################### +} + +############## Begin Options and Usage ################### + + +# Print usage +usage() { + echo -n "${scriptName} [OPTION]... [FILE]... + +This script installs Homebrew Casks - allowing for command line +installation of native Mac Applications. Once Homebrew Casks is installed, +this script then installs a number of applications. + + Options: + -f, --force Skip all user interaction. Implied 'Yes' to all actions + -q, --quiet Quiet (no output) + -l, --log Print log to file + -s, --strict Exit script with null variables. i.e 'set -o nounset' + -v, --verbose Output more information. (Items echoed to 'verbose') + -h, --help Display this help and exit + --version Output version information and exit +" +} + +# Iterate over options breaking -ab into -a -b when needed and --foo=bar into +# --foo bar +optstring=h +unset options +while (($#)); do + case $1 in + # If option is of type -ab + -[!-]?*) + # Loop over each character starting with the second + for ((i=1; i < ${#1}; i++)); do + c=${1:i:1} + + # Add current char to options + options+=("-$c") + + # If option takes a required argument, and it's not the last char make + # the rest of the string its argument + if [[ $optstring = *"$c:"* && ${1:i+1} ]]; then + options+=("${1:i+1}") + break + fi + done + ;; + + # If option is of type --foo=bar + --?*=*) options+=("${1%%=*}" "${1#*=}") ;; + # add --endopts for -- + --) options+=(--endopts) ;; + # Otherwise, nothing special + *) options+=("$1") ;; + esac + shift +done +set -- "${options[@]}" +unset options + +# Print help if no arguments were passed. +# Uncomment to force arguments when invoking the script +# [[ $# -eq 0 ]] && set -- "--help" + +# Read the options and set stuff +while [[ $1 = -?* ]]; do + case $1 in + -h|--help) usage >&2; safeExit ;; + --version) echo "$(basename $0) $version"; safeExit ;; + -u|--username) shift; username=$1 ;; + -p|--password) shift; password=$1 ;; + -v|--verbose) verbose=1 ;; + -l|--log) printLog=1 ;; + -q|--quiet) quiet=1 ;; + -s|--strict) strict=1;; + -f|--force) force=1 ;; + --endopts) shift; break ;; + *) die "invalid option: '$1'." ;; + esac + shift +done + + +############## End Options and Usage ################### + + + + +# ############# ############# ############# +# ## TIME TO RUN THE SCRIPT ## +# ## ## +# ## You shouldn't need to edit anything ## +# ## beneath this line ## +# ## ## +# ############# ############# ############# + +# Trap bad exits with your cleanup function +trap trapCleanup EXIT INT TERM + +# Exit on error. Append ||true if you expect an error. +set -o errexit + +# Exit on empty variable +if [ "${strict}" = "1" ]; then + set -o nounset +fi + +# Bash will remember & return the highest exitcode in a chain of pipes. +# This way you can catch the error in case mysqldump fails in `mysqldump |gzip` +set -o pipefail + + +mainScript # Run your script + +safeExit # Exit cleanly \ No newline at end of file diff --git a/setupScripts/casks.sh b/setupScripts/macApps.sh similarity index 97% rename from setupScripts/casks.sh rename to setupScripts/macApps.sh index 1d116a9..694c1bd 100755 --- a/setupScripts/casks.sh +++ b/setupScripts/macApps.sh @@ -112,13 +112,10 @@ INSTALLCOMMAND="brew cask install --appdir=/Applications" RECIPES=( alfred arq - authy-bluetooth bartender betterzipql capo carbon-copy-cloner - cheatsheet - codekit controlplane default-folder-x dropbox @@ -127,20 +124,13 @@ RECIPES=( firefox flux fluid - github google-chrome hazel houdahgeo iterm2 - imagealpha - imageoptim istat-menus java joinme - kaleidoscope - launchbar - licecap - mamp marked mailplane moom @@ -158,9 +148,7 @@ RECIPES=( skitch spillo sublime-text3 - suspicious-package textexpander - tower vlc vyprvpn webpquicklook diff --git a/setupScripts/newMacSetup.sh b/setupScripts/newMacSetup.sh index 2021f3e..79c7c91 100755 --- a/setupScripts/newMacSetup.sh +++ b/setupScripts/newMacSetup.sh @@ -49,7 +49,8 @@ fi FILES=" ./install_command_line_tools.sh ./homebrew.sh - ./casks.sh + ./macApps.sh + ./devApps.sh ./ruby.sh ./mackup.sh ./osx.sh @@ -59,23 +60,23 @@ FILES=" seek_confirmation "Do you want to run all the scripts at once?" if is_confirmed; then - for file in "$FILES" + for file in "${FILES}" do - if is_file "$file"; then - $file + if is_file "${file}"; then + ${file} else - die "$file does not exist. Exiting" + die "${file} does not exist. Exiting" fi done else -for file in "$FILES" +for file in "${FILES}" do - seek_confirmation "Do you want to run $file?" + seek_confirmation "Do you want to run ${file}?" if is_confirmed; then - if is_file "$file"; then - $file + if is_file "${file}"; then + ${file} else - die "$file does not exist." + die "${file} does not exist." fi fi done