bin/dropcaster in dropcaster-0.0.4 vs bin/dropcaster in dropcaster-0.0.5.rc1

- old
+ new

@@ -1,117 +1,129 @@ -#!/usr/bin/env ruby - -$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) - -require 'rubygems' -require 'yaml' - -help = <<HELP -Dropcaster is a podcast feed generator for the command line. - -Author: Nicolas E. Rabenau nerab@gmx.at -Homepage: http://nerab.github.com/dropcaster/ - -Basic Usage: - - dropcaster Prints a podcast feed document for the mp3 files in the current directory. - dropcaster [FILE]... Prints a podcast feed document for FILES - dropcaster [DIR]... Prints a podcast feed document for the mp3 files in DIR - -Options: -HELP - -def usage - "Run '#{File.basename(__FILE__)} --help' for further help." -end - -require 'optparse' -require 'dropcaster' - -options = Hash.new -options[:auto_detect_channel_file] = true - -opts = OptionParser.new do |opts| - opts.banner = help - - opts.on("--verbose", "Verbose mode - displays additional diagnostic information") do |file| - Dropcaster.logger = Logger.new(STDERR) - Dropcaster.logger.formatter = Dropcaster::LogFormatter.new - Dropcaster.logger.level = Logger::INFO - end - - opts.on("--channel FILE", "Read the channel definition from FILE instead of channel.yml in the current directory.") do |file| - begin - Dropcaster.logger.info "Reading channel definition from #{file}" - options = YAML.load_file(file).merge(options) - options[:auto_detect_channel_file] = false - rescue - Dropcaster.logger.error "Could not load channel definition. #{$!.message}" - Dropcaster.logger.info $!.backtrace - exit(1) - end - end - - opts.on("--title STRING", "Use STRING as the channel's title. Overrides settings read from channel definition file.") do |title| - Dropcaster.logger.info "Setting channel title to '#{title}' via command line" - options[:title] = title - end - - opts.on("--url URL", "Use URL as the channel's url. Overrides settings read from channel definition file.") do |url| - Dropcaster.logger.info "Setting channel URL to '#{url}' via command line" - options[:url] = url - end - - opts.on("--description STRING", "Use STRING as the channel's description. Overrides settings read from channel definition file.") do |description| - Dropcaster.logger.info "Setting channel description to '#{description}' via command line" - options[:description] = description - end - - opts.on("--enclosures URL", "Use URL as the base URL for the channel's enclosures. Overrides settings read from channel definition file.") do |enclosures_url| - Dropcaster.logger.info "Setting enclosures base URL to '#{enclosures_url}' via command line" - options[:enclosures_url] = enclosures_url - end - - opts.on("--image URL", "Use URL as the channel's image URL. Overrides settings read from channel definition file.") do |image_url| - Dropcaster.logger.info "Setting image URL to '#{image_url}' via command line" - options[:image_url] = image_url - end - - opts.on("--channel-template FILE", "Use FILE as template for generating the channel feed. Overrides the default that comes with Dropcaster.") do |file| - Dropcaster.logger.info "Using'#{file}' as channel template file" - options[:channel_template] = file - end - - opts.on("--version", "Display current version") do - puts "#{File.basename(__FILE__)} " + Dropcaster::VERSION - exit 0 - end -end - -opts.parse! -sources = ARGV.blank? ? '.' : ARGV - -if options[:auto_detect_channel_file] - # There was no channel file specified, so we try to load channel.yml from sources dir - channel_file = Dropcaster::ChannelFileLocator.locate(sources) - - if File.exists?(channel_file) - Dropcaster.logger.info "Auto-detected channel file at #{channel_file}" - options_from_yaml = YAML.load_file(channel_file) - options = options_from_yaml.merge(options) - else - Dropcaster.logger.error "No channel file found at #{channel_file})" - Dropcaster.logger.info usage - exit(1) # No way to continue without a channel definition - end -end - -Dropcaster.logger.info "Generating the channel with these options: #{options.inspect}" - -begin - puts Dropcaster::Channel.new(sources, options).to_rss -rescue - Dropcaster.logger.error $!.message - Dropcaster.logger.debug $!.backtrace - Dropcaster.logger.info usage - exit(1) -end +#!/usr/bin/env ruby + +$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) + +require 'yaml' + +help = <<HELP +Dropcaster is a podcast feed generator for the command line. + +Author: Nicolas E. Rabenau nerab@gmx.at +Homepage: http://rubydoc.info/gems/dropcaster/file/README.md + +Basic Usage: + + dropcaster Prints a podcast feed document for the mp3 files in the current directory. + dropcaster [FILE]... Prints a podcast feed document for FILES + dropcaster [DIR]... Prints a podcast feed document for the mp3 files in DIR + +Options: +HELP + +def usage + "Run '#{File.basename(__FILE__)} --help' for further help." +end + +require 'optparse' +require 'dropcaster' + +options = Hash.new +options[:auto_detect_channel_file] = true + +opts = OptionParser.new do |opts| + opts.banner = help + + opts.on("--verbose", "Verbose mode - displays additional diagnostic information") do |file| + Dropcaster.logger = Logger.new(STDERR) + Dropcaster.logger.formatter = Dropcaster::LogFormatter.new + Dropcaster.logger.level = Logger::INFO + end + + opts.on("--trace", "Verbose mode - displays additional diagnostic information") do |file| + Dropcaster.logger = Logger.new(STDERR) + Dropcaster.logger.formatter = Dropcaster::LogFormatter.new + Dropcaster.logger.level = Logger::DEBUG + end + + opts.on("--channel FILE", "Read the channel definition from FILE instead of channel.yml in the current directory.") do |file| + begin + Dropcaster.logger.info "Reading channel definition from #{file}" + options = YAML.load_file(file).merge(options) + options[:auto_detect_channel_file] = false + rescue + Dropcaster.logger.error "Could not load channel definition. #{$!.message}" + Dropcaster.logger.info $!.backtrace + exit(1) + end + end + + opts.on("--title STRING", "Use STRING as the channel's title. Overrides settings read from channel definition file.") do |title| + Dropcaster.logger.info "Setting channel title to '#{title}' via command line" + options[:title] = title + end + + opts.on("--subtitle STRING", "Use STRING as the channel's subtitle. Overrides settings read from channel definition file.") do |subtitle| + Dropcaster.logger.info "Setting channel subtitle to '#{subtitle}' via command line" + options[:subtitle] = subtitle + end + + opts.on("--url URL", "Use URL as the channel's url. Overrides settings read from channel definition file.") do |url| + Dropcaster.logger.info "Setting channel URL to '#{url}' via command line" + options[:url] = url + end + + opts.on("--description STRING", "Use STRING as the channel's description. Overrides settings read from channel definition file.") do |description| + Dropcaster.logger.info "Setting channel description to '#{description}' via command line" + options[:description] = description + end + + opts.on("--enclosures URL", "Use URL as the base URL for the channel's enclosures. Overrides settings read from channel definition file.") do |enclosures_url| + Dropcaster.logger.info "Setting enclosures base URL to '#{enclosures_url}' via command line" + options[:enclosures_url] = enclosures_url + end + + opts.on("--image URL", "Use URL as the channel's image URL. Overrides settings read from channel definition file.") do |image_url| + Dropcaster.logger.info "Setting image URL to '#{image_url}' via command line" + options[:image_url] = image_url + end + + opts.on("--channel-template FILE", "Use FILE as template for generating the channel feed. Overrides the default that comes with Dropcaster.") do |file| + Dropcaster.logger.info "Using'#{file}' as channel template file" + options[:channel_template] = file + end + + opts.on("--version", "Display current version") do + puts "#{File.basename(__FILE__)} " + Dropcaster::VERSION + exit 0 + end +end + +opts.parse! +sources = ARGV.blank? ? '.' : ARGV + +if options[:auto_detect_channel_file] + # There was no channel file specified, so we try to load channel.yml from sources dir + channel_file = Dropcaster::ChannelFileLocator.locate(sources) + + if File.exists?(channel_file) + Dropcaster.logger.info "Auto-detected channel file at #{channel_file}" + options_from_yaml = YAML.load_file(channel_file) + options = options_from_yaml.merge(options) + else + Dropcaster.logger.error "No channel file found at #{channel_file})" + Dropcaster.logger.info usage + exit(1) # No way to continue without a channel definition + end +end + +Dropcaster.logger.info "Generating the channel with these options: #{options.inspect}" + +begin + puts Dropcaster::Channel.new(sources, options).to_rss +rescue + Dropcaster.logger.error $!.message + $!.backtrace.each do |line| + Dropcaster.logger.debug(line) + end + Dropcaster.logger.info usage + exit(1) +end