Commit a2d6ec482e4715707cd6c1904b0843c129c922d1
1 parent
42c5acab4d
Exists in
master
Fix problems for Homebrew in standard location
Showing 8 changed files with 24 additions and 39 deletions Inline Diff
Puppetfile
| # This file manages Puppet module dependencies. | 1 | 1 | # This file manages Puppet module dependencies. | |
| # | 2 | 2 | # | |
| # It works a lot like Bundler. We provide some core modules by | 3 | 3 | # It works a lot like Bundler. We provide some core modules by | |
| # default. This ensures at least the ability to construct a basic | 4 | 4 | # default. This ensures at least the ability to construct a basic | |
| # environment. | 5 | 5 | # environment. | |
| 6 | 6 | |||
| # Shortcut for a module from GitHub's boxen organization | 7 | 7 | # Shortcut for a module from GitHub's boxen organization | |
| def github(name, *args) | 8 | 8 | def github(name, *args) | |
| options ||= if args.last.is_a? Hash | 9 | 9 | options ||= if args.last.is_a? Hash | |
| args.last | 10 | 10 | args.last | |
| else | 11 | 11 | else | |
| {} | 12 | 12 | {} | |
| end | 13 | 13 | end | |
| 14 | 14 | |||
| if path = options.delete(:path) | 15 | 15 | if path = options.delete(:path) | |
| mod name, :path => path | 16 | 16 | mod name, :path => path | |
| else | 17 | 17 | else | |
| version = args.first | 18 | 18 | version = args.first | |
| options[:repo] ||= "boxen/puppet-#{name}" | 19 | 19 | options[:repo] ||= "boxen/puppet-#{name}" | |
| mod name, version, :github_tarball => options[:repo] | 20 | 20 | mod name, version, :github_tarball => options[:repo] | |
| end | 21 | 21 | end | |
| end | 22 | 22 | end | |
| 23 | 23 | |||
| # Shortcut for a module under development | 24 | 24 | # Shortcut for a module under development | |
| def dev(name, *args) | 25 | 25 | def dev(name, *args) | |
| mod name, :path => "#{ENV['HOME']}/src/boxen/puppet-#{name}" | 26 | 26 | mod name, :path => "#{ENV['HOME']}/src/boxen/puppet-#{name}" | |
| end | 27 | 27 | end | |
| 28 | 28 | |||
| # Includes many of our custom types and providers, as well as global | 29 | 29 | # Includes many of our custom types and providers, as well as global | |
| # config. Required. | 30 | 30 | # config. Required. | |
| 31 | 31 | |||
| github "boxen", "3.6.1" | 32 | 32 | github "boxen", "3.6.3.rc", :repo => "hanjianwei/puppet-boxen" | |
| 33 | 33 | |||
| # Support for default hiera data in modules | 34 | 34 | # Support for default hiera data in modules | |
| 35 | 35 | |||
| github "module-data", "0.0.3", :repo => "ripienaar/puppet-module-data" | 36 | 36 | github "module-data", "0.0.3", :repo => "ripienaar/puppet-module-data" | |
| 37 | 37 | |||
| # Core modules for a basic development environment. You can replace | 38 | 38 | # Core modules for a basic development environment. You can replace | |
| # some/most of these if you want, but it's not recommended. | 39 | 39 | # some/most of these if you want, but it's not recommended. | |
| 40 | 40 | |||
| github "dnsmasq", "1.0.1" | 41 | |||
| github "gcc", "2.0.101" | 42 | |||
| github "git", "2.4.0" | 43 | 41 | github "git", "2.4.0" | |
| github "homebrew", "1.9.5.rc", :repo => "hanjianwei/puppet-homebrew" | 44 | 42 | github "homebrew", "1.9.5.rc", :repo => "hanjianwei/puppet-homebrew" | |
| github "hub", "1.3.0" | 45 | 43 | github "hub", "1.3.0" | |
| github "inifile", "1.0.3", :repo => "puppetlabs/puppetlabs-inifile" | 46 | 44 | github "inifile", "1.0.3", :repo => "puppetlabs/puppetlabs-inifile" | |
| github "nginx", "1.4.3" | 47 | |||
| github "nodejs", "3.7.0" | 48 | 45 | github "nodejs", "3.7.0" | |
| github "openssl", "1.0.0" | 49 | 46 | github "openssl", "1.0.0" | |
| github "pkgconfig", "1.0.0" | 50 | 47 | github "pkgconfig", "1.0.0" | |
| github "repository", "2.3.0" | 51 | 48 | github "repository", "2.3.0" | |
| github "ruby", "8.0.4" | 52 | 49 | github "ruby", "8.0.4" | |
| github "stdlib", "4.2.1", :repo => "puppetlabs/puppetlabs-stdlib" | 53 | 50 | github "stdlib", "4.2.1", :repo => "puppetlabs/puppetlabs-stdlib" | |
| github "sudo", "1.0.0" | 54 | 51 | github "sudo", "1.0.0" |
Puppetfile.lock
| GITHUBTARBALL | 1 | 1 | GITHUBTARBALL | |
| remote: boxen/puppet-boxen | 2 | |||
| specs: | 3 | |||
| boxen (3.6.1) | 4 | |||
| 5 | ||||
| GITHUBTARBALL | 6 | |||
| remote: boxen/puppet-dnsmasq | 7 | |||
| specs: | 8 | |||
| dnsmasq (1.0.1) | 9 | |||
| 10 | ||||
| GITHUBTARBALL | 11 | |||
| remote: boxen/puppet-gcc | 12 | |||
| specs: | 13 | |||
| gcc (2.0.101) | 14 | |||
| 15 | ||||
| GITHUBTARBALL | 16 | |||
| remote: boxen/puppet-git | 17 | 2 | remote: boxen/puppet-git | |
| specs: | 18 | 3 | specs: | |
| git (2.4.0) | 19 | 4 | git (2.4.0) | |
| 20 | 5 | |||
| GITHUBTARBALL | 21 | 6 | GITHUBTARBALL | |
| remote: boxen/puppet-hub | 22 | 7 | remote: boxen/puppet-hub | |
| specs: | 23 | 8 | specs: | |
| hub (1.3.0) | 24 | 9 | hub (1.3.0) | |
| 25 | 10 | |||
| GITHUBTARBALL | 26 | 11 | GITHUBTARBALL | |
| remote: boxen/puppet-nginx | 27 | |||
| specs: | 28 | |||
| nginx (1.4.3) | 29 | |||
| 30 | ||||
| GITHUBTARBALL | 31 | |||
| remote: boxen/puppet-nodejs | 32 | 12 | remote: boxen/puppet-nodejs | |
| specs: | 33 | 13 | specs: | |
| nodejs (3.7.0) | 34 | 14 | nodejs (3.7.0) | |
| 35 | 15 | |||
| GITHUBTARBALL | 36 | 16 | GITHUBTARBALL | |
| remote: boxen/puppet-openssl | 37 | 17 | remote: boxen/puppet-openssl | |
| specs: | 38 | 18 | specs: | |
| openssl (1.0.0) | 39 | 19 | openssl (1.0.0) | |
| 40 | 20 | |||
| GITHUBTARBALL | 41 | 21 | GITHUBTARBALL | |
| remote: boxen/puppet-osx | 42 | 22 | remote: boxen/puppet-osx | |
| specs: | 43 | 23 | specs: | |
| osx (2.7.0) | 44 | 24 | osx (2.7.0) | |
| 45 | 25 | |||
| GITHUBTARBALL | 46 | 26 | GITHUBTARBALL | |
| remote: boxen/puppet-pkgconfig | 47 | 27 | remote: boxen/puppet-pkgconfig | |
| specs: | 48 | 28 | specs: | |
| pkgconfig (1.0.0) | 49 | 29 | pkgconfig (1.0.0) | |
| 50 | 30 | |||
| GITHUBTARBALL | 51 | 31 | GITHUBTARBALL | |
| remote: boxen/puppet-repository | 52 | 32 | remote: boxen/puppet-repository | |
| specs: | 53 | 33 | specs: | |
| repository (2.3.0) | 54 | 34 | repository (2.3.0) | |
| 55 | 35 | |||
| GITHUBTARBALL | 56 | 36 | GITHUBTARBALL | |
| remote: boxen/puppet-ruby | 57 | 37 | remote: boxen/puppet-ruby | |
| specs: | 58 | 38 | specs: | |
| ruby (8.0.4) | 59 | 39 | ruby (8.0.4) | |
| 60 | 40 | |||
| GITHUBTARBALL | 61 | 41 | GITHUBTARBALL | |
| remote: boxen/puppet-sudo | 62 | 42 | remote: boxen/puppet-sudo | |
| specs: | 63 | 43 | specs: | |
| sudo (1.0.0) | 64 | 44 | sudo (1.0.0) | |
| 65 | 45 | |||
| GITHUBTARBALL | 66 | 46 | GITHUBTARBALL | |
| remote: boxen/puppet-xquartz | 67 | 47 | remote: boxen/puppet-xquartz | |
| specs: | 68 | 48 | specs: | |
| xquartz (1.1.1) | 69 | 49 | xquartz (1.1.1) | |
| 70 | 50 | |||
| GITHUBTARBALL | 71 | 51 | GITHUBTARBALL | |
| remote: glarizza/puppet-property_list_key | 72 | 52 | remote: hanjianwei/puppet-boxen | |
| specs: | 73 | 53 | specs: | |
| property_list_key (0.2.1) | 74 | 54 | boxen (3.6.3.rc) | |
| 75 | 55 | |||
| GITHUBTARBALL | 76 | 56 | GITHUBTARBALL | |
| remote: hanjianwei/puppet-brewcask | 77 | 57 | remote: hanjianwei/puppet-brewcask | |
| specs: | 78 | 58 | specs: | |
| brewcask (0.0.4.rc2) | 79 | 59 | brewcask (0.0.4.rc2) | |
| 80 | 60 | |||
| GITHUBTARBALL | 81 | 61 | GITHUBTARBALL | |
| remote: hanjianwei/puppet-dotfiles | 82 | 62 | remote: hanjianwei/puppet-dotfiles | |
| specs: | 83 | 63 | specs: | |
| dotfiles (0.0.6) | 84 | 64 | dotfiles (0.0.9) | |
| 85 | 65 | |||
| GITHUBTARBALL | 86 | 66 | GITHUBTARBALL | |
| remote: hanjianwei/puppet-homebrew | 87 | 67 | remote: hanjianwei/puppet-homebrew | |
| specs: | 88 | 68 | specs: | |
| homebrew (1.9.5.rc) | 89 | 69 | homebrew (1.9.5.rc) | |
| 90 | 70 | |||
| GITHUBTARBALL | 91 | 71 | GITHUBTARBALL | |
| remote: puppetlabs/puppetlabs-inifile | 92 | 72 | remote: puppetlabs/puppetlabs-inifile | |
| specs: | 93 | 73 | specs: | |
| inifile (1.0.3) | 94 | 74 | inifile (1.0.3) | |
| 95 | 75 | |||
| GITHUBTARBALL | 96 | 76 | GITHUBTARBALL | |
| remote: puppetlabs/puppetlabs-stdlib | 97 | 77 | remote: puppetlabs/puppetlabs-stdlib | |
| specs: | 98 | 78 | specs: | |
| stdlib (4.2.1) | 99 | 79 | stdlib (4.2.1) | |
| 100 | 80 | |||
| GITHUBTARBALL | 101 | 81 | GITHUBTARBALL | |
| remote: ripienaar/puppet-module-data | 102 | 82 | remote: ripienaar/puppet-module-data | |
| specs: | 103 | 83 | specs: | |
| module-data (0.0.3) | 104 | 84 | module-data (0.0.3) | |
| 105 | 85 | |||
| DEPENDENCIES | 106 | 86 | DEPENDENCIES | |
| boxen (= 3.6.1) | 107 | 87 | boxen (= 3.6.3.rc) | |
| brewcask (= 0.0.4.rc2) | 108 | 88 | brewcask (= 0.0.4.rc2) | |
| dnsmasq (= 1.0.1) | 109 | 89 | dotfiles (= 0.0.9) | |
| dotfiles (= 0.0.6) | 110 | |||
| gcc (= 2.0.101) | 111 |
config/boxen.rb
| # This file will be loaded by config/basic early in a Boxen run. Use | 1 | 1 | # This file will be loaded by config/basic early in a Boxen run. Use | |
| # it to provide any custom code or behavior your Boxen setup requires. | 2 | 2 | # it to provide any custom code or behavior your Boxen setup requires. | |
| 3 | 3 | |||
| # Change the prefix boxen is installed to. | 4 | 4 | # Change the prefix boxen is installed to. | |
| # ENV['BOXEN_HOME'] = '/opt/boxen' | 5 | 5 | # ENV['BOXEN_HOME'] = '/opt/boxen' | |
| 6 | 6 | |||
| # Change the repo boxen will use. | 7 | 7 | # Change the repo boxen will use. | |
| # ENV['BOXEN_REPO_NAME'] = 'boxen/our-boxen' | 8 | 8 | # ENV['BOXEN_REPO_NAME'] = 'boxen/our-boxen' | |
| 9 | 9 | |||
| # Boxen binary packaging | 10 | 10 | # Boxen binary packaging | |
| # ENV["BOXEN_S3_ACCESS_KEY"] = '' | 11 | 11 | # ENV["BOXEN_S3_ACCESS_KEY"] = '' | |
| # ENV["BOXEN_S3_SECRET_KEY"] = '' | 12 | 12 | # ENV["BOXEN_S3_SECRET_KEY"] = '' | |
| # ENV["BOXEN_S3_BUCKET"] = '' | 13 | 13 | # ENV["BOXEN_S3_BUCKET"] = '' | |
| 14 | 14 | |||
| # Auto-report issues on failed runs | 15 | 15 | # Auto-report issues on failed runs | |
| # ENV["BOXEN_ISSUES_ENABLED"] = 'yes' | 16 | 16 | # ENV["BOXEN_ISSUES_ENABLED"] = 'yes' | |
| 17 | 17 | |||
| # Submit audit data to an arbitrary HTTP endpoint | 18 | 18 | # Submit audit data to an arbitrary HTTP endpoint | |
| # ENV["BOXEN_WEB_HOOK_URL"] = 'https://some-uri.com/boxen' | 19 | 19 | # ENV["BOXEN_WEB_HOOK_URL"] = 'https://some-uri.com/boxen' | |
| # | 20 | 20 | # | |
| # required for Github Enterprise | 21 | 21 | # required for Github Enterprise | |
| # ENV["BOXEN_GITHUB_ENTERPRISE_URL"] = 'https://github.yourdomain.com' | 22 | 22 | # ENV["BOXEN_GITHUB_ENTERPRISE_URL"] = 'https://github.yourdomain.com' | |
| 23 | 23 | |||
| # required for Github Enterprise (defaults to "https://github.com/%s") | 24 | 24 | # required for Github Enterprise (defaults to "https://github.com/%s") | |
| # ENV['BOXEN_REPO_URL_TEMPLATE'] = 'https://github.yourdomain.com/%s' | 25 | 25 | # ENV['BOXEN_REPO_URL_TEMPLATE'] = 'https://github.yourdomain.com/%s' | |
| 26 | ||||
| 27 | # Setup config for Homebrew | |||
| 28 | require 'fileutils' |
hiera/users/hanjianwei.yaml
| ruby::global::version: "2.1.2" | 1 | 1 | ruby::global::version: "2.1.2" | |
| nodejs::global::version: "v0.10" | 2 | 2 | nodejs::global::version: "v0.10" | |
| 3 | boxen::config::homebrewdir: "/usr/local" |
manifests/site.pp
| require boxen::environment | 1 | 1 | require boxen::environment | |
| require homebrew | 2 | 2 | require homebrew | |
| 3 | 3 | |||
| Exec { | 4 | 4 | Exec { | |
| group => 'staff', | 5 | 5 | group => 'staff', | |
| logoutput => on_failure, | 6 | 6 | logoutput => on_failure, | |
| user => $boxen_user, | 7 | 7 | user => $boxen_user, | |
| 8 | 8 | |||
| path => [ | 9 | 9 | path => [ | |
| "${boxen::config::home}/rbenv/shims", | 10 | 10 | "${boxen::config::home}/rbenv/shims", | |
| "${boxen::config::home}/rbenv/bin", | 11 | 11 | "${boxen::config::home}/rbenv/bin", | |
| "${boxen::config::home}/rbenv/plugins/ruby-build/bin", | 12 | 12 | "${boxen::config::home}/rbenv/plugins/ruby-build/bin", | |
| "${boxen::config::home}/homebrew/bin", | 13 | 13 | "/usr/local/bin", | |
| '/usr/bin', | 14 | 14 | '/usr/bin', | |
| '/bin', | 15 | 15 | '/bin', | |
| '/usr/sbin', | 16 | 16 | '/usr/sbin', | |
| '/sbin' | 17 | 17 | '/sbin' | |
| ], | 18 | 18 | ], | |
| 19 | 19 | |||
| environment => [ | 20 | 20 | environment => [ | |
| "HOMEBREW_CACHE=${homebrew::config::cachedir}", | 21 | 21 | "HOMEBREW_CACHE=${homebrew::config::cachedir}", | |
| "HOME=/Users/${::boxen_user}" | 22 | 22 | "HOME=/Users/${::boxen_user}" | |
| ] | 23 | 23 | ] | |
| } | 24 | 24 | } | |
| 25 | 25 | |||
| File { | 26 | 26 | File { | |
| group => 'staff', | 27 | 27 | group => 'staff', | |
| owner => $boxen_user | 28 | 28 | owner => $boxen_user | |
| } | 29 | 29 | } | |
| 30 | 30 | |||
| Package { | 31 | 31 | Package { | |
| provider => homebrew, | 32 | 32 | provider => homebrew, | |
| require => Class['homebrew'] | 33 | 33 | require => Class['homebrew'] | |
| } | 34 | 34 | } | |
| 35 | 35 | |||
| Repository { | 36 | 36 | Repository { | |
| provider => git, | 37 | 37 | provider => git, | |
| extra => [ | 38 | 38 | extra => [ | |
| '--recurse-submodules' | 39 | 39 | '--recurse-submodules' | |
| ], | 40 | 40 | ], | |
| require => File["${boxen::config::bindir}/boxen-git-credential"], | 41 | 41 | require => File["${boxen::config::bindir}/boxen-git-credential"], | |
| config => { | 42 | 42 | config => { | |
| 'credential.helper' => "${boxen::config::bindir}/boxen-git-credential" | 43 | 43 | 'credential.helper' => "${boxen::config::bindir}/boxen-git-credential" | |
| } | 44 | 44 | } | |
| } | 45 | 45 | } | |
| 46 | 46 | |||
| Service { | 47 | 47 | Service { | |
| provider => ghlaunchd | 48 | 48 | provider => ghlaunchd | |
| } | 49 | 49 | } | |
| 50 | 50 | |||
| Homebrew::Formula <| |> -> Package <| |> | 51 | 51 | Homebrew::Formula <| |> -> Package <| |> | |
| 52 | 52 | |||
| node default { | 53 | 53 | node default { | |
| # core modules, needed for most things | 54 | 54 | # core modules, needed for most things | |
| include git | 55 | 55 | include git | |
| include hub | 56 | 56 | include hub | |
| 57 | 57 | |||
| # fail if FDE is not enabled | 58 | 58 | # fail if FDE is not enabled | |
| if $::root_encrypted == 'no' { | 59 | 59 | if $::root_encrypted == 'no' { | |
| fail('Please enable full disk encryption and try again') | 60 | 60 | fail('Please enable full disk encryption and try again') | |
| } | 61 | 61 | } | |
| 62 | 62 | |||
| # node versions | 63 | 63 | # node versions | |
| include nodejs::v0_10 | 64 | 64 | include nodejs::v0_10 |
modules/people/manifests/hanjianwei/applications.pp
| class people::hanjianwei::applications { | 1 | 1 | class people::hanjianwei::applications { | |
| 2 | 2 | |||
| # Declare all Homebrew packages | 3 | 3 | # Declare all Homebrew packages | |
| package { ['ack', | 4 | 4 | package { ['ack', | |
| 'qt5', | 5 | 5 | 'qt5', | |
| 'reattach-to-user-namespace', | 6 | 6 | 'reattach-to-user-namespace', | |
| 'tmux', | 7 | 7 | 'tmux', | |
| 'vim', | 8 | |||
| 'wget']: | 9 | 8 | 'wget']: | |
| 9 | } | |||
| 10 | ||||
| 11 | package { 'vim': | |||
| 12 | install_options => ['--override-system-vi'], | |||
| } | 10 | 13 | } | |
| 11 | 14 | |||
| homebrew::tap { 'homebrew/science': } | 12 | 15 | homebrew::tap { 'homebrew/science': } | |
| -> | 13 | 16 | -> | |
| package { 'opencv': } | 14 | 17 | package { 'opencv': } | |
| 15 | 18 | |||
| # Declare all Homebrew Cask packages | 16 | 19 | # Declare all Homebrew Cask packages | |
| include brewcask | 17 | 20 | include brewcask | |
| 18 | 21 | |||
| package { ['acorn', | 19 | 22 | package { ['acorn', | |
| 'alfred', | 20 | 23 | 'alfred', | |
| 'atom', | 21 | 24 | 'atom', | |
| 'bettertouchtool', | 22 | 25 | 'bettertouchtool', | |
| 'caffeine', | 23 | 26 | 'caffeine', | |
| 'cleanmymac', | 24 | 27 | 'cleanmymac', | |
| 'dropbox', | 25 | 28 | 'dropbox', | |
| 'evernote', | 26 | 29 | 'evernote', | |
| 'fantastical', | 27 | 30 | 'fantastical', | |
| 'firefox', | 28 | 31 | 'firefox', | |
| 'google-chrome', | 29 | 32 | 'google-chrome', | |
| 'hazel', | 30 | 33 | 'hazel', | |
| 'iterm2', | 31 | 34 | 'iterm2', | |
| 'karabiner', | 32 | 35 | 'karabiner', | |
| 'keyboard-maestro', | 33 | 36 | 'keyboard-maestro', | |
| 'mactex', | 34 | 37 | 'mactex', | |
| 'omnifocus', | 35 | 38 | 'omnifocus', | |
| 'onepassword', | 36 | 39 | 'onepassword', | |
| 'parallels', | 37 | 40 | 'parallels', | |
| 'pycharm-ce', | 38 | 41 | 'pycharm-ce', | |
| 'scapple', | 39 | 42 | 'scapple', | |
| 'screenflow', | 40 | 43 | 'screenflow', | |
| 'scrivener', | 41 | 44 | 'scrivener', | |
| 'seil', | 42 | 45 | 'seil', | |
| 'shiori', | 43 | 46 | 'shiori', | |
| 'trim-enabler', | 44 | 47 | 'trim-enabler', | |
| 'qq', | 45 | 48 | 'qq', | |
| 'qt-creator', | 46 | 49 | 'qt-creator', | |
| 'vagrant', | 47 | 50 | 'vagrant', | |
| 'virtualbox', | 48 | 51 | 'virtualbox', | |
| 'welly', | 49 | 52 | 'welly', | |
| 'xmind']: | 50 | 53 | 'xmind']: | |
| provider => 'brewcask' | 51 | 54 | provider => 'brewcask' | |
| } | 52 | 55 | } | |
| 53 | 56 | |||
| # Taps | 54 | 57 | # Taps | |
| homebrew::tap { 'hanjianwei/apps': } | 55 | 58 | homebrew::tap { 'hanjianwei/apps': } | |
| -> | 56 | 59 | -> | |
| package { 'squirrel': | 57 | 60 | package { 'squirrel': | |
| provider => 'brewcask' | 58 | 61 | provider => 'brewcask' | |
| } | 59 | 62 | } | |
| 60 | 63 | |||
| homebrew::tap { 'caskroom/fonts': } | 61 | 64 | homebrew::tap { 'caskroom/fonts': } | |
| -> | 62 | 65 | -> | |
| package { ['font-anonymous-pro', | 63 | 66 | package { ['font-anonymous-pro', | |
| 'font-dejavu-sans', | 64 | 67 | 'font-dejavu-sans', | |
| 'font-dejavu-sans-mono-for-powerline', | 65 | 68 | 'font-dejavu-sans-mono-for-powerline', | |
| 'font-inconsolata-dz-for-powerline', | 66 | 69 | 'font-inconsolata-dz-for-powerline', | |
| 'font-inconsolata-for-powerline', | 67 | 70 | 'font-inconsolata-for-powerline', | |
| 'font-sauce-code-powerline', | 68 | 71 | 'font-sauce-code-powerline', | |
| 'font-source-code-pro', | 69 | 72 | 'font-source-code-pro', | |
| 'font-source-sans-pro', | 70 | 73 | 'font-source-sans-pro', | |
| 'font-source-serif-pro', | 71 | 74 | 'font-source-serif-pro', | |
| 'font-terminus', | 72 | 75 | 'font-terminus', | |
| 'font-ubuntu-mono-powerline']: | 73 | 76 | 'font-ubuntu-mono-powerline']: | |
| provider => 'brewcask' | 74 | 77 | provider => 'brewcask' | |
| } | 75 | 78 | } | |
| 76 | 79 | |||
| homebrew::tap { 'caskroom/versions': } | 77 | 80 | homebrew::tap { 'caskroom/versions': } | |
| -> | 78 | 81 | -> | |
| package { 'intellij-idea-ultimate12': | 79 | 82 | package { 'intellij-idea-ultimate12': | |
| provider => 'brewcask' | 80 | 83 | provider => 'brewcask' | |
| } | 81 | 84 | } | |
| 82 | 85 | |||
| homebrew::tap { 'railwaycat/emacsmacport': } | 83 | 86 | homebrew::tap { 'railwaycat/emacsmacport': } | |
| -> | 84 | 87 | -> | |
| package { 'emacs-mac': | 85 | 88 | package { 'emacs-mac': | |
| provider => 'brewcask' | 86 | 89 | provider => 'brewcask' | |
| } | 87 | 90 | } | |
| 88 | 91 | |||
| # Apps configuration | 89 | 92 | # Apps configuration | |
| Package <| |> -> Dotfiles::Deploy <| |> | 90 | 93 | Package <| |> -> Dotfiles::Deploy <| |> | |
| 91 | 94 | |||
| osx_chsh { $boxen_user: | 92 | 95 | osx_chsh { $boxen_user: | |
| shell => '/bin/zsh' | 93 | 96 | shell => '/bin/zsh' | |
| } | 94 | 97 | } | |
| 95 | 98 | |||
| dotfiles::deploy { ['atom', | 96 | 99 | dotfiles::deploy { ['atom', | |
| 'bettertouchtool', | 97 | 100 | 'bettertouchtool', | |
| 'emacs', | 98 | 101 | 'emacs', | |
| 'git', | 99 | 102 | 'git', | |
| 'iterm2', | 100 | 103 | 'iterm2', |
script/boxen-git-credential
| #!/usr/bin/ruby | 1 | 1 | #!/usr/bin/ruby | |
| # Provide git credentials using Boxen's config. | 2 | 2 | # Provide git credentials using Boxen's config. | |
| 3 | 3 | |||
| unless command = ARGV[0] | 4 | 4 | unless command = ARGV[0] | |
| this = File.basename $0 | 5 | 5 | this = File.basename $0 | |
| abort "Usage: #{this} <get|store|erase>" | 6 | 6 | abort "Usage: #{this} <get|store|erase>" | |
| end | 7 | 7 | end | |
| 8 | 8 | |||
| require "pathname" | 9 | 9 | require "pathname" | |
| 10 | 10 | |||
| # It's a UTF-8, UTF-8, UTF-8 world. | 11 | 11 | # It's a UTF-8, UTF-8, UTF-8 world. | |
| 12 | 12 | |||
| Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > "1.9" | 13 | 13 | Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > "1.9" | |
| 14 | 14 | |||
| # Put us where we belong, in the root dir of our boxen repo. | 15 | 15 | # Put us where we belong, in the root dir of our boxen repo. | |
| 16 | 16 | |||
| Dir.chdir Pathname.new(__FILE__).realpath + "../.." | 17 | 17 | Dir.chdir Pathname.new(__FILE__).realpath + "../.." | |
| 18 | 18 | |||
| # Because we can be called from inside other Ruby processes, unset any | 19 | 19 | # Because we can be called from inside other Ruby processes, unset any | |
| # `BUNDLE_` environment variables. | 20 | 20 | # `BUNDLE_` environment variables. | |
| 21 | 21 | |||
| ENV.keys.select { |k| /^BUNDLE_/i }.each { |k| ENV.delete k } | 22 | 22 | ENV.keys.select { |k| /^BUNDLE_/i }.each { |k| ENV.delete k } | |
| 23 | 23 | |||
| # Set up our local configuration, deps, and load path. | 24 | 24 | # Set up our local configuration, deps, and load path. | |
| 25 | 25 | |||
| load "config/basic.rb" | 26 | 26 | load "config/basic.rb" | |
| require "boxen/config" | 27 | 27 | require "boxen/config" | |
| 28 | 28 | |||
| config = Boxen::Config.load | 29 | 29 | config = Boxen::Config.load | |
| input = $stdin.read | 30 | 30 | input = $stdin.read | |
| attrs = Hash[input.split($/).map { |l| l.split("=") }] | 31 | 31 | attrs = Hash[input.split($/).map { |l| l.split("=") }] | |
| # find GitHub or GitHub Enterprise host | 32 | 32 | # find GitHub or GitHub Enterprise host | |
| ghhost = URI(config.ghurl).host | 33 | 33 | ghhost = URI(config.ghurl).host | |
| 34 | 34 | |||
| host_exp = Regexp.new "(^|\.)" + Regexp.escape(ghhost) | 35 | 35 | host_exp = Regexp.new "(^|\.)" + Regexp.escape(ghhost) | |
| if command == "get" && host_exp.match(attrs["host"]) | 36 | 36 | if command == "get" && host_exp.match(attrs["host"]) | |
| puts "username=#{config.token}" | 37 | 37 | puts "username=#{config.token}" | |
| puts "password=x-oauth-basic" | 38 | 38 | puts "password=x-oauth-basic" |
script/sync
| #!/usr/bin/ruby | 1 | 1 | #!/usr/bin/ruby | |
| # Sync binary snapshots to S3. | 2 | 2 | # Sync binary snapshots to S3. | |
| 3 | 3 | |||
| require "pathname" | 4 | 4 | require "pathname" | |
| require "tempfile" | 5 | 5 | require "tempfile" | |
| 6 | 6 | |||
| # Put us where we belong, in the root dir of our boxen repo. | 7 | 7 | # Put us where we belong, in the root dir of our boxen repo. | |
| 8 | 8 | |||
| Dir.chdir Pathname.new(__FILE__).realpath + "../.." | 9 | 9 | Dir.chdir Pathname.new(__FILE__).realpath + "../.." | |
| 10 | 10 | |||
| # Make sure our local dependencies are up to date. | 11 | 11 | # Make sure our local dependencies are up to date. | |
| 12 | 12 | |||
| abort "Sorry, can't bootstrap." unless system "script/bootstrap" | 13 | 13 | abort "Sorry, can't bootstrap." unless system "script/bootstrap" | |
| 14 | 14 | |||
| # Set up our local configuration, deps, and load path. | 15 | 15 | # Set up our local configuration, deps, and load path. | |
| 16 | 16 | |||
| load "config/basic.rb" | 17 | 17 | load "config/basic.rb" | |
| 18 | 18 | |||
| require "aws-sdk" | 19 | 19 | require "aws-sdk" | |
| require "boxen/config" | 20 | 20 | require "boxen/config" | |
| 21 | 21 | |||
| access_key = ENV["BOXEN_S3_ACCESS_KEY"] | 22 | 22 | access_key = ENV["BOXEN_S3_ACCESS_KEY"] | |
| secret_key = ENV["BOXEN_S3_SECRET_KEY"] | 23 | 23 | secret_key = ENV["BOXEN_S3_SECRET_KEY"] | |
| bucket_name = ENV["BOXEN_S3_BUCKET"] | 24 | 24 | bucket_name = ENV["BOXEN_S3_BUCKET"] | |
| 25 | 25 | |||
| unless access_key && secret_key && bucket_name | 26 | 26 | unless access_key && secret_key && bucket_name | |
| abort "Please set the BOXEN_S3_{ACCESS_KEY,SECRET_KEY,BUCKET} env vars." | 27 | 27 | abort "Please set the BOXEN_S3_{ACCESS_KEY,SECRET_KEY,BUCKET} env vars." | |
| end | 28 | 28 | end | |
| 29 | 29 | |||
| s3 = AWS::S3.new :access_key_id => access_key, :secret_access_key => secret_key | 30 | 30 | s3 = AWS::S3.new :access_key_id => access_key, :secret_access_key => secret_key | |
| os = `sw_vers -productVersion`.strip.split(".")[0..1].join "." | 31 | 31 | os = `sw_vers -productVersion`.strip.split(".")[0..1].join "." | |
| 32 | 32 | |||
| bucket = s3.buckets[bucket_name] | 33 | 33 | bucket = s3.buckets[bucket_name] | |
| config = Boxen::Config.load | 34 | 34 | config = Boxen::Config.load | |
| 35 | 35 | |||
| # Sync Homebrew packages. | 36 | 36 | # Sync Homebrew packages. | |
| 37 | 37 | |||
| Dir.chdir "#{config.homedir}/homebrew/Cellar" do | 38 | 38 | Dir.chdir "/usr/local/Cellar" do | |
| Dir["*/*"].each do |dir| | 39 | 39 | Dir["*/*"].each do |dir| | |
| name, version = File.split dir | 40 | 40 | name, version = File.split dir | |
| 41 | 41 | |||
| file = "homebrew/#{os}/#{name}-#{version}.tar.bz2" | 42 | 42 | file = "homebrew/#{os}/#{name}-#{version}.tar.bz2" | |
| temp = Tempfile.new "homebrew" | 43 | 43 | temp = Tempfile.new "homebrew" | |
| obj = bucket.objects[file] | 44 | 44 | obj = bucket.objects[file] | |
| 45 | 45 | |||
| next if obj.exists? | 46 | 46 | next if obj.exists? | |
| 47 | 47 | |||
| printf "Snapshotting #{name} #{version}... " | 48 | 48 | printf "Snapshotting #{name} #{version}... " | |
| $stdout.flush | 49 | 49 | $stdout.flush | |
| 50 | 50 | |||
| system "tar", "-cjf", temp.path, dir | 51 | 51 | system "tar", "-cjf", temp.path, dir | |
| puts "done." | 52 | 52 | puts "done." | |
| 53 | 53 | |||
| printf "Shipping #{name} #{version} to S3... " | 54 | 54 | printf "Shipping #{name} #{version} to S3... " | |
| $stdout.flush | 55 | 55 | $stdout.flush | |
| 56 | 56 | |||
| obj.write :acl => :public_read, :file => temp.path | 57 | 57 | obj.write :acl => :public_read, :file => temp.path | |
| puts "done." | 58 | 58 | puts "done." | |
| end | 59 | 59 | end | |
| end | 60 | 60 | end | |
| 61 | 61 | |||
| # Sync rbenv rubies. | 62 | 62 | # Sync rbenv rubies. | |
| 63 | 63 | |||
| Dir.chdir "#{config.homedir}/rbenv/versions" do | 64 | 64 | Dir.chdir "#{config.homedir}/rbenv/versions" do | |
| Dir["*"].each do |dir| | 65 | 65 | Dir["*"].each do |dir| | |
| next if File.symlink? dir | 66 | 66 | next if File.symlink? dir | |
| 67 | 67 | |||
| version = File.basename dir | 68 | 68 | version = File.basename dir | |
| file = "rbenv/#{os}/#{version}.tar.bz2" | 69 | 69 | file = "rbenv/#{os}/#{version}.tar.bz2" | |
| temp = Tempfile.new "rbenv" | 70 | 70 | temp = Tempfile.new "rbenv" | |
| obj = bucket.objects[file] | 71 | 71 | obj = bucket.objects[file] | |
| 72 | 72 | |||
| next if obj.exists? | 73 | 73 | next if obj.exists? | |
| 74 | 74 | |||
| printf "Snapshotting ruby #{version}... " | 75 | 75 | printf "Snapshotting ruby #{version}... " | |
| $stdout.flush | 76 | 76 | $stdout.flush | |
| 77 | 77 | |||
| system "tar -cjf #{temp.path} #{version}" | 78 | 78 | system "tar -cjf #{temp.path} #{version}" | |
| puts "done." | 79 | 79 | puts "done." |