class ChangelogMerger::Parser
Public Class Methods
parse_options()
click to toggle source
# File lib/changelog_merger/parser.rb, line 8 def self.parse_options # :include_labels => %w(bug enhancement), options = {:message => 'Added automatically generated change log file', :output => 'CHANGELOG.md' # :dry_run => true } parser = OptionParser.new { |opts| opts.banner = 'Usage: changelog_merger [options]' opts.on('-r', '--repo [REPO]', 'destination repo in format user/repo') do |last| options[:repo] = last end opts.on('-d', '--dry-run', 'dry run') do |last| options[:dry_run] = last end opts.on('-x', 'just generate log and open it') do |last| options[:run_wo_pr] = last end opts.on('-o', '--output [NAME]', 'Output file. Default is CHANGELOG.md') do |last| options[:output] = last end opts.on('-t', '--token [TOKEN]', 'To make more than 50 requests per hour your GitHub token required. You can generate it here: https://github.com/settings/tokens/new') do |last| options[:token] = last end opts.on('-m', '--message [MESSAGE]', 'Message for pull request') do |last| options[:message] = last end options[:verbose] = true opts.on('--[no-]verbose', 'Run verbosely. Default is true') do |v| options[:verbose] = v end opts.on('-v', '--version', 'Print version number') do |v| puts "Version: #{ChangelogMerger::VERSION}" exit end options[:path] = `echo ~`.strip! opts.on('-p', '--path', 'Path to save projects') do |v| options[:path] = v end opts.on('-h', '--help', 'Displays Help') do puts opts exit end } begin parser.parse! if ARGV.count == 1 options[:repo] = ARGV[0] end mandatory = [:repo] # Enforce the presence of missing = mandatory.select { |param| options[param].nil? } # the -t and -f switches unless missing.empty? puts "Missing options: #{missing.join(', ')}" puts parser exit end if options[:repo] options[:user], options[:project] = options[:repo].split('/') end if !options[:user] || !options[:project] puts parser.banner exit end rescue OptionParser::InvalidOption, OptionParser::MissingArgument puts $!.to_s # Friendly output when parsing fails puts parser exit end if options[:verbose] puts 'Performing task with options:' pp options puts '' end options end