diff options
-rw-r--r-- | Readme.textile | 22 | ||||
-rwxr-xr-x | drum | 46 | ||||
-rw-r--r-- | example/.drumkit (renamed from test/.drumkit) | 1 | ||||
-rw-r--r-- | example/Gemfile | 2 | ||||
-rwxr-xr-x | example/example.rb (renamed from test/test.rb) | 1 |
5 files changed, 26 insertions, 46 deletions
diff --git a/Readme.textile b/Readme.textile index b2aa905..da469eb 100644 --- a/Readme.textile +++ b/Readme.textile @@ -1,12 +1,11 @@ h1. DRuM: The Docker Ruby Manager -p. This is a TERRIBLE alternative to RVM, that uses docker, because why not. +p. This is a TERRIBLE alternative to RVM, that uses docker, because why not. You need to be root or have sudo or be in the docker group, because docker. -h2. Use +h2. Example bc.. cd test drum bass -drum stick sinatra drum kick drum snare drum roll -- -p4567:4567 @@ -15,17 +14,16 @@ h2. Bass Drums p. Just a ruby image of some form. By default, ruby:alpine. -bc.. drum bass -drum bass slim -drum bass jruby: -drum bass ruby:2.6 +bc.. drum bass # ruby:alpine +drum bass slim # Just a tag, ruby:slim +drum bass jruby: # Just an image, jruby:latest +drum bass ruby:2.6 # Image and tag, ruby:2.6 -h2. Kick Drums, and Drum Sticks +h2. Kick Drums -p. Drum Sticks are DRuM's built in gem manager. (I should really just use bundler.) A Kick Drum is a Bass Drum with the Drum Sticks installed. +p. A Kick Drum is a Bass Drum with your gems installed. -bc.. drum stick sinatra -drum kick +bc. drum kick h2. Snare Drums @@ -38,4 +36,4 @@ h2. Drum Rolls p. This runs the container. bc.. drum roll -drum roll -- -p 4567:4567 +drum roll -- -p123:456 @@ -6,7 +6,6 @@ require 'tempfile' OPTIONS = OpenStruct.new({ noop: false, - verbose: false, drumkit: ".drumkit" }) @@ -25,7 +24,6 @@ class Drumkit @bassdrum = nil @kickdrum = nil @snaredrum = nil - @drumsticks = [] lines.each do |line| case line @@ -35,8 +33,6 @@ class Drumkit @kickdrum = line[9..-1] when /^SNAREDRUM/ @snaredrum = line[10..-1] - when /^DRUMSTICK/ - @drumsticks << line[10..-1] end end end @@ -51,8 +47,7 @@ class Drumkit "This file will be modified automatically. Only make changes if you know what you are doing. Otherwise, use drum.\n\n" + (@bassdrum ? "BASSDRUM #{@bassdrum}\n" : "") + (@kickdrum ? "KICKDRUM #{@kickdrum}\n" : "") + - (@snaredrum ? "SNAREDRUM #{@snaredrum}\n" : "") + - @drumsticks.map{|s| "DRUMSTICK #{s}"}.join("\n") + (@snaredrum ? "SNAREDRUM #{@snaredrum}\n" : "") end end @@ -79,10 +74,6 @@ parser = OptionParser.new do |opt| opt.on("-n", "--noop", "--dry-run", "Dry run, don't actually *do* anything") do OPTIONS.noop = true - OPTIONS.verbose = true - end - opt.on("-v", "--verbose", "Explain what's happening") do - OPTIONS.verbose = true end opt.on("-d", "--drumkit", :REQUIRED, "Specify drumkit file (default: .drumkit)") do |dk| OPTIONS.drumkit = dk @@ -128,40 +119,34 @@ case COMMAND bassdrum = DRUMKIT.bassdrum end end - info "Fetching Bass Drum: #{bassdrum}" if OPTIONS.verbose + info "Fetching Bass Drum: #{bassdrum}" if OPTIONS.noop system "docker pull #{bassdrum}" unless OPTIONS.noop DRUMKIT.bassdrum = bassdrum unless OPTIONS.noop when "kick" error("No Bass Drum specified.", 1) if DRUMKIT.bassdrum.nil? - if !ARGV[0].nil? - kickdrum = ARGV[0].strip + if DRUMKIT.kickdrum.nil? + kickdrum = "drum-bass-#{DRUMKIT.bassdrum.gsub(/:/,"_")}-kick-#{File.basename(Dir.pwd)}" else - if DRUMKIT.kickdrum.nil? - kickdrum = "drum-bass-#{DRUMKIT.bassdrum.gsub(/:/,"_")}-kick-#{File.basename(Dir.pwd)}" - else - kickdrum = DRUMKIT.kickdrum - end + kickdrum = DRUMKIT.kickdrum end - puts "Building Kick Drum: #{kickdrum}" if OPTIONS.verbose + puts "Building Kick Drum: #{kickdrum}" if OPTIONS.noop Tempfile.open("drum-tmp-dockerfile", Dir.pwd) do |f| f.puts "FROM #{DRUMKIT.bassdrum}" - f.puts "RUN gem install --no-document #{DRUMKIT.drumsticks.join(" ")}" + f.puts "COPY Gemfile* ./" + f.puts "RUN bundle install" f.flush system "docker build -t #{kickdrum} -f #{File.basename(f)} ." + system "docker run #{kickdrum} cat Gemfile.lock > Gemfile.lock" end unless OPTIONS.noop DRUMKIT.kickdrum = kickdrum unless OPTIONS.noop when "snare" error("No Kick Drum specified.", 1) if DRUMKIT.kickdrum.nil? - if !ARGV[0].nil? - snaredrum = ARGV[0].strip + if DRUMKIT.snaredrum.nil? + snaredrum = "#{DRUMKIT.kickdrum}-snare-#{entrypoint.gsub(/[\/.]/, "_")}" else - if DRUMKIT.snaredrum.nil? - snaredrum = "#{DRUMKIT.kickdrum}-snare-#{entrypoint.gsub(/[\/.]/, "_")}" - else - snaredrum = DRUMKIT.snaredrum - end + snaredrum = DRUMKIT.snaredrum end - puts "Creating Snare Drum: #{snaredrum}" if OPTIONS.verbose + puts "Creating Snare Drum: #{snaredrum}" if OPTIONS.noop Tempfile.open("drum-tmp-dockerfile", Dir.pwd) do |f| f.puts "FROM #{DRUMKIT.kickdrum}" f.puts "COPY . ." @@ -170,11 +155,6 @@ case COMMAND system "docker build -t #{snaredrum} -f #{File.basename(f)} ." end unless OPTIONS.noop DRUMKIT.snaredrum = snaredrum unless OPTIONS.noop - when "stick" - error("Specify drumstick", 1) if ARGV[0].nil? - drumstick = ARGV[0].strip - info "Adding Drumstick: #{drumstick}" if OPTIONS.verbose - DRUMKIT.add_stick(drumstick) unless OPTIONS.noop when "roll" error("No Snare Drum specified.", 1) if DRUMKIT.snaredrum.nil? system "docker run #{ARGV.join(" ")} #{DRUMKIT.snaredrum}" diff --git a/test/.drumkit b/example/.drumkit index 6b6b833..e8b4f81 100644 --- a/test/.drumkit +++ b/example/.drumkit @@ -3,4 +3,3 @@ This file will be modified automatically. Only make changes if you know what you BASSDRUM ruby:alpine KICKDRUM drum-bass-ruby_alpine-kick-test SNAREDRUM drum-bass-ruby_alpine-kick-test-snare-test_rb -DRUMSTICK sinatra diff --git a/example/Gemfile b/example/Gemfile new file mode 100644 index 0000000..862b4cc --- /dev/null +++ b/example/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem "sinatra" diff --git a/test/test.rb b/example/example.rb index 3df8653..5aed8cb 100755 --- a/test/test.rb +++ b/example/example.rb @@ -3,6 +3,7 @@ require 'sinatra' set :bind, '0.0.0.0' +set :port, 80 get '/' do 'Put this in your pipe & smoke it!' |