class Imgzet::CLI
CLI
class is responsible for handling command-line arguments.
Public Instance Methods
run(args = [])
click to toggle source
CLI
is used when running imgzet from command line (check bin/imgzet) file.
# File lib/imgzet/cli.rb, line 14 def run(args = []) if !Dir.exists?("notes") || !Dir.exists?("images") || !Dir.exists?("input") puts "Create notes, images and input folders" return end if args.first == "names" # TODO: go over notes and generate slugs from headlines else Dir["input/*"].each do |input| next if input == "." next if input == ".." if File.directory?(input) process_input_foler(input) else process_input_file(input) end end 0 end end
Private Instance Methods
process_input_file(input_image_file)
click to toggle source
# File lib/imgzet/cli.rb, line 68 def process_input_file(input_image_file) slug = temp_slug() note_file = File.join("notes", "#{slug}.md") image_file = File.join("images", "#{slug}#{File.extname(input_image_file)}") FileUtils.cp(input_image_file, image_file) File.open(note_file, "w") do |f| template = File.read(File.join(Dir.pwd, "note_template.md")) template.gsub!("IMG", "") f.puts(template) end FileUtils.rm(input_image_file) system `code .` system `code #{note_file}` end
process_input_foler(folder)
click to toggle source
# File lib/imgzet/cli.rb, line 40 def process_input_foler(folder) slug = temp_slug() note_file = File.join("notes", "#{slug}.md") image_folder = File.join("images", slug) Dir.mkdir(image_folder) images = [] Dir[File.join(folder, "**/*")].sort_by { |f| File.mtime(f) }.each do |image| image_file_name = "#{temp_slug}#{File.extname(image)}" image_file = File.join(image_folder, image_file_name) FileUtils.cp(image, image_file) images.push(image_file) end File.open(note_file, "w") do |f| template = File.read(File.join(Dir.pwd, "note_template.md")) template.gsub!("IMG", images.map { |image_file| "" }.join("\n")) f.puts(template) end FileUtils.rm_rf(folder) end
temp_slug()
click to toggle source
# File lib/imgzet/cli.rb, line 88 def temp_slug random_slug = 6.times.map { ("a".."z").to_a.sample }.join timestamp = Time.now.strftime("%Y%m%d%H%M") "#{timestamp}-temp-#{random_slug}" end