cpflow 4.1.1 → 5.0.0.rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/commands/update-changelog.md +367 -0
  3. data/.github/workflows/claude-code-review.yml +44 -0
  4. data/.github/workflows/claude.yml +55 -0
  5. data/.gitignore +2 -0
  6. data/.overcommit.yml +43 -3
  7. data/.rubocop.yml +3 -3
  8. data/CHANGELOG.md +39 -3
  9. data/CONTRIBUTING.md +6 -0
  10. data/Gemfile +8 -7
  11. data/Gemfile.lock +93 -73
  12. data/README.md +53 -22
  13. data/cpflow.gemspec +5 -5
  14. data/docs/ai-github-flow-prompt.md +61 -0
  15. data/docs/ci-automation.md +335 -0
  16. data/docs/commands.md +70 -5
  17. data/docs/releasing.md +153 -0
  18. data/lib/command/ai_github_flow_prompt.rb +47 -0
  19. data/lib/command/base.rb +14 -0
  20. data/lib/command/cleanup_images.rb +1 -1
  21. data/lib/command/cleanup_stale_apps.rb +1 -1
  22. data/lib/command/copy_image_from_upstream.rb +14 -3
  23. data/lib/command/exists.rb +13 -2
  24. data/lib/command/generate.rb +153 -4
  25. data/lib/command/generate_github_actions.rb +170 -0
  26. data/lib/command/generator_helpers.rb +31 -0
  27. data/lib/command/github_flow_readiness.rb +37 -0
  28. data/lib/command/ps_wait.rb +5 -1
  29. data/lib/command/run.rb +4 -21
  30. data/lib/command/terraform/generate.rb +1 -0
  31. data/lib/command/version.rb +1 -0
  32. data/lib/constants/exit_code.rb +1 -0
  33. data/lib/core/config.rb +1 -1
  34. data/lib/core/controlplane.rb +13 -10
  35. data/lib/core/controlplane_api_direct.rb +25 -3
  36. data/lib/core/github_flow_readiness/checks.rb +143 -0
  37. data/lib/core/github_flow_readiness_service.rb +453 -0
  38. data/lib/core/repo_introspection.rb +118 -0
  39. data/lib/core/terraform_config/dsl.rb +1 -1
  40. data/lib/core/terraform_config/local_variable.rb +1 -1
  41. data/lib/cpflow/version.rb +1 -1
  42. data/lib/cpflow.rb +66 -3
  43. data/lib/generator_templates/Dockerfile +59 -3
  44. data/lib/generator_templates/controlplane.yml +27 -39
  45. data/lib/generator_templates/entrypoint.sh +1 -1
  46. data/lib/generator_templates/release_script.sh +23 -0
  47. data/lib/generator_templates/templates/app.yml +5 -8
  48. data/lib/generator_templates/templates/rails.yml +2 -11
  49. data/lib/generator_templates_sqlite/controlplane.yml +46 -0
  50. data/lib/generator_templates_sqlite/release_script.sh +25 -0
  51. data/lib/generator_templates_sqlite/templates/app.yml +15 -0
  52. data/lib/generator_templates_sqlite/templates/db.yml +6 -0
  53. data/lib/generator_templates_sqlite/templates/rails.yml +32 -0
  54. data/lib/generator_templates_sqlite/templates/storage.yml +6 -0
  55. data/lib/github_flow_templates/.github/actions/cpflow-build-docker-image/action.yml +131 -0
  56. data/lib/github_flow_templates/.github/actions/cpflow-delete-control-plane-app/action.yml +24 -0
  57. data/lib/github_flow_templates/.github/actions/cpflow-delete-control-plane-app/delete-app.sh +50 -0
  58. data/lib/github_flow_templates/.github/actions/cpflow-detect-release-phase/action.yml +62 -0
  59. data/lib/github_flow_templates/.github/actions/cpflow-setup-environment/action.yml +98 -0
  60. data/lib/github_flow_templates/.github/actions/cpflow-validate-config/action.yml +85 -0
  61. data/lib/github_flow_templates/.github/actions/cpflow-wait-for-health/action.yml +92 -0
  62. data/lib/github_flow_templates/.github/cpflow-help.md +47 -0
  63. data/lib/github_flow_templates/.github/workflows/cpflow-cleanup-stale-review-apps.yml +56 -0
  64. data/lib/github_flow_templates/.github/workflows/cpflow-delete-review-app.yml +142 -0
  65. data/lib/github_flow_templates/.github/workflows/cpflow-deploy-review-app.yml +445 -0
  66. data/lib/github_flow_templates/.github/workflows/cpflow-deploy-staging.yml +140 -0
  67. data/lib/github_flow_templates/.github/workflows/cpflow-help-command.yml +53 -0
  68. data/lib/github_flow_templates/.github/workflows/cpflow-promote-staging-to-production.yml +490 -0
  69. data/lib/github_flow_templates/.github/workflows/cpflow-review-app-help.yml +46 -0
  70. data/rakelib/create_release.rake +662 -37
  71. data/script/check_command_docs +4 -2
  72. data/script/check_cpln_links +25 -11
  73. data/script/precommit/check_command_docs +22 -0
  74. data/script/precommit/check_cpln_links +21 -0
  75. data/script/precommit/check_trailing_newlines +68 -0
  76. data/script/precommit/get_changed_files +49 -0
  77. data/script/precommit/ruby_autofix +52 -0
  78. data/script/precommit/ruby_lint +33 -0
  79. metadata +56 -15
  80. /data/docs/{migrating.md → migrating-heroku-to-control-plane.md} +0 -0
