@@ -19,6 +19,7 @@ class Options
19
19
def release_tag = @release_tag ||= "v#{ release_version } "
20
20
def release_branch = @release_branch ||= "release-#{ release_tag } "
21
21
def current_branch = @current_branch ||= `git rev-parse --abbrev-ref HEAD` . chomp
22
+ def release_pr = @release_pr ||= `gh pr list --search "head:#{ release_branch } " --json number --jq ".[].number"` . chomp
22
23
def remote = @remote ||= 'origin'
23
24
end
24
25
@@ -79,6 +80,8 @@ class Parser
79
80
Usage:
80
81
#{ File . basename ( $PROGRAM_NAME) } [--help | --version]
81
82
83
+ Version #{ CreateGithubRelease ::VERSION }
84
+
82
85
This script reverts the effect of running the create-github-release script.
83
86
It must be run in the root directory of the work tree with the release
84
87
branch checked out (which is the state create-github-release leaves you in).
@@ -139,6 +142,16 @@ def ref_exists?(name)
139
142
$CHILD_STATUS. success?
140
143
end
141
144
145
+ def revert_release! ( options )
146
+ `gh pr comment #{ options . release_pr } --body="Reverting this release using revert-github-release"`
147
+ `git checkout #{ options . default_branch } >/dev/null`
148
+ `git branch -D #{ options . release_branch } >/dev/null`
149
+ `git tag -d #{ options . release_tag } >/dev/null`
150
+ `git push #{ options . remote } --delete #{ options . release_branch } >/dev/null`
151
+ `git push #{ options . remote } --delete #{ options . release_tag } >/dev/null`
152
+ `gh release delete #{ options . release_tag } --yes >/dev/null`
153
+ end
154
+
142
155
unless in_work_tree? && in_root_directory?
143
156
warn 'ERROR: Not in the root directory of a Git work tree'
144
157
exit 1
@@ -157,10 +170,6 @@ unless ref_exists?(options.default_branch)
157
170
exit 1
158
171
end
159
172
160
- `git checkout #{ options . default_branch } >/dev/null`
161
- `git branch -D #{ options . release_branch } >/dev/null`
162
- `git tag -d #{ options . release_tag } >/dev/null`
163
- `git push #{ options . remote } --delete #{ options . release_branch } >/dev/null`
164
- `git push #{ options . remote } --delete #{ options . release_tag } >/dev/null`
173
+ revert_release! ( options )
165
174
166
175
puts "Reverted release #{ options . release_version } "
0 commit comments