From eb1fd5b48fc4a86dd7c5080695ac10ad4842a3ed Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Wed, 9 Jan 2019 20:28:56 +0000 Subject: Change test to example. Change drumsticks to bundler. Remove needless bits of "futureproofing" from drum --- Readme.textile | 22 ++++++++++------------ drum | 46 +++++++++++++--------------------------------- example/.drumkit | 5 +++++ example/Gemfile | 2 ++ example/example.rb | 10 ++++++++++ test/.drumkit | 6 ------ test/test.rb | 9 --------- 7 files changed, 40 insertions(+), 60 deletions(-) create mode 100644 example/.drumkit create mode 100644 example/Gemfile create mode 100755 example/example.rb delete mode 100644 test/.drumkit delete mode 100755 test/test.rb 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 diff --git a/drum b/drum index 662387b..b939374 100755 --- a/drum +++ b/drum @@ -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/example/.drumkit b/example/.drumkit new file mode 100644 index 0000000..e8b4f81 --- /dev/null +++ b/example/.drumkit @@ -0,0 +1,5 @@ +This file will be modified automatically. Only make changes if you know what you are doing. Otherwise, use drum. + +BASSDRUM ruby:alpine +KICKDRUM drum-bass-ruby_alpine-kick-test +SNAREDRUM drum-bass-ruby_alpine-kick-test-snare-test_rb 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/example/example.rb b/example/example.rb new file mode 100755 index 0000000..5aed8cb --- /dev/null +++ b/example/example.rb @@ -0,0 +1,10 @@ +#!/usr/bin/env ruby + +require 'sinatra' + +set :bind, '0.0.0.0' +set :port, 80 + +get '/' do + 'Put this in your pipe & smoke it!' +end diff --git a/test/.drumkit b/test/.drumkit deleted file mode 100644 index 6b6b833..0000000 --- a/test/.drumkit +++ /dev/null @@ -1,6 +0,0 @@ -This file will be modified automatically. Only make changes if you know what you are doing. Otherwise, use drum. - -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/test/test.rb b/test/test.rb deleted file mode 100755 index 3df8653..0000000 --- a/test/test.rb +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env ruby - -require 'sinatra' - -set :bind, '0.0.0.0' - -get '/' do - 'Put this in your pipe & smoke it!' -end -- cgit v1.2.1