@@ -1,3 +1,5 @@
1
- #!/bin/sh
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
2
4
  bundle exec rake update_command_docs
3
- git diff --exit-code || exit 1
5
+ git diff --exit-code -- docs/commands.md
@@ -1,31 +1,45 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ set -euo pipefail
4
+
3
5
  bad_links=("controlplane.com/shakacode" "https://docs.controlplane.com")
4
6
  proper_links=("shakacode.controlplane.com" "https://shakadocs.controlplane.com")
5
7
 
6
- bold=$(tput bold)
7
- normal=$(tput sgr0)
8
+ bold=$(tput bold 2>/dev/null || true)
9
+ normal=$(tput sgr0 2>/dev/null || true)
10
+
11
+ files=()
12
+ if [ "$#" -gt 0 ]; then
13
+ for file in "$@"; do
14
+ if [[ "$file" == *.md ]] && [ -f "$file" ]; then
15
+ files+=("$file")
16
+ fi
17
+ done
18
+ else
19
+ while IFS= read -r file; do
20
+ files+=("$file")
21
+ done < <(git ls-files -- '*.md' ':!:script/check_cpln_links')
22
+ fi
23
+
24
+ if [ "${#files[@]}" -eq 0 ]; then
25
+ echo "No markdown files to validate."
26
+ exit 0
27
+ fi
8
28
 
9
29
  exit_status=0
10
30
  accumulated_results=""
11
31
  seen_bad_links_indexes=()
12
32
 
