diff --git a/action.yml b/action.yml index 7a8c79e..6a6bd9f 100644 --- a/action.yml +++ b/action.yml @@ -42,28 +42,15 @@ runs: shell: bash working-directory: ${{ inputs.rails-root }} run: | - AUDIT_OUTPUT=$(bin/importmap audit 2>&1 || true) - OUTDATED_OUTPUT=$(bin/importmap outdated 2>&1 || true) - - echo "## Importmap Update" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "### Vulnerabilities" >> $GITHUB_STEP_SUMMARY - - echo "$AUDIT_OUTPUT" >> $GITHUB_STEP_SUMMARY - - echo "" >> $GITHUB_STEP_SUMMARY - echo "### Outdated packages" >> $GITHUB_STEP_SUMMARY - echo "$OUTDATED_OUTPUT" >> $GITHUB_STEP_SUMMARY - { echo 'importmap-audit<&1 || true echo 'IMPORTMAP_AUDIT_OUTPUT' } >> "$GITHUB_OUTPUT" { echo 'importmap-outdated<&1 || true echo 'IMPORTMAP_OUTDATED_OUTPUT' } >> "$GITHUB_OUTPUT" diff --git a/exe/importmap-update b/exe/importmap-update index a94213a..5beadea 100755 --- a/exe/importmap-update +++ b/exe/importmap-update @@ -105,6 +105,37 @@ report.outcomes.each do |o| end report.warnings.each { |w| warn " ! #{w}" } +if (summary_path = ENV["GITHUB_STEP_SUMMARY"]) + File.open(summary_path, "a") do |f| + f.puts "### Update summary" + f.puts "Dry run: #{options[:dry_run]}" + + if plan.warnings.any? + f.puts "#### Plan warnings" + plan.warnings.each { |w| f.puts "- #{w}" } + end + + f.puts "" + f.puts "Reconciler ignored #{reconciled.ignored.size} foreign PR(s)." + f.puts "" + + if report.outcomes.any? + f.puts "#### Outcomes" + f.puts "| Branch | PR | Action | Status | Detail |" + f.puts "| --- | --- | --- | --- | --- |" + report.outcomes.each do |o| + f.puts "| #{o.branch || "?"} | #{"##{o.pr_number}" if o.pr_number} | #{o.type} | #{o.status} | #{o.detail} |" + end + end + + report.warnings.each { |w| + f.puts "" + f.puts "> [!WARNING]" + f.puts "> #{w}" + } + end +end + # Exit non-zero only if any non-skipped outcome failed; in dry run all are # skipped, which is a successful run. exit(report.outcomes.any?(&:failed?) ? 1 : 0)