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