13
33
  for ((idx = 0; idx < ${#bad_links[@]}; idx++)); do
14
- results=$(git grep \
15
- --recursive \
34
+ if results=$(git grep \
16
35
  --line-number \
17
36
  --fixed-strings \
18
37
  --break \
19
38
  --heading \
20
39
  --color=always -- \
21
40
  "${bad_links[idx]}" \
22
- ':!script/check_cpln_links' '*.md')
23
-
24
- # Line would become really unwieldly if everything was mushed into the
25
- # conditional, so let's ignore this check here.
26
- # shellcheck disable=SC2181
27
- if [ $? -eq 0 ]; then
28
- accumulated_results+="$results"
41
+ -- "${files[@]}"); then
42
+ accumulated_results+="$results"$'\n'
29
43
  seen_bad_links_indexes+=("$idx")
30
44
  exit_status=1
31
45
  fi
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ pattern='^(lib/command/.*\.rb|docs/commands\.md|script/update_command_docs|script/check_command_docs|script/precommit/check_command_docs|Rakefile)$'
7
+ relevant_files=()
8
+ changed_files_output="$(./script/precommit/get_changed_files "$context" "$pattern")" || {
9
+ echo "Error: failed to determine command-doc related files." >&2
10
+ exit 1
11
+ }
12
+ while IFS= read -r f; do
13
+ [ -n "$f" ] && relevant_files+=("$f")
14
+ done <<< "$changed_files_output"
15
+
16
+ if [ "${#relevant_files[@]}" -eq 0 ]; then
17
+ echo "No command-doc related files changed; skipping command docs check."
18
+ exit 0
19
+ fi
20
+
21
+ echo "Running command docs consistency check."
22
+ bundle exec rake check_command_docs
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ markdown_files=()
7
+ changed_files_output="$(./script/precommit/get_changed_files "$context" '\.md$')" || {
8
+ echo "Error: failed to determine changed markdown files." >&2
9
+ exit 1
10
+ }
11
+ while IFS= read -r f; do
12
+ [ -n "$f" ] && markdown_files+=("$f")
13
+ done <<< "$changed_files_output"
14
+
15
+ if [ "${#markdown_files[@]}" -eq 0 ]; then
16
+ echo "No markdown files changed; skipping Control Plane link check."
17
+ exit 0
18
+ fi
19
+
20
+ echo "Checking Control Plane links in changed markdown files."
21
+ ./script/check_cpln_links "${markdown_files[@]}"
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ files=()
7
+ changed_files_output="$(./script/precommit/get_changed_files "$context" '.*')" || {
8
+ echo "Error: failed to determine changed files." >&2
9
+ exit 1
10
+ }
11
+ while IFS= read -r f; do
12
+ [ -n "$f" ] && files+=("$f")
13
+ done <<< "$changed_files_output"
14
+
15
+ if [ "${#files[@]}" -eq 0 ]; then
16
+ echo "No files to check for trailing newlines."
17
+ exit 0
18
+ fi
19
+
20
+ # Identify files that need a trailing newline.
21
+ needs_fix=()
22
+ for file in "${files[@]}"; do
23
+ [ -f "$file" ] || continue
24
+
25
+ # Skip binary files based on staged content.
26
+ if ! git cat-file blob ":$file" 2>/dev/null | grep -Iq .; then
27
+ continue
28
+ fi
29
+
30
+ # Inspect staged content so partial staging is handled correctly.
31
+ staged_last_byte=""
32
+ if ! staged_last_byte="$(git cat-file blob ":$file" 2>/dev/null | tail -c 1)"; then
33
+ continue
34
+ fi
35
+
36
+ if [ -n "$staged_last_byte" ]; then
37
+ needs_fix+=("$file")
38
+ fi
39
+ done
40
+
41
+ if [ "${#needs_fix[@]}" -gt 0 ]; then
42
+ # Stash unstaged changes BEFORE modifying files so --keep-index preserves
43
+ # the working tree state and our modifications are not undone.
44
+ has_stash=false
45
+ if ! git diff --quiet -- "${needs_fix[@]}"; then
46
+ git stash push --keep-index --quiet -m "precommit: trailing newlines unstaged changes"
47
+ has_stash=true
48
+ fi
49
+
50
+ restore_stash() {
51
+ if [ "$has_stash" = true ]; then
52
+ if ! git stash pop; then
53
+ echo "Warning: Could not restore unstaged changes from stash. Run 'git stash pop' manually to recover." >&2
54
+ fi
55
+ fi
56
+ }
57
+
58
+ trap restore_stash EXIT
59
+
60
+ for file in "${needs_fix[@]}"; do
61
+ echo "Adding trailing newline: $file"
62
+ printf '\n' >> "$file"
63
+ done
64
+
65
+ git add -- "${needs_fix[@]}"
66
+ fi
67
+
68
+ echo "Trailing newline check complete."
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ pattern="${2:-.*}"
7
+ base_ref="${3:-origin/main}"
8
+
9
+ # Filter lines matching pattern. Exit 0 on no matches (grep exit 1),
10
+ # but propagate real errors (exit >= 2).
11
+ filter_matches() {
12
+ grep -E -- "$pattern" || {
13
+ local status=$?
14
+ if [ "$status" -eq 1 ]; then
15
+ return 0
16
+ fi
17
+ return "$status"
18
+ }
19
+ }
20
+
21
+ case "$context" in
22
+ staged)
23
+ git diff --cached --name-only --diff-filter=ACMR | filter_matches
24
+ ;;
25
+ all-changed)
26
+ (
27
+ git diff --cached --name-only --diff-filter=ACMR
28
+ git diff --name-only --diff-filter=ACMR
29
+ git ls-files --others --exclude-standard
30
+ ) | sort -u | filter_matches
31
+ ;;
32
+ branch)
33
+ if ! git rev-parse --verify --quiet "$base_ref" >/dev/null; then
34
+ fetch_hint="git fetch --all --prune"
35
+ if [[ "$base_ref" == */* ]]; then
36
+ remote="${base_ref%%/*}"
37
+ ref="${base_ref#*/}"
38
+ fetch_hint="git fetch ${remote} ${ref}"
39
+ fi
40
+ echo "Error: ${base_ref} not found. Run: ${fetch_hint}" >&2
41
+ exit 1
42
+ fi
43
+ git diff --name-only --diff-filter=ACMR "$base_ref"...HEAD | filter_matches
44
+ ;;
45
+ *)
46
+ echo "Usage: $0 {staged|all-changed|branch} [pattern] [base_ref]" >&2
47
+ exit 1
48
+ ;;
49
+ esac
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ files=()
7
+ changed_files_output="$(./script/precommit/get_changed_files "$context" '\.(rb|rake|ru)$')" || {
8
+ echo "Error: failed to determine changed Ruby files." >&2
9
+ exit 1
10
+ }
11
+ while IFS= read -r f; do
12
+ [ -n "$f" ] && files+=("$f")
13
+ done <<< "$changed_files_output"
14
+
15
+ if [ "${#files[@]}" -eq 0 ]; then
16
+ echo "No Ruby files to auto-fix."
17
+ exit 0
18
+ fi
19
+
20
+ echo "Running RuboCop auto-fix on changed Ruby files:"
21
+ printf " %s\n" "${files[@]}"
22
+
23
+ # Stash unstaged changes so auto-fix only touches what was staged.
24
+ # This preserves partial staging (git add -p).
25
+ has_stash=false
26
+ if ! git diff --quiet -- "${files[@]}"; then
27
+ git stash push --keep-index --quiet -m "precommit: ruby_autofix unstaged changes"
28
+ has_stash=true
29
+ fi
30
+
31
+ restore_stash() {
32
+ if [ "$has_stash" = true ]; then
33
+ if ! git stash pop; then
34
+ echo "Warning: Could not restore unstaged changes from stash. Run 'git stash pop' manually to recover." >&2
35
+ fi
36
+ fi
37
+ }
38
+
39
+ trap restore_stash EXIT
40
+
41
+ rubocop_exit=0
42
+ bundle exec rubocop -A --force-exclusion -- "${files[@]}" || rubocop_exit=$?
43
+
44
+ # Re-stage auto-corrected files regardless of rubocop exit code so fixable
45
+ # changes are not lost when non-fixable offenses still fail the hook.
46
+ git add -- "${files[@]}"
47
+
48
+ if [ "$rubocop_exit" -ne 0 ]; then
49
+ exit "$rubocop_exit"
50
+ fi
51
+
52
+ echo "Ruby auto-fix complete."
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ context="${1:-staged}"
6
+ files=()
7
+ changed_files_output="$(./script/precommit/get_changed_files "$context" '\.(rb|rake|ru)$')" || {
8
+ echo "Error: failed to determine changed Ruby files." >&2
9
+ exit 1
10
+ }
11
+ while IFS= read -r f; do
12
+ [ -n "$f" ] && files+=("$f")
13
+ done <<< "$changed_files_output"
14
+
15
+ if [ "${#files[@]}" -eq 0 ]; then
16
+ echo "No Ruby files to lint."
17
+ exit 0
18
+ fi
19
+
20
+ echo "Running RuboCop lint on changed Ruby files:"
21
+ printf " %s\n" "${files[@]}"
22
+
23
+ if ! bundle exec rubocop --force-exclusion --display-cop-names -- "${files[@]}"; then
24
+ echo ""
25
+ echo "RuboCop lint failed."
26
+ rubocop_autofix_hint=""
27
+ printf -v rubocop_autofix_hint "%q " "${files[@]}"
28
+ echo "Try: bundle exec rubocop -A --force-exclusion -- ${rubocop_autofix_hint% }"
29
+ echo "Skip hooks only if necessary: git commit --no-verify"
30
+ exit 1
31
+ fi
32
+
33
+ echo "Ruby lint complete."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 5.0.0.rc.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-03-14 00:00:00.000000000 Z
12
+ date: 2026-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dotenv
@@ -17,56 +17,56 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 2.8.1
20
+ version: '3.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 2.8.1
27
+ version: '3.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: jwt
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 2.8.1
34
+ version: '3.1'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 2.8.1
41
+ version: '3.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: psych
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 5.1.0
48
+ version: '5.2'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 5.1.0
55
+ version: '5.2'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: thor
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.2.1
62
+ version: '1.4'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 1.2.1
69
+ version: '1.4'
70
70
  description: CLI for providing Heroku-like platform-as-a-service on Control Plane
