2014-11-06 14:11:45 +00:00
#!/usr/bin/env ruby
require 'optparse'
class Parser
def self . parse_options
2014-11-07 15:45:35 +00:00
options = { :tag1 = > nil , :tag2 = > nil , :format = > '%d/%m/%y' , :output = > 'CHANGELOG.md' , :labels = > %w( bug enhancement ) , :pulls = > true , :issues = > true }
2014-11-06 14:11:45 +00:00
parser = OptionParser . new { | opts |
2014-11-07 09:25:09 +00:00
opts . banner = 'Usage: changelog_generator --user username --project project_name [options]'
opts . on ( '-u' , '--user [USER]' , 'Username of the owner of target GitHub repo (required)' ) do | last |
2014-11-06 14:11:45 +00:00
options [ :user ] = last
end
2014-11-07 09:25:09 +00:00
opts . on ( '-p' , '--project [PROJECT]' , 'Name of project on GitHub (required)' ) do | last |
2014-11-06 14:11:45 +00:00
options [ :project ] = last
end
2014-11-07 09:25:09 +00:00
opts . on ( '-t' , '--token [TOKEN]' , 'To make more than 50 requests this script required your OAuth token for GitHub. You can generate it on https://github.com/settings/applications' ) do | last |
2014-11-06 14:11:45 +00:00
options [ :token ] = last
end
opts . on ( '-h' , '--help' , 'Displays Help' ) do
puts opts
exit
end
opts . on ( '-v' , '--[no-]verbose' , 'Run verbosely' ) do | v |
options [ :verbose ] = v
end
2014-11-07 15:52:07 +00:00
opts . on ( '--[no-]issues' , 'Include closed issues to changelog. Default is true' ) do | v |
2014-11-07 15:04:03 +00:00
options [ :issues ] = v
end
2014-11-07 15:45:35 +00:00
opts . on ( '--[no-]pull-requests' , 'Include pull-requests to changelog. Default is true' ) do | v |
options [ :pulls ] = v
end
2014-11-07 15:04:03 +00:00
opts . on ( '-l' , '--last-changes' , 'Generate log between last 2 tags only' ) do | last |
2014-11-06 14:11:45 +00:00
options [ :last ] = last
end
2014-11-07 09:25:09 +00:00
opts . on ( '-f' , '--date-format [FORMAT]' , 'Date format. Default is %d/%m/%y' ) do | last |
2014-11-06 14:11:45 +00:00
options [ :format ] = last
end
2014-11-07 11:52:23 +00:00
opts . on ( '-o' , '--output [NAME]' , 'Output file. Default is CHANGELOG.md' ) do | last |
2014-11-07 09:25:09 +00:00
options [ :output ] = last
end
2014-11-07 15:04:03 +00:00
opts . on ( '--labels x,y,z' , Array , 'List of labels. Issues with that labels will be included to changelog. Default is \'bug,enhancement\'' ) do | list |
options [ :labels ] = list
end
2014-11-06 14:11:45 +00:00
}
parser . parse!
#udefined case with 1 parameter:
if ARGV [ 0 ] && ! ARGV [ 1 ]
puts parser . banner
exit
end
if ! options [ :user ] || ! options [ :project ]
puts parser . banner
exit
end
if ARGV [ 1 ]
options [ :tag1 ] = ARGV [ 0 ]
options [ :tag2 ] = ARGV [ 1 ]
end
options
end
end