rubocop autofixes, rm bum file
This commit is contained in:
parent
f3e484b508
commit
819bcf5948
221
bump_gemfile.rb
221
bump_gemfile.rb
|
@ -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
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user