71
71
  email:
72
72
  - justin@shakacode.com
@@ -76,7 +76,10 @@ executables:
76
76
  extensions: []
77
77
  extra_rdoc_files: []
78
78
  files:
79
+ - ".claude/commands/update-changelog.md"
79
80
  - ".github/workflows/check_cpln_links.yml"
81
+ - ".github/workflows/claude-code-review.yml"
82
+ - ".github/workflows/claude.yml"
80
83
  - ".github/workflows/command_docs.yml"
81
84
  - ".github/workflows/rspec-shared.yml"
82
85
  - ".github/workflows/rspec-specific.yml"
@@ -97,14 +100,17 @@ files:
97
100
  - bin/cpflow
98
101
  - cpflow
99
102
  - cpflow.gemspec
103
+ - docs/ai-github-flow-prompt.md
100
104
  - docs/assets/grafana-alert.png
101
105
  - docs/assets/memcached.png
102
106
  - docs/assets/sidekiq-pre-stop-hook.png
107
+ - docs/ci-automation.md
103
108
  - docs/commands.md
104
109
  - docs/dns.md
105
- - docs/migrating.md
110
+ - docs/migrating-heroku-to-control-plane.md
106
111
  - docs/postgres.md
107
112
  - docs/redis.md
113
+ - docs/releasing.md
108
114
  - docs/secrets-and-env-values.md
