rubocop autofixes, rm bum file

This commit is contained in:
Petr Korolev 2015-05-14 16:49:05 +03:00
parent f3e484b508
commit 819bcf5948
3 changed files with 12 additions and 231 deletions

View File

@ -1,221 +0,0 @@
#!/usr/bin/env ruby
require "optparse"
SPEC_TYPE = "gemspec"
:major
:minor
:patch
@options = { dry_run: false, bump_number: :patch }
OptionParser.new { |opts|
opts.banner = "Usage: bump.rb [options]"
opts.on("-d", "--dry-run", "Dry run") do |v|
@options[:dry_run] = v
end
opts.on("-a", "--major", "Bump major version") do |_v|
@options[:bump_number] = :major
end
opts.on("-m", "--minor", "Bump minor version") do |_v|
@options[:bump_number] = :minor
end
opts.on("-p", "--patch", "Bump patch version") do |_v|
@options[:bump_number] = :patch
end
opts.on("-r", "--revert", "Revert last bump") do |v|
@options[:revert] = v
end
}.parse!
p @options
def check_repo_is_clean_or_dry_run
value = `#{"git status --porcelain"}`
if value.empty?
puts "Repo is clean -> continue"
else
if @options[:dry_run]
puts 'Repo not clean, "Dry run" enabled -> continue'
else
puts "Repository not clean -> exit"
exit
end
end
end
def find_spec_file
list_of_specs = execute_line("find . -name '*.#{SPEC_TYPE}'")
arr = list_of_specs.split("\n")
spec_file = ""
case arr.count
when 0
puts "No #{SPEC_TYPE} files found. -> Exit."
exit
when 1
spec_file = arr[0]
else
puts "Which spec should be used?"
arr.each_with_index { |file, index| puts "#{index + 1}. #{file}" }
input_index = Integer(gets.chomp)
spec_file = arr[input_index - 1]
end
if spec_file.nil?
puts "Can't find specified spec file -> exit"
exit
end
spec_file.sub("./", "")
end
def find_current_gem_file
list_of_specs = execute_line("find . -name '*.gem'")
arr = list_of_specs.split("\n")
spec_file = ""
case arr.count
when 0
puts "No #{SPEC_TYPE} files found. -> Exit."
exit
when 1
spec_file = arr[0]
else
puts "Which spec should be used?"
arr.each_with_index { |file, index| puts "#{index + 1}. #{file}" }
input_index = Integer(gets.chomp)
spec_file = arr[input_index - 1]
end
if spec_file.nil?
puts "Can't find specified spec file -> exit"
exit
end
spec_file.sub("./", "")
end
def find_version_in_podspec(podspec)
readme = File.read(podspec)
# try to find version in format 1.22.333
re = /(\d+)\.(\d+)\.(\d+)/m
match_result = re.match(readme)
unless match_result
puts "Not found any versions"
exit
end
puts "Found version #{match_result[0]}"
[match_result[0], match_result.captures]
end
def bump_version(versions_array)
bumped_result = versions_array.dup
bumped_result.map!(&:to_i)
case @options[:bump_number]
when :major
bumped_result[0] += 1
bumped_result[1] = 0
bumped_result[2] = 0
when :minor
bumped_result[1] += 1
bumped_result[2] = 0
when :patch
bumped_result[2] += 1
else
fail("unknown bump_number")
end
bumped_version = bumped_result.join(".")
puts "Bump version: #{versions_array.join('.')} -> #{bumped_version}"
bumped_version
end
def execute_line(line)
output = `#{line}`
check_exit_status(output)
output
end
def execute_line_if_not_dry_run(line)
if @options[:dry_run]
puts "Dry run: #{line}"
nil
else
puts line
value = `#{line}`
puts value
check_exit_status(value)
value
end
end
def check_exit_status(output)
if $CHILD_STATUS.exitstatus != 0
puts "Output:\n#{output}\nExit status = #{$CHILD_STATUS.exitstatus} ->Terminate script."
exit
end
end
def run_bumping_script
check_repo_is_clean_or_dry_run
spec_file = find_spec_file
result, versions_array = find_version_in_podspec(spec_file)
bumped_version = bump_version(versions_array)
unless @options[:dry_run]
puts "Are you sure? Press Y to continue:"
str = gets.chomp
if str != "Y"
puts "-> exit"
exit
end
end
execute_line_if_not_dry_run("sed -i \"\" \"s/#{result}/#{bumped_version}/\" README.md")
execute_line_if_not_dry_run("sed -i \"\" \"s/#{result}/#{bumped_version}/\" #{spec_file}")
execute_line_if_not_dry_run("git commit --all -m \"Update #{$SPEC_TYPE} to version #{bumped_version}\"")
execute_line_if_not_dry_run("git tag #{bumped_version}")
execute_line_if_not_dry_run("git push")
execute_line_if_not_dry_run("git push --tags")
execute_line_if_not_dry_run("gem build #{spec_file}")
gem = find_current_gem_file
execute_line_if_not_dry_run("gem push #{gem}")
# execute_line_if_not_dry_run("pod trunk push #{spec_file}")
end
def revert_last_bump
spec_file = find_spec_file
result, _ = find_version_in_podspec(spec_file)
puts "DELETE tag #{result} and HARD reset HEAD~1?\nPress Y to continue:"
str = gets.chomp
if str != "Y"
puts "-> exit"
exit
end
execute_line_if_not_dry_run("git tag -d #{result}")
execute_line_if_not_dry_run("git reset --hard HEAD~1")
execute_line_if_not_dry_run("git push --delete origin #{result}")
end
if __FILE__ == $PROGRAM_NAME
if @options[:revert]
revert_last_bump
else
run_bumping_script
end
end

View File

@ -118,9 +118,9 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
end
# remove pull request from issues:
issues.partition { |x|
issues.partition do |x|
x[:pull_request].nil?
}
end
end
# Fetch all pull requests. We need them to detect :merged_at parameter
@ -151,9 +151,9 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
i = 0
max_thread_number = 50
threads = []
issues.each_slice(max_thread_number) { |issues_slice|
issues_slice.each { |issue|
threads << Thread.new {
issues.each_slice(max_thread_number) do |issues_slice|
issues_slice.each do |issue|
threads << Thread.new do
begin
obj = @github.issues.events.list user: @options[:user],
repo: @options[:project],
@ -164,11 +164,11 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow
issue[:events] = obj.body
print "Fetching events for issues and PR: #{i + 1}/#{issues.count}\r"
i += 1
}
}
end
end
threads.each(&:join)
threads = []
}
end
# to clear line from prev print
print " \r"

View File

@ -171,7 +171,8 @@ module GitHubChangelogGenerator
if match && match[1] && match[2]
puts "Detected user:#{match[1]}, project:#{match[2]}"
options[:user], options[:project] = match[1], match[2]
options[:user] = match[1]
options[:project] = match[2]
else
# try to find repo in format:
# origin https://github.com/skywinder/ChangelogMerger (fetch)
@ -179,7 +180,8 @@ module GitHubChangelogGenerator
match = /.*\/((?:-|\w|\.)*)\/((?:-|\w|\.)*).*/.match(remote)
if match && match[1] && match[2]
puts "Detected user:#{match[1]}, project:#{match[2]}"
options[:user], options[:project] = match[1], match[2]
options[:user] = match[1]
options[:project] = match[2]
end
end
end