.homedir-setup.rb

Tue, 03 Nov 2015 21:42:57 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Tue, 03 Nov 2015 21:42:57 -0500
changeset 224
bfa4bae34d0f
parent 213
859dd4b440d8
child 240
18f78b36f003
permissions
-rwxr-xr-x

Less noisy reply startup

#!/usr/bin/env ruby
# vim: et sts=2 sw=2 fdm=marker

# we don't yet have rbenv so keep safe for ruby 1.9

require 'getoptlong'

if `which git` == ''
  puts "please install git"
  exit 1 
end

def main
  if ARGV.length == 0
    ARGV << '--help'
  end

  opts = GetoptLong.new(
    [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
    [ '--update', '-u', GetoptLong::NO_ARGUMENT ],
    [ '--setup', '-s', GetoptLong::NO_ARGUMENT ],
  );

  Dir.chdir(
    File.dirname File.expand_path $0
  )

  opts.each do |opt, arg|
    case opt
    when '--help'
      puts <<-ENDHELP.sub(/^\s+/,'')
        #{$0} usage:
         -h --help    This help message
         -s --setup   Perform home directory setup (git clone)
         -u --update  Update git stuff (git pull)
      ENDHELP
      exit 1
    when '--setup'
      setup
    when '--update'
      update
    end
  end
end

# just checks and bails after each call, output already in STDERR
def do_cmds (*cmds)
  cmds.each do |cmd|
    puts "$ #{cmd}"
    system( cmd ) or exit $?
  end
end


def setup

  # oh-my-zsh {{{
    # some custom zsh files are already in .oh-my-zsh.cust

    if Dir.exists?('.oh-my-zsh/.git')
      puts "oh-my-zsh already installed"
    else
      puts "Installing oh-my-zsh..."

      do_cmds \
        'git clone git://github.com/robbyrussell/oh-my-zsh.git .oh-my-zsh'

    end

  # }}}


  # plenv {{{

    if Dir.exists?('.plenv')
      puts "plenv already installed"
    else
      puts "Installing plenv..."

      do_cmds \
        'git clone git://github.com/tokuhirom/plenv.git .plenv',
        'git clone git://github.com/tokuhirom/Perl-Build.git .plenv/plugins/perl-build/'

    end

  # }}}


  # rbenv {{{
    if Dir.exists?('.rbenv')
      puts "rbenv already installed"
    else
      puts "Installing rbenv..."

      do_cmds \
        'git clone https://github.com/sstephenson/rbenv.git .rbenv',
        'git clone https://github.com/sstephenson/ruby-build.git .rbenv/plugins/ruby-build/'

    end
  # }}}


  # ndenv {{{
    if Dir.exists?('.ndenv')
      puts "ndenv already installed"
    else
      puts "Installing ndenv..."

      do_cmds \
        'git clone https://github.com/riywo/ndenv.git .ndenv',
        'git clone https://github.com/riywo/node-build.git .ndenv/plugins/node-build'

    end
  # }}}


end

def update

  [
    '.oh-my-zsh',
    '.plenv',
    '.plenv/plugins/perl-build',
    '.rbenv',
    '.rbenv/plugins/ruby-build',
    '.ndenv',
    '.ndenv/plugins/node-build',
  ].each do |dir|
    do_cmds \
      "cd ~/#{dir} && git pull origin master"
  end


end

main

mercurial