diff options
Diffstat (limited to 'drum')
-rwxr-xr-x | drum | 46 |
1 files changed, 13 insertions, 33 deletions
@@ -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}" |