From 58534f44a75deaa6d916e9af40a7568a3fa1745e Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 6 Nov 2014 16:11:45 +0200 Subject: [PATCH] rename, move to proper folders, separate files --- bin/github_changelog_generator | 5 ++ .../github_changelog_generator.rb | 55 +------------------ lib/github_changelog_generator/parser.rb | 55 +++++++++++++++++++ 3 files changed, 62 insertions(+), 53 deletions(-) create mode 100644 bin/github_changelog_generator rename github_changelog_generator.rb => lib/github_changelog_generator.rb (76%) create mode 100644 lib/github_changelog_generator/parser.rb diff --git a/bin/github_changelog_generator b/bin/github_changelog_generator new file mode 100644 index 0000000..678e9da --- /dev/null +++ b/bin/github_changelog_generator @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby + +require 'github_changelog_generator' + +ChangelogGenerator.new.compund_changelog \ No newline at end of file diff --git a/github_changelog_generator.rb b/lib/github_changelog_generator.rb similarity index 76% rename from github_changelog_generator.rb rename to lib/github_changelog_generator.rb index 8303b23..19ceed9 100755 --- a/github_changelog_generator.rb +++ b/lib/github_changelog_generator.rb @@ -1,9 +1,9 @@ #!/usr/bin/env ruby -require 'optparse' require 'github_api' require 'json' require 'httparty' +require_relative 'github_changelog_generator/parser' class ChangelogGenerator @@ -12,7 +12,7 @@ class ChangelogGenerator def initialize() - @options = self.parse_options + @options = Parser.parse_options if @options[:token] @github = Github.new oauth_token: @options[:token] else @@ -24,57 +24,6 @@ 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 -u user_name -p project_name [-t 16-digit-GitHubToken] [options]' - 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]', 'To make more than 50 requests this app required your OAuth token for GitHub. You can generate it on https://github.com/settings/applications') do |last| - 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 - opts.on('-l', '--last-changes', 'generate log between last 2 tags') do |last| - options[:last] = 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/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb new file mode 100644 index 0000000..a0dba5d --- /dev/null +++ b/lib/github_changelog_generator/parser.rb @@ -0,0 +1,55 @@ +#!/usr/bin/env ruby +require 'optparse' + +class Parser + def self.parse_options + options = {:tag1 => nil, :tag2 => nil, :format => '%d/%m/%y'} + + parser = OptionParser.new { |opts| + opts.banner = 'Usage: changelog_generator.rb -u user_name -p project_name [-t 16-digit-GitHubToken] [options]' + 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]', 'To make more than 50 requests this app required your OAuth token for GitHub. You can generate it on https://github.com/settings/applications') do |last| + 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 + opts.on('-l', '--last-changes', 'generate log between last 2 tags') do |last| + options[:last] = 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 +end \ No newline at end of file