class Cryptopunks::Tool
Public Instance Methods
run( args )
click to toggle source
# File lib/cryptopunks.rb, line 34 def run( args ) opts = { zoom: 1, outdir: '.', file: './punks.png', offset: 0, } parser = OptionParser.new do |cmd| cmd.banner = "Usage: punk (or cryptopunk) [options] IDs" cmd.separator " Mint punk characters from composite (#{opts[:file]}) - for IDs use 0 to 9999" cmd.separator "" cmd.separator " Options:" cmd.on("-z", "--zoom=ZOOM", "Zoom factor x2, x4, x8, etc. (default: #{opts[:zoom]})", Integer ) do |zoom| opts[:zoom] = zoom end cmd.on("-d", "--dir=DIR", "Output directory (default: #{opts[:outdir]})", String ) do |outdir| opts[:outdir] = outdir end cmd.on("-f", "--file=FILE", "True Official Genuine CryptoPunks™ composite image (default: #{opts[:file]})", String ) do |file| opts[:file] = file end cmd.on("--offset=NUM", "Start counting at offset (default: #{opts[:offset]})", Integer ) do |offset| opts[:offset] = offset end cmd.on("-h", "--help", "Prints this help") do puts cmd exit end end parser.parse!( args ) puts "opts:" pp opts puts "==> reading >#{opts[:file]}<..." punks = Image::Composite.read( opts[:file] ) puts " setting zoom to #{opts[:zoom]}x" if opts[:zoom] != 1 ## make sure outdir exits (default is current working dir e.g. .) FileUtils.mkdir_p( opts[:outdir] ) unless Dir.exist?( opts[:outdir] ) args.each_with_index do |arg,index| punk_index = arg.to_i punk = punks[ punk_index ] punk_name = "punk-" + "%04d" % (punk_index + opts[:offset]) ## if zoom - add x2,x4 or such if opts[:zoom] != 1 punk = punk.zoom( opts[:zoom] ) punk_name << "x#{opts[:zoom]}" end path = "#{opts[:outdir]}/#{punk_name}.png" puts "==> (#{index+1}/#{args.size}) minting punk ##{punk_index+opts[:offset]}; writing to >#{path}<..." punk.save( path ) end puts "done" end