Permalink
Commits on Jul 29, 2014
  1. Clarify OS X support

    croaky committed Jul 29, 2014
Commits on Jul 28, 2014
  1. Link README to programs that Laptop installs

    So that users can learn more about them.
    croaky committed Jul 26, 2014
Commits on Jul 26, 2014
  1. Drop support for Snow Leopard

    * Snow Leopard was released in August, 2009 (about five years ago).
    * Yosemite will be released in a couple of months.
    * We support the last three versions of Ubuntu, so this is a little more
      consistent.
    * Use the same format as the Linux "Requirements" section for consistency.
    croaky committed Jul 26, 2014
  2. Upgrade to latest version of Node.js

    We can future-proof the script little more by setting `node_version` to 0.10.
    NVM will automatically install the latest 0.10.x version:
    
    https://github.com/creationix/nvm#usage
    skippednote committed with croaky Jul 26, 2014
Commits on Jul 25, 2014
  1. Add idempotent brew_launchctl_restart function

    Fixes thoughtbot#260
    
    This is a soft error that occurs when Laptop is run and PostgreSQL isn't
    currently loaded by `launchclt`, e.g. on the first run of Laptop:
    
        Starting Postgres ...
        /Users/wellmade/Library/LaunchAgents/homebrew.mxcl.postgresql.plist ->
        /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist
        launchctl: Error unloading: homebrew.mxcl.postgresql
    
    The fix would probably be to check `launchctl list` to see if the service is
    already loaded before calling `launchctl unload`.
    
    This small added complexity probably justifies a function for running
    appropriate `launchctl` commands. Homebrew has a strong convention for the
    naming of `launchd` plists: "homebrew.mxcl.FORMULA_NAME.plist", e.g.
    "homebrew.mxcl.postgresql.plist" and "homebrew.mxcl.redis.plist". This likely
    makes a function to do the `launchctl` work fairly straightforward.
    gohanlon committed with croaky Jul 23, 2014
  2. Fix warning when linking already-linked OpenSSL

    Fixes thoughtbot#259
    
    Laptop raises the following warning on `brew link openssl ` when OpenSSL has
    already been linked:
    
        Warning: Already linked: /usr/local/Cellar/openssl/1.0.1h
        To relink: brew unlink openssl && brew link openssl
    
    I think the resolution is straightforward: follow Homebrew's recommendation and
    `brew unlink` before `brew link`. I verified that `brew unlink` exits with
    success even if the formula wasn't previously linked as would be the case the
    first time Laptop is installed.
    gohanlon committed with croaky Jul 23, 2014
  3. Test whether Homebrew formula is installed

    More readable and testable this way.
    gohanlon committed with croaky Jul 23, 2014
  4. Make brew_install_or_upgrade work with aliases

    Fixes thoughtbot#258
    
    The following doesn't behave as intended:
    
        brew_install_or_upgrade 'postgres'
    
    because "postgres" is an alias, not the full name of the formula. The actual
    formula name is "postgresql".
    
    The first time `brew_install_or_upgrade 'postgres'` is invoked it works as
    expected — `brew install postgres` is run. Additional invocations result in
    `brew install` instead of the expected `brew upgrade`.
    
    The `brew_install_or_upgrade` function uses `brew list -1` to obtain a complete
    list of installed packages, and these package names will be the actual package
    names. So, grepping for an alias (with the `-x` option) won't match:
    
        $ brew list -1 | grep -Fx postgres
    
    Note that there's no output, even though PostgreSQL is installed. Using the full
    package name behaves as expected:
    
        $ brew list -1 | grep -Fx postgresql
        postgresql
    
    Rather than passing on the first argument to `brew_install_or_upgrade` to the
    `brew list` commands, the argument should first be expanded to the actual
    package name.
    gohanlon committed with croaky Jul 22, 2014
  5. Don't upgrade a brew that is already up to date

    Fixes thoughtbot#257
    
    On a clean OS X Mavericks, Laptop outputs an error message towards the end of
    the install script when `brew_install_or_upgrade` is invoked for OpenSSL:
    
        Upgrading and linking OpenSSL ...
        Error: openssl-1.0.1h already installed
        Linking /usr/local/Cellar/openssl/1.0.1h... 1139 symlinks created
    
    The current version of OpenSSL was installed earlier as a dependency of
    PostgreSQL. In general, a similar error will be logged whenever
    `brew_install_or_upgrade` is called for an installed package that's already up
    to date.
    
    Currently, Laptop discards the error exit code of `brew upgrade` as follows:
    
        (brew upgrade "$@") || true
    
    In addition to logging an error when there isn't truly an error, this approach
    can cause real `brew upgrade` errors and potential bugs in Laptop to be masked
    (e.g. Homebrew formula build failures or Laptop mistakenly invoking `brew
    upgrade` for a package that isn't actually installed).
    
    I think a better approach would be to check whether the installed package is the
    same version as the current Homebrew formula before attempting `brew upgrade`.
    gohanlon committed with croaky Jul 22, 2014
Commits on Jul 23, 2014
  1. Update prerequisites in README

    Homebrew's install script checks whether the command line tools are installed,
    and, only if necessary, will run `xcode-select --install`.
    
    https://github.com/Homebrew/homebrew/blob/go/install#L162
    
    The test they are using depends in part on a heuristic:
    
    Homebrew/legacy-homebrew@afa4549
    
    I confirmed that it works on a clean 10.9 install.
    
    We also should not instruct the user to run `sudo xcodebuild -license` at all.
    
    Here's why:
    
    The `xcodebuild program` isn't included in OS X Mavericks. When you run
    `xcodebuild`, you're actually finding one of 83 shims found in `/usr/bin` that
    are included in Mavericks. These shims are an important part of how the
    `xcode-select` mechanism works. When the command line developer tools have not
    been installed, invoking any of these shims won't do anything other than prompt
    you to install the command line developer tools:
    
        $ xcodebuild -license
        xcode-select: note: no developer tools were found at
        '/Applications/Xcode.app', requesting install.
        Choose an option in the dialog to download the command line developer tools.
    
    (And, the GUI install dialog is presented.)
    
    Of course, since the real `xcodebuild` program isn't actually available, it
    doesn't make sense to try and use it to accept the Xcode License Agreement.
    
    Instead, go straight to installing with `xcode-select --install` (xcode-select
    comes with OS X Mavericks and is not a shim):
    
        $ xcode-select --install
        xcode-select: note: install requested for command line developer tools
    
    And, the exact same GUI install dialog is presented (prompting the user to
    either "Get Xcode" from the App Store or immediately "Install" the command line
    developer tools).
    
    For more about `xcode-select` and it's shims, see `man xcode-select`.
    
    This also removes redundant Vagrant setup instructions and capitalize Vagrant.
    gohanlon committed with croaky Jul 19, 2014
  2. Log the output of the script to a file and stdout

    Thanks for the implementation, @pbrisbin.
    croaky committed Jul 20, 2014
Commits on Jul 22, 2014
  1. Switch to launchctl for Postgres

    `brew services` is no longer supported:
    
    Homebrew/legacy-homebrew@c0b99c0
    
    * Fixes thoughtbot#93
    * Fixes thoughtbot#243
    * Idempotently creates Postgres database cluster and starts (or restarts)
      Postgres.
    croaky committed Jul 19, 2014
Commits on Jul 10, 2014
  1. Install foreman on OS X

    This uses installer(1).
    
    On GNU we already install `heroku-toolbelt` using apt, and that package
    has a dependency on the `foreman` package.
    
    We install this via installer(1) instead of gem(1) so that it remains
    regardless of the development Ruby setup.
    
    We install this via installer(1) instead of from the `Gemfile` so that
    it remains regardless of what other developers do on the project (as
    described by David Dollar).
    mike-burns committed Jul 7, 2014
Commits on Jul 9, 2014
  1. Installs `parity`

    * `curl` / `heroku-toolbelt` / `pg_restore` should all
      already be available
    seanpdoyle committed Jul 9, 2014
Commits on Jul 7, 2014
  1. Fix rbenv initialization for zsh

    Clean install on OSX Mavericks 10.9.4, I encountered an error similar to this:
    
    rbenv/rbenv#487
    
    Implemented same zsh fix, seemed to work alright. I think this is what needs to
    be changed in the code.
    sarahgp committed with croaky Jul 6, 2014
Commits on Jun 22, 2014
  1. Merge pull request #241 from lodgem/fix-source-zsh

    Fix nvm package install
    Daniel Collis-Puro committed Jun 22, 2014
  2. Fix nvm package install

    allaire committed Jun 22, 2014
Commits on Jun 20, 2014
  1. Be more careful about nvm init in zshrc

    Dan Collis-Puro committed Jun 20, 2014
  2. Remove ruby 2.1.1 conditional behavior for rbenv installation

    Dan Collis-Puro committed Jun 20, 2014
  3. Extend and improve osx idempotency

    Includes:
    
    * Fix the "brew_install_or_upgrade" function, use it for all components
    * Remove executable perms
    * Skip installing an already installed ruby
    
    Technically re-running laptop is not idempotent in that it will upgrade
    brew-installed items and potentially install a new ruby. I feel this
    is expected and wanted.
    Dan Collis-Puro committed Jun 13, 2014
  4. Making brew installs commands work in idempotently

    chrispwood committed with Dan Collis-Puro May 5, 2014
Commits on Jun 17, 2014
  1. Remove spaces in node_version variable definition.

    ash106 committed with Dan Collis-Puro Jun 17, 2014
Commits on Jun 13, 2014
  1. Install nvm and node on Mac laptops

    Includes:
    
    * Installing nvm via homebrew
    * Adding node init stubs to .zshrc
    * Installs node 0.10.28 and uses it by default
    Dan Collis Puro and Dan Croak committed with Dan Collis-Puro Mar 17, 2014
  2. Merge pull request #236 from endSly/patch-1

    brew-cask formula updated in README
    Daniel Collis-Puro committed Jun 13, 2014
Commits on Jun 6, 2014
  1. Refactor automated laptop tests to use rspec

    Includes:
    
    * A minimal gem, rake, and rspec environment
    * The Distro class wraps up commands to test and provision vagrant boxes
    * Publishing boxes to s3 has been simplified and improved
    * Significant documentation updates
    
    New laptop specs should now be significantly easier to write and understand.
    Dan Collis-Puro committed May 16, 2014
  2. Merge pull request #235 from ManageIQ/support_reruns_where_pg_is_started

    Support rerunning the installation script by restarting postgresql.
    Daniel Collis-Puro committed Jun 6, 2014
  3. Support rerunning the installation script by restarting postgresql.

    If postgresql was installed and started in a previous run, start causes:
    Error: Service `postgresql` already started, use `brew services restart postgresql`
    
    When developing changes to these scripts, it's important to be able to run and rerun this script without removing applications.
    jrafanie committed Jun 6, 2014
Commits on May 9, 2014
  1. Install silversearcher from apt when possible

    Dan Collis-Puro committed May 9, 2014
Commits on May 5, 2014
  1. Remove the deprecated curl-ca-bundle

    Dan Collis-Puro committed May 5, 2014
Commits on May 2, 2014
  1. Automatically create laptopped vagrant boxes.

    Vagrant boxes can be created automatically after a successful run of the
    laptop test suite. These vagrant boxes are published to
    [vagrantcloud](http://vagrantcloud.com/thoughtbot/) and should be a
    solid start on a vagrant dev box suitable for modern ruby and
    ruby-on-rails development.
    
    Improvements include:
    
    * Vagrantfiles fixed to have predictable names
    * test/runner.sh now knows how to render vagrant boxes after tests are
      successful
    * Error reporting improvements
    * Full documentation on creating new base boxes
    
    We now require vagrant >= 1.5.0 to use the automated test suite built
    into laptop.
    Dan Collis-Puro committed Apr 15, 2014
  2. Merge pull request #222 from wouterw/patch-1

    Update github raw urls
    Daniel Collis-Puro committed May 2, 2014
Commits on Apr 30, 2014