Commit 966c19f70b02e2395d0ea1ba7260c305dce61eef

Authored by Will Farrington
1 parent 553c2e33d0

Update for script/sync

Showing 11 changed files with 142 additions and 3 deletions Side-by-side Diff

1 1 source "http://rubygems.org"
2 2  
3   -gem "boxen", "~> 0.1"
  3 +gem "boxen", "~> 0.4"
  4 +
  5 +group :development do
  6 + gem "aws-sdk"
  7 +end
... ... @@ -3,6 +3,11 @@
3 3 specs:
4 4 addressable (2.3.2)
5 5 ansi (1.4.3)
  6 + aws-sdk (1.6.9)
  7 + httparty (~> 0.7)
  8 + json (~> 1.4)
  9 + nokogiri (>= 1.4.4)
  10 + uuidtools (~> 2.1)
6 11 boxen (0.4.0)
7 12 ansi (~> 1.4)
8 13 hiera (~> 1.0.0)
9 14  
10 15  
... ... @@ -19,13 +24,19 @@
19 24 hashie (1.2.0)
20 25 hiera (1.0.0)
21 26 highline (1.6.15)
  27 + httparty (0.9.0)
  28 + multi_json (~> 1.0)
  29 + multi_xml
  30 + json (1.7.5)
22 31 json_pure (1.7.5)
23 32 librarian-puppet (0.9.6)
24 33 json_pure
25 34 puppet
26 35 thor (~> 0.15)
27 36 multi_json (1.3.6)
  37 + multi_xml (0.5.1)
28 38 multipart-post (1.1.5)
  39 + nokogiri (1.5.5)
29 40 octokit (1.15.1)
30 41 addressable (~> 2.2)
31 42 faraday (~> 0.8)
32 43  
... ... @@ -36,10 +47,12 @@
36 47 facter (>= 1.6.11)
37 48 hiera (>= 1.0.0rc)
38 49 thor (0.16.0)
  50 + uuidtools (2.1.3)
39 51  
40 52 PLATFORMS
41 53 ruby
42 54  
43 55 DEPENDENCIES
44   - boxen (~> 0.1)
  56 + aws-sdk
  57 + boxen (~> 0.4)
... ... @@ -10,7 +10,7 @@
10 10  
11 11 1. Install XCode Command Line Tools and/or full XCode.
12 12 1. Create a new repository on GitHub as your user for your Boxen. (eg.
13   -`wfarr/my-boxen`). **Make sure it is a private repository!** for now
  13 +`wfarr/my-boxen`). **Make sure it is a private repository!**
