Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
/ bootstrapper Public archive

A script to set up a machine for development within the Platform R&D team.

License

Notifications You must be signed in to change notification settings

concur/bootstrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bootstrapper

Bootstrapper is a script to set up an machine for development within the Platform R&D team.

It can be run multiple times on the same machine safely. It installs, upgrades, or skips packages based on what is already installed on the machine.

Requirements

We support:

  • OS X Yosemite (10.10)
  • OS X El Capitan (10.11)
  • OS X Sierra (10.12)
  • MacOS High Sierra (10.13)

Older versions may work but aren't regularly tested. Bug reports for older versions are welcome.

Install

If you are starting on a fresh new machine, continue with the following steps:

  1. Clone this repo and run the bootstrapper:
# Clone
git clone https://github.com/concur/bootstrapper.git

# Run the bootstrapper
./bin/bootstrapper install-mac 2>&1 | tee bootstrapper.log

Debugging

Your last bootstrapper run will be saved to ~/bootstrapper.log. Read through it to see if you can debug the issue yourself. If not, copy the lines where the script failed into a new GitHub Issue for us. Or, attach the whole log file as an attachment.

OS X El Capitan (10.11)

You may have problems installing Homebrew for the first time on OS X El Capitan due to permission changes to the /usr directory (within which the Homebrew installation is typically located). See the Homebrew El Capitan troubleshooting instructions for steps to resolve the permissions issues that interfere with Homebrew's installation.

What it sets up

Mac OS X tools:

  • Homebrew for managing operating system libraries.

Configuration:

  • Generates SSH key if needed
  • Asks for name and email for git commits if not set
  • Adds github.com to ssh config

Unix tools:

  • binutils a collection of binary tools
  • diffutils a package of several programs related to finding differences between files
  • ed the original text editor for Unix
  • findutils are the basic directory searching utilities of the GNU operating system
  • gawk to select particular records in a file and perform operations upon them
  • indent a code prettifier
  • sed the famous stream editor
  • tar the famous archiving utility
  • which the famous which utility
  • gnutls the Transport Layer Security (TLS) Library
  • grep search files for lines containing a match to a specified pattern, take a look at Silver Searcher as well
  • gzip a data compression program
  • watch executes a program periodically, showing output fullscreen
  • wdiff displays word differences between text files
  • wget an internet file retriever
  • Exuberant Ctags for indexing files for vim tab completion
  • Git for version control
  • OpenSSL for Transport Layer Security (TLS)
  • RCM for managing company and personal dotfiles
  • The Silver Searcher for finding things in files
  • Vim for an alternative text editor
  • Tmux for saving project state and switching between projects
  • Zsh as your shell
  • tree displays directories as trees (with optional color/HTML output)

Utilities:

  • httpie for a prettier console HTTP client
  • jq for processing JSON from the console like grep is for text
  • git-radar a heads up display for git
  • Certifi CA Bundle a carefully curated collection of Root Certificates

GitHub tools:

  • Hub for interacting with the GitHub API

Image tools:

Toolchain and configuration:

  • Bundler for managing Ruby libraries
  • Node.js and NPM, for running apps and installing JavaScript packages
  • NVM for managing versions of Node.js
  • Rbenv for managing versions of Ruby
  • Ruby Build for installing Rubies
  • Ruby stable for writing general-purpose code
  • Python stable for writing general-purpose code with pip and virtualenv configured
  • Elixir stable for writing general-purpose code
  • Rust stable for writing general-purpose code
  • Go stable for writing general-purpose code
  • Godep a dependency tool for Go
  • kubectl for controlling Kubernetes clusters
  • docker what Virtual Machines did for Operating Systems, Docker does for processes
  • docker-compose lets you define a multi-container application in a single file
  • terraform for building, combining, and launching infrastructure
  • packer a tool for creating machine and container images for multiple platforms
  • vault a tool for managing secrets
  • AWS CLI a unified tool for managing AWS service via the command line
  • dvm a docker version manager
  • bats a bash automated testing system
  • watchman a file watching service
  • corectl CoreOS over OS X made very simple

It should take less than 15 minutes to install (depends on your machine).

Customize in ~/.bootstrapper.local

Your ~/.bootstrapper.local is run at the end of the bootstrapper script. Put your customizations there. For example:

#!/usr/bin/env bash

brew_install_or_upgrade 'ranger'
brew_install_or_upgrade 'tig'

fancy_echo "Cleaning up old Homebrew formulae ..."
brew cleanup
brew cask cleanup

if [ -r "$HOME/.rcrc" ]; then
  fancy_echo "Updating dotfiles ..."
  rcup
fi

Write your customizations such that they can be run safely more than once. See the libexec/bootstrapper-install-mac script for examples.

Bootstrapper functions such as fancy_echo, brew_install_or_upgrade, brew_tap, brew_launchctl_restart, and gem_install_or_update can be used in your ~/.bootstrapper.local.

Uninstall

WARNING: This will uninstall Homebrew, if you have installed any applications using Homebrew not in the list above, they will not be reinstalled via the Bootstrapper install-mac command. Please make note of any applications and any custom configurations you may have setup as well. Add them to a ~/.bootstrapper.local file as explained above.

NOTE: It may make more sense to run any project dependencies as Docker containers.

./bin/bootstrapper uninstall-mac 2>&1 | tee bootstrapper.log

You will be prompted to delete your .zshrc file if you're not going to need it anymore, answer with a y.

Contributing

Reach out to see if what you want to add qualifies to be in the install list. Edit the libexec/bootstrapper-install-mac file. Document in the README.md file. Follow shell style guidelines by using ShellCheck and Syntastic.

brew install shellcheck

Thanks

This repo and script was heavily inspired by Thoughtbot's Laptop script.

About

A script to set up a machine for development within the Platform R&D team.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages