lib/usps_flags/generate.rb in usps_flags-0.2.5 vs lib/usps_flags/generate.rb in usps_flags-0.2.6

- old
+ new

@@ -77,31 +77,21 @@ # Generate zip archives of current static image files. # # @param [Boolean] svg Generate zip archive of SVG images. # @param [Boolean] png Generate zip archive of PNG images. def zips(svg: true, png: true) - ["svg", "png"].each do |format| - begin - if binding.local_variable_get(format) - zip = "#{USPSFlags::Config.flags_dir}/ZIP/USPS_Flags.#{format}.zip" - ::File.delete(zip) if ::File.exist?(zip) - Zip::File.open(zip, Zip::File::CREATE) do |z| - Dir.glob("#{USPSFlags::Config.flags_dir}/#{format.upcase}/**/*").each do |f| - if f.split("/").last(2).first == "insignia" - filename = "insignia/#{f.split("/").last}" - z.add(filename, f) - else - z.add(f.split("/").last, f) - end - end - end - puts "Generated #{format.upcase} Zip" - end - rescue Errno::EACCES => e - puts "Error: Failed to generate #{format.upcase} Zip -> #{e.message}" - end + begin + generate_zip("svg") if svg + rescue Errno::EACCES => e + puts "Error: Failed to generate SVG Zip -> #{e.message}" end + + begin + generate_zip("png") if png + rescue Errno::EACCES => e + puts "Error: Failed to generate SVG Zip -> #{e.message}" + end end # Generate trident spec sheet as an SVG image. # # @param [String] outfile The path to save the SVG file to. If not set, prints to console. @@ -132,10 +122,30 @@ @svg_ins_file = @svg_file.gsub("/SVG/", "/SVG/insignia/") @png_ins_file = @svg_file.gsub("/SVG/", "/PNG/insignia/").gsub(".svg", ".png") [@svg_file, @png_file, @svg_ins_file, @png_ins_file] end + def generate_zip(type) + raise "Error: Flags directory not found." unless ::Dir.exist?("#{USPSFlags::Config.flags_dir}/ZIP") + + zip = "#{USPSFlags::Config.flags_dir}/ZIP/USPS_Flags.#{type}.zip" + ::File.delete(zip) if ::File.exist?(zip) + + ::Zip::File.open(zip, Zip::File::CREATE) do |z| + ::Dir.glob("#{USPSFlags::Config.flags_dir}/#{type.upcase}/**/*").each do |f| + add_to_zip(z, f) + end + end + puts "Generated #{type.upcase} Zip" + end + + def add_to_zip(z, f) + filename = f.split("/").last + filename = "insignia/#{filename}" if f.split("/").last(2).first == "insignia" + z.add(filename, f) + end + def generate_static_images_for(flag, svg: true, png: true) start_time = Time.now # USPSFlags::Helpers.log " | | _ _ _ _ _ | \r".rjust(USPSFlags::Helpers.max_flag_name_length+31, " ") flag = flag.upcase USPSFlags::Helpers.log "#{flag.rjust(USPSFlags::Helpers.max_flag_name_length)} |" @@ -157,58 +167,69 @@ run_time = (Time.now - start_time).round(4).to_s[(0..5)].ljust(6, "0") USPSFlags::Helpers.log " | #{run_time} s\n" end def generate_static_svg(flag) - begin - USPSFlags::Helpers.log " " - svg flag, outfile: @svg_file, scale: 1 - USPSFlags::Helpers.log "S" - if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag) - USPSFlags::Helpers.log "-" - else - svg flag, field: false, outfile: @svg_ins_file, scale: 1 - USPSFlags::Helpers.log "I" - end - rescue => e - USPSFlags::Helpers.log "x -> #{e.message}" + USPSFlags::Helpers.log " " + svg flag, outfile: @svg_file, scale: 1 + USPSFlags::Helpers.log "S" + if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag) + USPSFlags::Helpers.log "-" + else + svg flag, field: false, outfile: @svg_ins_file, scale: 1 + USPSFlags::Helpers.log "I" end + rescue => e + USPSFlags::Helpers.log "x -> #{e.message}" end def generate_static_png(flag) USPSFlags::Helpers.log " | " - begin - USPSFlags::Helpers.log "…\b" - png(File.read(@svg_file), outfile: @png_file) unless ::File.exist?(@png_file) - USPSFlags::Helpers.log "F" - if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag) - USPSFlags::Helpers.log "-" - else - USPSFlags::Helpers.log "…\b" - png(File.read(@svg_ins_file), outfile: @png_ins_file, trim: true) unless ::File.exist?(@png_ins_file) - USPSFlags::Helpers.log "I" - end - USPSFlags::Helpers.png_sizes.keys.each do |size| - USPSFlags::Helpers.log(".") and next if ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/#{flag}.#{size}.png") + generate_fullsize_png + generate_fullsize_png_insignia(flag) + generate_reduced_size_pngs + rescue => e + USPSFlags::Helpers.log "x -> #{e.message}" + end - USPSFlags::Helpers.log "…\b" - size, size_key = USPSFlags::Helpers.size_and_key(size: size, flag: flag) - USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) if USPSFlags::Helpers.valid_flags(:insignia).include?(flag) - USPSFlags::Helpers.log USPSFlags::Helpers.png_sizes[size_key] - if ::File.exist?(@png_ins_file) && ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/insignia/#{flag}.#{size}.png") - USPSFlags::Helpers.log "." - elsif ::File.exist?(@png_ins_file) && MiniMagick::Image.open(@png_ins_file)[:width] > size && USPSFlags::Helpers.valid_flags(:insignia).include?(flag) - USPSFlags::Helpers.log "…\b" - USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) - USPSFlags::Helpers.log "i" - elsif ::File.exist?(@png_ins_file) - USPSFlags::Helpers.log "+" - else - USPSFlags::Helpers.log "-" - end - end - rescue => e - USPSFlags::Helpers.log "x -> #{e.message}" + def generate_fullsize_png + png(File.read(@svg_file), outfile: @png_file) unless ::File.exist?(@png_file) + USPSFlags::Helpers.log "F" + end + + def generate_fullsize_png_insignia(flag) + if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag) + USPSFlags::Helpers.log "-" + else + png(File.read(@svg_ins_file), outfile: @png_ins_file, trim: true) unless ::File.exist?(@png_ins_file) + USPSFlags::Helpers.log "I" + end + end + + def generate_reduced_size_pngs + USPSFlags::Helpers.png_sizes.keys.each do |size| + USPSFlags::Helpers.log(".") and next if ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/#{flag}.#{size}.png") + size, size_key = USPSFlags::Helpers.size_and_key(size: size, flag: flag) + generate_smaller_png(flag, size, size_key) + generate_smaller_png_insignia(flag, size, size_key) + end + end + + def generate_smaller_png(flag, size, size_key) + USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) if USPSFlags::Helpers.valid_flags(:insignia).include?(flag) + USPSFlags::Helpers.log USPSFlags::Helpers.png_sizes[size_key] + end + + def generate_smaller_png_insignia(flag, size, size_key) + if ::File.exist?(@png_ins_file) && ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/insignia/#{flag}.#{size}.png") + USPSFlags::Helpers.log "." + elsif ::File.exist?(@png_ins_file) && MiniMagick::Image.open(@png_ins_file)[:width] > size && USPSFlags::Helpers.valid_flags(:insignia).include?(flag) + USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) + USPSFlags::Helpers.log "i" + elsif ::File.exist?(@png_ins_file) + USPSFlags::Helpers.log "+" + else + USPSFlags::Helpers.log "-" end end end end