14 14 1. Get running like so:
15 15 ```
16 16 mkdir -p ~/src/my-boxen
... ... @@ -76,4 +76,9 @@
76 76 For organization projects (read: repositories that people will be working in), please see the documentation in the projects module template we provide.
77 77  
78 78 For per-user configuration that doesn't need to be applied globally to everyone, please see the documentation in the people module template we provide.
  79 +
  80 +## Binary packages
  81 +
  82 +We support binary packaging for everything in Homebrew, RBEnv, and NVM.
  83 +See `config/boxen.rb` for the environment variables to define.
... ... @@ -6,4 +6,9 @@
6 6  
7 7 # Change the repo boxen will use.
8 8 # ENV['BOXEN_REPO_NAME'] = 'boxen/our-boxen'
  9 +
  10 +# Boxen binary packaging
  11 +# ENV["BOXEN_S3_ACCESS_KEY"] = ''
  12 +# ENV["BOXEN_S3_SECRET_KEY"] = ''
  13 +# ENV["BOXEN_S3_BUCKET"] = ''
  1 +#!/usr/bin/ruby
  2 +# Sync binary snapshots to S3.
  3 +
  4 +require "pathname"
  5 +require "tempfile"
  6 +
  7 +# Put us where we belong, in the root dir of our boxen repo.
  8 +
  9 +Dir.chdir Pathname.new(__FILE__).realpath + "../.."
  10 +
  11 +# Make sure our local dependencies are up to date.
  12 +
  13 +abort "Sorry, can't bootstrap." unless system "script/bootstrap"
  14 +
  15 +# Set up our local configuration, deps, and load path.
  16 +
  17 +load "config/basic.rb"
  18 +
  19 +require "aws-sdk"
  20 +require "boxen/config"
  21 +
  22 +access_key = ENV["BOXEN_S3_ACCESS_KEY"]
  23 +secret_key = ENV["BOXEN_S3_SECRET_KEY"]
  24 +bucket_name = ENV["BOXEN_S3_BUCKET"]
  25 +
  26 +unless access_key && secret_key && bucket_name
  27 + abort "Please set the BOXEN_S3_{ACCESS_KEY,SECRET_KEY,BUCKET} env vars."
  28 +end
  29 +
  30 +s3 = AWS::S3.new :access_key_id => access_key, :secret_access_key => secret_key
  31 +os = `sw_vers -productVersion`.strip.split(".")[0..1].join "."
  32 +
  33 +bucket = s3.buckets[bucket_name]
  34 +config = Boxen::Config.load
  35 +
  36 +# Sync Homebrew packages.
  37 +
  38 +Dir.chdir "#{config.homedir}/homebrew/Cellar" do
  39 + Dir["*/*"].each do |dir|
  40 + name, version = File.split dir
  41 +
  42 + file = "homebrew/#{os}/#{name}-#{version}.tar.bz2"
  43 + temp = Tempfile.new "homebrew"
  44 + obj = bucket.objects[file]
  45 +
  46 + next if obj.exists?
  47 +
  48 + printf "Snapshotting #{name} #{version}... "
  49 + $stdout.flush
  50 +
  51 + system "tar", "-cjf", temp.path, dir
  52 + puts "done."
  53 +
  54 + printf "Shipping #{name} #{version} to S3... "
  55 + $stdout.flush
  56 +
  57 + obj.write :acl => :public_read, :file => temp.path
  58 + puts "done."
  59 + end
  60 +end
  61 +
  62 +# Sync rbenv rubies.
  63 +
  64 +Dir.chdir "#{config.homedir}/rbenv/versions" do
  65 + Dir["*"].each do |dir|
  66 + next if File.symlink? dir
  67 +
  68 + version = File.basename dir
  69 + file = "rbenv/#{os}/#{version}.tar.bz2"
  70 + temp = Tempfile.new "rbenv"
  71 + obj = bucket.objects[file]
  72 +
  73 + next if obj.exists?
  74 +
  75 + printf "Snapshotting ruby #{version}... "
  76 + $stdout.flush
  77 +
  78 + system "tar -cjf #{temp.path} #{version}"
  79 + puts "done."
  80 +
  81 + printf "Shipping ruby #{version} to S3... "
  82 + $stdout.flush
  83 +
  84 + obj.write :acl => :public_read, :file => temp.path
  85 + puts "done."
  86 + end
  87 +end
  88 +
  89 +# Sync NVM nodes.
  90 +
  91 +Dir.chdir "#{config.homedir}/nvm" do
  92 + Dir["v*"].each do |dir|
  93 + version = File.basename dir
  94 + file = "nvm/#{os}/#{version}.tar.bz2"
  95 + temp = Tempfile.new "nvm"
  96 + obj = bucket.objects[file]
  97 +
  98 + next if obj.exists?
  99 +
  100 + printf "Snapshotting node.js #{version}... "
  101 + $stdout.flush
  102 +
  103 + system "tar -cjf #{temp.path} #{version}"
  104 + puts "done."
  105 +
  106 + printf "Shipping node.js #{version} to S3... "
  107 + $stdout.flush
  108 +
  109 + obj.write :acl => :public_read, :file => temp.path
  110 + puts "done."
  111 + end
  112 +end
vendor/cache/aws-sdk-1.6.9.gem
No preview for this file type
vendor/cache/httparty-0.9.0.gem
No preview for this file type
vendor/cache/json-1.7.5.gem
No preview for this file type
vendor/cache/multi_xml-0.5.1.gem
No preview for this file type
vendor/cache/nokogiri-1.5.5.gem
No preview for this file type
vendor/cache/uuidtools-2.1.3.gem
No preview for this file type