/ generate-xcode-imageset
generate-xcode-imageset
1 #!/usr/bin/env ruby -w 2 3 require 'json' 4 5 def main 6 while dir = ARGV.shift 7 unless File.directory? dir 8 puts "[warn] Skipping non-directory: #{dir}" 9 next 10 end 11 12 all_images = Dir[File.join(dir, '*@[23]x.png')].map { |f| File.basename f } 13 image3x = File.basename Dir[File.join(dir, '*@3x.png')].first 14 image2x = File.basename Dir[File.join(dir, '*@2x.png')].first 15 image1x = (all_images - [image2x, image3x]).first 16 unless [2, 3].include?(all_images.size) && image2x && image3x 17 puts "[warn] Skipping #{dir} because 2x and 3x images are required. 1x image is optional. Max 3 images." 18 next 19 end 20 21 images = [image1x, image2x, image3x] 22 scale = 0 23 imageset_images = images 24 .map { |filename| 25 scale += 1 26 filename && { 27 idiom: 'universal', 28 filename: filename, 29 scale: "#{scale}x" 30 } 31 } 32 .compact 33 imageset = { 34 images: imageset_images, 35 info: { 36 version: 1, 37 author: 'generate-xcode-imageset' 38 } 39 } 40 json = JSON.pretty_generate(imageset) 41 path = File.join(dir, 'Contents.json') 42 File.write(path, json) 43 images_written = images.compact 44 puts "* Wrote #{images_written.size} images to #{path}: #{images_written.join(', ')}" 45 end 46 end 47 48 main if $0 == __FILE__