bin/propre in propre-0.1.1 vs bin/propre in propre-0.2.0
- old
+ new
@@ -1,72 +1,44 @@
#!/usr/bin/env ruby
+require 'thor'
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
-require 'optparse'
require 'propre'
+require 'propre/version'
-options = {}
-OptionParser.new do |opt|
- opt.banner = "Usage: #{ File.basename($0) } [OPTION]... SOURCE..."
-
- opt.on('-i', '--interactive', 'Run interactively') do |v|
- options[:interactive] = v
+class CLI < Thor
+ include Propre
+ desc 'lint [FILENAME...]', 'Sanitize the specified file. Use --dry for dry run'
+ option :dry, type: :boolean
+ option :color, type: :boolean, default: true
+ def lint(*args)
+ String.disable_colorization(true) unless options[:color]
+ args.each do |filename|
+ basename, newname, metadata = Propre.basename_newname_metadata(filename)
+ if options[:dry]
+ unchanged = basename == newname ? :green : :yellow
+ puts "#{filename} -> #{newname}#{File.extname(filename)}".colorize(unchanged)
+ else
+ File.rename(filename, "#{newname}#{File.extname(filename)}")
+ end
+ end
end
+ default_task :lint
- opt.on('-R', '--recursive', 'Run recursively') do |v|
- options[:recursive] = v
+ desc 'metadata [FILENAME]', 'Show metadata about the specified movie or episode'
+ option :format, default: 'json'
+ def metadata(filename)
+ basename, newname, metadata = Propre.basename_newname_metadata(filename)
+ metadata[:title] = newname
+ puts metadata.to_json
end
- opt.on('-V', '--video-only', 'Search for video files only') do |v|
- options[:videonly] = v
+ map %w(--version -v) => :__version
+ desc '--version, -v', 'Show version information about this program and quit.'
+ def __version
+ puts "#{Propre} - v#{Version::VERSION}"
end
-
- opt.on('-s', '--sanitize', 'Sanitize filename before search') do |v|
- options[:sanitize] = v
- end
-
- opt.on('-d', '--dotfile', 'Don\'t ignore .dotfile') do |v|
- options[:dotfile] = v
- end
-
- opt.on_tail("-v", "--version", "Show version information about this program and quit.") do
- puts "#{Propre} - v#{Propre::VERSION}"
- exit
- end
-
- opt.on_tail("-h", "--help", "--usage", "Show this help message and quit.") do |v|
- puts opt.help
- exit
- end
-
- options[:help] = opt.help
-
-end.parse!
-
-def main(options)
- if ARGV.size < 1
- puts options[:help]
- else
- propre = Propre.new(options)
- if File.directory?(ARGV[0])
- puts "Searching for movies in directory..."
- propre.crawlDirectory(ARGV[0])
- end
-
- if File.file?(ARGV[0])
- puts "Searching for movie title..."
- if !propre.searchMovieFromFile(ARGV[0])
- puts "No movie found for #{ARGV[0]}"
- end
- end
- end
end
-begin
- main(options)
-rescue Interrupt
- puts "\nExiting..."
-rescue StandardError => e
- puts e
-end
\ No newline at end of file
+CLI.start(ARGV)