diff --git a/.toys/.data/releases.yml b/.toys/.data/releases.yml index 4a21cb9..faa5c13 100644 --- a/.toys/.data/releases.yml +++ b/.toys/.data/releases.yml @@ -1,5 +1,6 @@ repo: cloudevents/sdk-ruby main_branch: master +signoff_commits: true gems: - name: cloud_events docs_builder_tool: [yardoc] diff --git a/.toys/release/.lib/release_perform.rb b/.toys/release/.lib/release_perform.rb index 2b3d9d7..82b5326 100644 --- a/.toys/release/.lib/release_perform.rb +++ b/.toys/release/.lib/release_perform.rb @@ -176,7 +176,9 @@ def push_docs @utils.logger.info "Pushing #{@gem_name} docs to gh-pages ..." ::Dir.chdir @gh_pages_dir do @utils.exec ["git", "add", "."] - @utils.exec ["git", "commit", "-m", "Generate yardocs for #{@gem_name} #{@gem_version}"] + commit_cmd = ["git", "commit", "-m", "Generate yardocs for #{@gem_name} #{@gem_version}"] + commit_cmd << "--signoff" if @utils.signoff_commits? + @utils.exec commit_cmd if @dry_run @utils.logger.info "DRY RUN: Docs pushed to gh-pages" else diff --git a/.toys/release/.lib/release_prepare.rb b/.toys/release/.lib/release_prepare.rb index b579b00..9f849a8 100644 --- a/.toys/release/.lib/release_prepare.rb +++ b/.toys/release/.lib/release_prepare.rb @@ -144,7 +144,7 @@ def analyze_title title bump_segment = 2 match = /^(fix|feat|docs)(?:\([^()]+\))?(!?):\s+(.*)$/.match title return bump_segment unless match - description = match[3].gsub(/\(#\d+\)$/, "") + description = normalize_line match[3], delete_pr_number: true case match[1] when "fix" @fixes << description @@ -177,7 +177,7 @@ def analyze_body body, bump_segment case match[1] when /^BREAKING[-\s]CHANGE$/ bump_segment = 0 unless lock_change - @breaks << match[2] + @breaks << normalize_line(match[2]) when /^semver-change$/i seg = SEMVER_CHANGES[match[2].downcase] if seg @@ -189,11 +189,19 @@ def analyze_body body, bump_segment bump_segment end + def normalize_line line, delete_pr_number: false + match = /^([a-z])(.*)$/.match line + line = match[1].upcase + match[2] if match + line = line.gsub(/\(#\d+\)$/, "") if delete_pr_number + line + end + def determine_new_version @new_version = @override_version if @last_version @new_version ||= begin segments = @last_version.segments + @bump_segment = 1 if segments[0].zero? && @bump_segment.zero? segments[@bump_segment] += 1 segments.fill(0, @bump_segment + 1).join(".") end @@ -216,7 +224,7 @@ def build_changelog_entries @changelog_entries << "* Feature: #{line}" end @fixes.each do |line| - @changelog_entries << "* Fixed: #{line}" + @changelog_entries << "* Fix: #{line}" end @docs.each do |line| @changelog_entries << "* Documentation: #{line}" @@ -259,7 +267,9 @@ def create_release_commit @utils.exec ["git", "branch", "-D", @release_branch_name] end @utils.exec ["git", "checkout", "-b", @release_branch_name] - @utils.exec ["git", "commit", "-a", "-m", @release_commit_title] + commit_cmd = ["git", "commit", "-a", "-m", @release_commit_title] + commit_cmd << "--signoff" if @utils.signoff_commits? + @utils.exec commit_cmd @utils.exec ["git", "push", "-f", @git_remote, @release_branch_name] @utils.exec ["git", "checkout", @release_ref] end diff --git a/.toys/release/.lib/release_utils.rb b/.toys/release/.lib/release_utils.rb index b30f76c..38c38bf 100644 --- a/.toys/release/.lib/release_utils.rb +++ b/.toys/release/.lib/release_utils.rb @@ -24,6 +24,10 @@ def repo_owner repo_path.split("/").first end + def signoff_commits? + @signoff_commits + end + def all_gems @gems.keys end @@ -349,6 +353,7 @@ def load_release_info file_path info = ::YAML.load_file file_path @main_branch = info["main_branch"] || "main" @repo_path = info["repo"] + @signoff_commits = info["signoff_commits"] ? true : false error "Repo key missing from releases.yml" unless @repo_path @gems = {} @default_gem = nil