109
115
  - docs/terraform/details.md
110
116
  - docs/terraform/example/.controlplane/controlplane.yml
@@ -116,6 +122,7 @@ files:
116
122
  - docs/troubleshooting.md
117
123
  - examples/circleci.yml
118
124
  - examples/controlplane.yml
125
+ - lib/command/ai_github_flow_prompt.rb
119
126
  - lib/command/apply_template.rb
120
127
  - lib/command/base.rb
121
128
  - lib/command/base_sub_command.rb
@@ -130,6 +137,9 @@ files:
130
137
  - lib/command/env.rb
131
138
  - lib/command/exists.rb
132
139
  - lib/command/generate.rb
140
+ - lib/command/generate_github_actions.rb
141
+ - lib/command/generator_helpers.rb
142
+ - lib/command/github_flow_readiness.rb
133
143
  - lib/command/info.rb
134
144
  - lib/command/latest_image.rb
135
145
  - lib/command/logs.rb
@@ -159,8 +169,11 @@ files:
159
169
  - lib/core/controlplane_api.rb
160
170
  - lib/core/controlplane_api_direct.rb
161
171
  - lib/core/doctor_service.rb
172
+ - lib/core/github_flow_readiness/checks.rb
173
+ - lib/core/github_flow_readiness_service.rb
162
174
  - lib/core/helpers.rb
