BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

make_module_screenshots.rb (2291B)


      1 #!/usr/bin/env ruby
      2 
      3 require 'fileutils'
      4 
      5 base_dir = File.absolute_path(File.join(File.dirname($0), '..'))
      6 
      7 skins = ['default']
      8 Dir.glob(File.join(base_dir, 'res-src', 'skin-*.css')).each do |fn|
      9   if File.basename(fn) =~ /^skin-(\w+).css$/
     10     skins << $1
     11   end
     12 end
     13 
     14 screens_dir = File.join(base_dir, 'doc', 'module_screenshots')
     15 if Dir.exist?(screens_dir)
     16   skins.each do |skin|
     17     skin_dir = File.join(screens_dir, skin)
     18     if Dir.exist?(skin_dir)
     19       puts "Deleting #{skin_dir}..."
     20       FileUtils.rm_rf(skin_dir)
     21     end
     22   end
     23 else
     24   puts "Creating #{screens_dir}..."
     25   FileUtils.mkdir(screens_dir)
     26 end
     27 
     28 rack_dir = File.absolute_path(File.join(base_dir, '..', '..'))
     29 prefs_file = File.join(rack_dir, 'Bogaudio.json')
     30 backup_prefs_file = File.join(rack_dir, 'Bogaudio.json.bak')
     31 if File.exist?(prefs_file)
     32   puts "Backing up #{prefs_file} to #{backup_prefs_file}..."
     33   File.write(backup_prefs_file, File.read(prefs_file))
     34 end
     35 
     36 rack_output_dir = File.join(rack_dir, 'screenshots', 'Bogaudio')
     37 skins.each do |skin|
     38   if Dir.exist?(rack_output_dir)
     39     puts "Deleting #{rack_output_dir}..."
     40     FileUtils.rm_rf(rack_output_dir)
     41   end
     42 
     43   puts "Generating screens for skin #{skin}..."
     44   if skin == 'default'
     45     FileUtils.rm_f(prefs_file)
     46   else
     47     File.write(prefs_file, %Q|{ "skins": { "default": "#{skin}" } }|)
     48   end
     49 
     50   FileUtils.cd(rack_dir)
     51   out = `./Rack -d -t 1 2>&1`
     52   unless $?.success?
     53     STDERR.puts "Calling Rack failed:\n#{out}"
     54     exit 1
     55   end
     56 
     57   unless Dir.exist?(rack_output_dir) && File.readable?(File.join(rack_output_dir, 'Bogaudio-ADSR.png'))
     58     STDERR.puts "Rack produced no screenshots?  Check #{rack_output_dir}...\nRack output was:\n#{out}"
     59     exit 1
     60   end
     61 
     62   skin_dir = File.join(screens_dir, skin)
     63   unless Dir.exist?(skin_dir)
     64     puts "Creating #{skin_dir}..."
     65     FileUtils.mkdir(skin_dir)
     66   end
     67 
     68   puts "Copying screens to #{skin_dir}..."
     69   count = 0
     70   Dir.glob(File.join(rack_output_dir, '*.png')).each do |fn|
     71     count += 1
     72     out_fn = File.join(skin_dir, File.basename(fn).sub(/^Bogaudio-/, ''))
     73     FileUtils.cp(fn, out_fn)
     74   end
     75   puts "...copied #{count}"
     76 end
     77 
     78 if File.exist?(backup_prefs_file)
     79   puts "Restoring #{prefs_file}, deleting backup..."
     80   File.write(prefs_file, File.read(backup_prefs_file))
     81   FileUtils.rm_f(backup_prefs_file)
     82 end