diff --git a/changelog_generator.rb b/changelog_generator.rb index 69660c5..8dfd210 100755 --- a/changelog_generator.rb +++ b/changelog_generator.rb @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -require_relative 'parser' +require 'optparse' require 'github_api' require 'json' require 'httparty' @@ -11,7 +11,8 @@ class ChangelogGenerator attr_accessor :options, :all_tags def initialize() - @options = Parser.new.options + + @options = self.parse_options if @options[:token] @github = Github.new oauth_token: @options[:token] else @@ -23,6 +24,58 @@ class ChangelogGenerator @tag_times_hash = {} end + def parse_options + options = {:tag1 => nil, :tag2 => nil, :format => '%d/%m/%y'} + + parser = OptionParser.new { |opts| + opts.banner = 'Usage: changelog_generator.rb [tag1 tag2] [-u user_name -p project_name] [options]' + + opts.on('-h', '--help', 'Displays Help') do + puts opts + exit + end + opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v| + options[:verbose] = v + end + opts.on('-l', '--last-changes', 'generate log between last 2 tags') do |last| + options[:last] = last + end + opts.on('-u', '--user [USER]', 'your username on GitHub') do |last| + options[:user] = last + end + opts.on('-p', '--project [PROJECT]', 'name of project on GitHub') do |last| + options[:project] = last + end + opts.on('-t', '--token [TOKEN]', 'your OAuth token GitHub') do |last| + options[:token] = last + end + opts.on('-f', '--date-format [FORMAT]', 'date format. default is %d/%m/%y') do |last| + options[:format] = last + end + } + + 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 + def print_json(json) puts JSON.pretty_generate(json) end diff --git a/dummy_constants.rb b/dummy_constants.rb deleted file mode 100644 index 6c58eae..0000000 --- a/dummy_constants.rb +++ /dev/null @@ -1,4 +0,0 @@ -@project_path = '/path/to/project' -@github_user = 'login' -@github_repo_name = 'projectName' -@oauth_token = 'your40digitGitHubToken' diff --git a/parser.rb b/parser.rb deleted file mode 100644 index 8616376..0000000 --- a/parser.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'optparse' -class Parser - - # attr_accessor - attr_reader :options - - def initialize - @options = {:tag1 => nil, :tag2 => nil, :format => '%d/%m/%y'} - - parser = OptionParser.new { |opts| - opts.banner = 'Usage: changelog_generator.rb [tag1 tag2] [-u user_name -p project_name] [options]' - - opts.on('-h', '--help', 'Displays Help') do - puts opts - exit - end - opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v| - @options[:verbose] = v - end - opts.on('-l', '--last-changes', 'generate log between last 2 tags') do |last| - @options[:last] = last - end - opts.on('-u', '--user [USER]', 'your username on GitHub') do |last| - @options[:user] = last - end - opts.on('-p', '--project [PROJECT]', 'name of project on GitHub') do |last| - @options[:project] = last - end - opts.on('-t', '--token [TOKEN]', 'your OAuth token GitHub') do |last| - @options[:token] = last - end - opts.on('-f', '--date-format [FORMAT]', 'date format. default is %d/%m/%y') do |last| - @options[:format] = last - end - } - - 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 - - end - -end \ No newline at end of file