# -*- mode: ruby -*- # vi: set ft=ruby : GO_VERSION = '1.4.2' def packages_freebsd return <<-EOF pkg install -y git pkg install -y curl echo 'fuse_load="YES"' >> /boot/loader.conf echo 'vfs.usermount=1' >> /etc/sysctl.conf kldload fuse sysctl vfs.usermount=1 pw groupmod operator -M vagrant EOF end def packages_openbsd return <<-EOF . ~/.profile pkg_add git curl bash gtar-- ln -sf /usr/local/bin/gtar /usr/local/bin/tar EOF end def packages_linux return <<-EOF apt-get update apt-get install -y git curl EOF end def packages_darwin return <<-EOF ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew install caskroom/cask/brew-cask brew cask install osxfuse EOF end def install_gimme return <<-EOF rm -rf /opt/gimme mkdir -p /opt/gimme || true git clone https://github.com/meatballhat/gimme /opt/gimme perl -p -i -e 's,/bin/bash,/usr/bin/env bash,' /opt/gimme/gimme ln -sf /opt/gimme/gimme /usr/bin/gimme EOF end def prepare_user(boxname) return <<-EOF mkdir -p ~/go/src export PATH=/usr/local/bin:$PATH gimme #{GO_VERSION} >> ~/.profile echo export 'GOPATH=/vagrant/go' >> ~/.profile echo export 'CDPATH=.:$GOPATH/src/github.com' >> ~/.profile echo export 'PATH=$GOPATH/bin:/usr/local/bin:$PATH' >> ~/.profile . ~/.profile go get golang.org/x/tools/cmd/cover go get github.com/tools/godep echo echo "Run:" echo " vagrant rsync #{boxname}" echo " vagrant ssh #{boxname} -c 'cd project/path; godep go test ./...'" EOF end def fix_perms return <<-EOF chown -R vagrant /vagrant/go EOF end # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| # use rsync to copy content to the folder config.vm.synced_folder ".", "/vagrant/go/src/github.com/restic/restic", :type => "rsync" config.vm.synced_folder ".", "/vagrant", disabled: true # fix permissions on synced folder config.vm.provision "fix perms", :type => :shell, :inline => fix_perms config.vm.define "linux" do |b| b.vm.box = "ubuntu/trusty64" b.vm.provision "packages linux", :type => :shell, :inline => packages_linux b.vm.provision "install gimme", :type => :shell, :inline => install_gimme b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("linux") end config.vm.define "freebsd" do |b| b.vm.box = "geoffgarside/freebsd-10.1" b.vm.provision "packages freebsd", :type => :shell, :inline => packages_freebsd b.vm.provision "install gimme", :type => :shell, :inline => install_gimme b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("freebsd") end config.vm.define "openbsd" do |b| b.vm.box = "tmatilai/openbsd-5.6" b.vm.provision "packages openbsd", :type => :shell, :inline => packages_openbsd b.vm.provision "install gimme", :type => :shell, :inline => install_gimme b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("openbsd") end config.vm.define "darwin" do |b| #b.vm.box = "jhcook/osx-yosemite-10.10" b.vm.box = "jhcook/yosemite-clitools" b.vm.provision "packages darwin", :type => :shell, :privileged => false, :inline => packages_darwin b.vm.provision "install gimme", :type => :shell, :inline => install_gimme b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("darwin") end end