lib/autowow/features/gem.rb in autowow-0.14.1 vs lib/autowow/features/gem.rb in autowow-0.14.2

- old
+ new

@@ -1,143 +1,143 @@ -require "pastel" - -require_relative "../commands/gem" -require_relative "vcs" - -module Autowow - module Features - module Gem - include EasyLogging - include Commands::Gem - include Commands::Vcs - include Executor - - def gem_release(version_bump = nil) - unless rubygems_credentials_set? - logger.error("Set RubyGems credentials first via `gem push`") - return - end - pretty_with_output.run(git_status) - start_branch = Vcs.working_branch - logger.error("Not on master.") and return unless start_branch.eql?("master") - pretty.run(pull) - version = nil - - if version_bump - version = pretty_with_output.run(bump(version_bump)).out.clean_lines.select { |line| line.match(/Bumping|bump/) }.first.split(" ").last - bump_readme_version_information(version) - # Full command is needed because of faulty escaping otherwise - pretty.run("git add README.md *version.rb") - pretty.run("git commit -m \"Bumps version to v#{version}\"") - end - - pretty.run(push) - - Vcs.on_branch("release") do - result = pretty.run!(pull) - pretty_with_output.run(set_upstream("origin", "release")) unless result.success? - pretty.run(rebase(start_branch)) - pretty_with_output.run(release) - end - - if version && change_readme_version_information_to_development(version) - pretty.run(add(["README.md"])) - # Full command is needed because of faulty escaping otherwise - pretty.run("git commit -m \"Changes README to development version\"") - pretty.run(push) - end - - pretty_with_output.run(git_status) - end - - def rubygems_credentials_set? - !quiet.run!("gem push --silent").err.clean_lines.blank? - end - - def gem_clean - pretty_with_output.run(clean) - end - - def rubocop_parallel_autocorrect - pastel = Pastel.new - result = pretty_with_output.run!(rubocop_parallel) - if result.failed? - filtered = result.out.each_line.select { |line| line.match(%r{(.*):([0-9]*):([0-9]*):}) } - .map { |line| line.split(":")[0] } - .uniq - .map { |line| pastel.strip(line) } - pretty_with_output.run(rubocop_autocorrect(filtered)) if filtered.any? - end - end - - def bundle_exec(cmd) - Autowow::Executor.pretty_with_output.run(["bundle", "exec"] + cmd) - end - - def db_migrate - pretty_with_output.run(rake_db_migrate) - end - - def db_schema - pretty_with_output.run(rake_db_schema) - end - - def db_structure - pretty_with_output.run(rake_db_structure) - end - - def bump_readme_version_information(version) - readme = "README.md" - return unless File.exists?(readme) - text = File.read(readme) - return unless contains_version_information?(text) - - version_information = get_version_information(text) - - new_version_information = if version_information.include?("development version") - releases_link = version_information.match(/\[.+\]\(.+\)/)[0].split("(")[1].split("/tag")[0] - <<-HEREDOC -<!--- Version informartion --> -*You are viewing the README of version [v#{version}](#{releases_link}/tag/v#{version}). You can find other releases [here](#{releases_link}).* -<!--- Version informartion end --> - HEREDOC - else - version_information.gsub(/[0-9]\.[0-9]\.[0-9]/, version) - end - - text.gsub!(version_information, new_version_information.chomp) - File.write(readme, text) - end - - def change_readme_version_information_to_development(version) - readme = "README.md" - return false unless File.file?(readme) - text = File.read(readme) - return false unless contains_version_information?(text) - version_information = get_version_information(text) - return false if version_information.include?("development version") - - releases_link = version_information.match(/\[.+\]\(.+\)/)[0].split("(")[1].split("/tag")[0] - - new_version_information = <<-HEREDOC -<!--- Version informartion --> -*You are viewing the README of the development version. You can find the README of the latest release (v#{version}) [here](#{releases_link}/tag/v#{version}).* -<!--- Version informartion end --> - HEREDOC - - text.gsub!(version_information, new_version_information.chomp) - File.write(readme, text) - true - end - - def contains_version_information?(text) - text.match(/<!--- Version informartion -->(.+)<!--- Version informartion end -->/m).length > 0 - end - - def get_version_information(text) - text.match(/<!--- Version informartion -->(.+)<!--- Version informartion end -->/m)[0] - end - - include ReflectionUtils::CreateModuleFunctions - end - end -end +require "pastel" + +require_relative "../commands/gem" +require_relative "vcs" + +module Autowow + module Features + module Gem + include EasyLogging + include Commands::Gem + include Commands::Vcs + include Executor + + def gem_release(version_bump = nil) + unless rubygems_credentials_set? + logger.error("Set RubyGems credentials first via `gem push`") + return + end + pretty_with_output.run(git_status) + start_branch = Vcs.working_branch + logger.error("Not on master.") and return unless start_branch.eql?("master") + pretty.run(pull) + version = nil + + if version_bump + version = pretty_with_output.run(bump(version_bump)).out.clean_lines.select { |line| line.match(/Bumping|bump/) }.first.split(" ").last + bump_readme_version_information(version) + # Full command is needed because of faulty escaping otherwise + pretty.run("git add README.md *version.rb") + pretty.run("git commit -m \"Bumps version to v#{version}\"") + end + + pretty.run(push) + + Vcs.on_branch("release") do + result = pretty.run!(pull) + pretty_with_output.run(set_upstream("origin", "release")) unless result.success? + pretty.run(rebase(start_branch)) + pretty_with_output.run(release) + end + + if version && change_readme_version_information_to_development(version) + pretty.run(add(["README.md"])) + # Full command is needed because of faulty escaping otherwise + pretty.run("git commit -m \"Changes README to development version\"") + pretty.run(push) + end + + pretty_with_output.run(git_status) + end + + def rubygems_credentials_set? + !quiet.run!("gem push --silent").err.clean_lines.blank? + end + + def gem_clean + pretty_with_output.run(clean) + end + + def rubocop_parallel_autocorrect + pastel = Pastel.new + result = pretty_with_output.run!(rubocop_parallel) + if result.failed? + filtered = result.out.each_line.select { |line| line.match(%r{(.*):([0-9]*):([0-9]*):}) } + .map { |line| line.split(":")[0] } + .uniq + .map { |line| pastel.strip(line) } + pretty_with_output.run(rubocop_autocorrect(filtered)) if filtered.any? + end + end + + def bundle_exec(cmd) + Autowow::Executor.pretty_with_output.run(["bundle", "exec"] + cmd) + end + + def db_migrate + pretty_with_output.run(rake_db_migrate) + end + + def db_schema + pretty_with_output.run(rake_db_schema) + end + + def db_structure + pretty_with_output.run(rake_db_structure) + end + + def bump_readme_version_information(version) + readme = "README.md" + return unless File.exists?(readme) + text = File.read(readme) + return unless contains_version_information?(text) + + version_information = get_version_information(text) + + new_version_information = if version_information.include?("development version") + releases_link = version_information.match(/\[.+\]\(.+\)/)[0].split("(")[1].split("/tag")[0] + <<-HEREDOC +<!--- Version informartion --> +*You are viewing the README of version [v#{version}](#{releases_link}/tag/v#{version}). You can find other releases [here](#{releases_link}).* +<!--- Version informartion end --> + HEREDOC + else + version_information.gsub(/[0-9]\.[0-9]\.[0-9]/, version) + end + + text.gsub!(version_information, new_version_information.chomp) + File.write(readme, text) + end + + def change_readme_version_information_to_development(version) + readme = "README.md" + return false unless File.file?(readme) + text = File.read(readme) + return false unless contains_version_information?(text) + version_information = get_version_information(text) + return false if version_information.include?("development version") + + releases_link = version_information.match(/\[.+\]\(.+\)/)[0].split("(")[1].split("/tag")[0] + + new_version_information = <<-HEREDOC +<!--- Version informartion --> +*You are viewing the README of the development version. You can find the README of the latest release (v#{version}) [here](#{releases_link}/tag/v#{version}).* +<!--- Version informartion end --> + HEREDOC + + text.gsub!(version_information, new_version_information.chomp) + File.write(readme, text) + true + end + + def contains_version_information?(text) + text.match(/<!--- Version informartion -->(.+)<!--- Version informartion end -->/m).length > 0 + end + + def get_version_information(text) + text.match(/<!--- Version informartion -->(.+)<!--- Version informartion end -->/m)[0] + end + + include ReflectionUtils::CreateModuleFunctions + end + end +end