163
175
  - lib/core/maintenance_mode.rb
176
+ - lib/core/repo_introspection.rb
164
177
  - lib/core/shell.rb
165
178
  - lib/core/template_parser.rb
166
179
  - lib/core/terraform_config/agent.rb
@@ -186,9 +199,31 @@ files:
186
199
  - lib/generator_templates/Dockerfile
187
200
  - lib/generator_templates/controlplane.yml
188
201
  - lib/generator_templates/entrypoint.sh
202
+ - lib/generator_templates/release_script.sh
189
203
  - lib/generator_templates/templates/app.yml
190
204
  - lib/generator_templates/templates/postgres.yml
191
205
  - lib/generator_templates/templates/rails.yml
206
+ - lib/generator_templates_sqlite/controlplane.yml
207
+ - lib/generator_templates_sqlite/release_script.sh
208
+ - lib/generator_templates_sqlite/templates/app.yml
209
+ - lib/generator_templates_sqlite/templates/db.yml
210
+ - lib/generator_templates_sqlite/templates/rails.yml
211
+ - lib/generator_templates_sqlite/templates/storage.yml
212
+ - lib/github_flow_templates/.github/actions/cpflow-build-docker-image/action.yml
213
+ - lib/github_flow_templates/.github/actions/cpflow-delete-control-plane-app/action.yml
214
+ - lib/github_flow_templates/.github/actions/cpflow-delete-control-plane-app/delete-app.sh
215
+ - lib/github_flow_templates/.github/actions/cpflow-detect-release-phase/action.yml
216
+ - lib/github_flow_templates/.github/actions/cpflow-setup-environment/action.yml
217
+ - lib/github_flow_templates/.github/actions/cpflow-validate-config/action.yml
218
+ - lib/github_flow_templates/.github/actions/cpflow-wait-for-health/action.yml
219
+ - lib/github_flow_templates/.github/cpflow-help.md
220
+ - lib/github_flow_templates/.github/workflows/cpflow-cleanup-stale-review-apps.yml
221
+ - lib/github_flow_templates/.github/workflows/cpflow-delete-review-app.yml
222
+ - lib/github_flow_templates/.github/workflows/cpflow-deploy-review-app.yml
223
+ - lib/github_flow_templates/.github/workflows/cpflow-deploy-staging.yml
224
+ - lib/github_flow_templates/.github/workflows/cpflow-help-command.yml
225
+ - lib/github_flow_templates/.github/workflows/cpflow-promote-staging-to-production.yml
226
+ - lib/github_flow_templates/.github/workflows/cpflow-review-app-help.yml
192
227
  - lib/patches/array.rb
193
228
  - lib/patches/hash.rb
194
229
  - lib/patches/string.rb
@@ -197,6 +232,12 @@ files:
197
232
  - script/add_command
198
233
  - script/check_command_docs
199
234
  - script/check_cpln_links
235
+ - script/precommit/check_command_docs
236
+ - script/precommit/check_cpln_links
237
+ - script/precommit/check_trailing_newlines
238
+ - script/precommit/get_changed_files
239
+ - script/precommit/ruby_autofix
240
+ - script/precommit/ruby_lint
200
241
  - script/rename_command
201
242
  - script/update_command_docs
202
243
  - templates/app.yml
@@ -221,14 +262,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
262
  requirements:
222
263
  - - ">="
223
264
  - !ruby/object:Gem::Version
224
- version: 2.7.0
265
+ version: 3.0.0
225
266
  required_rubygems_version: !ruby/object:Gem::Requirement
226
267
  requirements:
227
- - - ">="
268
+ - - ">"
228
269
  - !ruby/object:Gem::Version
229
- version: '0'
270
+ version: 1.3.1
230
271
  requirements: []
231
- rubygems_version: 3.5.11
272
+ rubygems_version: 3.4.10
232
273
  signing_key:
233
274
  specification_version: 4
234
275
  summary: Control Plane Flow