Skip to content

Commit 9f99211

Browse files
committed
Merge branch 'support-delete-given-release-type'
* support-delete-given-release-type: gh_release: Support deleting releases based on release type
2 parents 5421d1a + 68ad3db commit 9f99211

File tree

3 files changed

+45
-5
lines changed

3 files changed

+45
-5
lines changed

CHANGES.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ CLI
1111

1212
* ``release-notes``: Report a meaningful error if user omitted to set ``EDITOR`` env. variable.
1313

14+
15+
Features (CLI and Python API)
16+
-----------------------------
17+
18+
* ``delete`` command:
19+
20+
* `delete`:
21+
22+
* Add support for ``--release-type``. Fix issue [#50](https://github.com/j0057/github-release/pull/50). Contributed by [@Flamefire](https://github.com/Flamefire).
23+
24+
1425
Issues (CLI and Python API)
1526
---------------------------
1627

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ It understands the following commands:
185185
--publish
186186
--prerelease
187187
--target-commitish TARGET_COMMITISH
188+
--help
188189
[ASSET_PATTERN]...
189190
```
190191

@@ -199,8 +200,19 @@ It understands the following commands:
199200
--prerelease/--release
200201
--dry-run
201202
--verbose
203+
--help
202204
```
203205

206+
* delete:
207+
208+
```bash
209+
--keep-pattern KEEP_PATTERN
210+
--type [all, draft, prerelease, release]
211+
--dry-run
212+
--verbose
213+
--help
214+
[ASSET_PATTERN]...
215+
```
204216

205217
## ``asset`` command
206218

@@ -464,4 +476,4 @@ It is covered by the Apache License, Version 2.0:
464476
http://www.apache.org/licenses/LICENSE-2.0
465477

466478
The license file was added at revision 0393859 on 2017-02-12, but you may
467-
consider that the license applies to all prior revisions as well.
479+
consider that the license applies to all prior revisions as well.

github_release.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,18 @@ def print_release_info(release, title=None, indent=""):
255255
print_asset_info(i, asset, indent=indent)
256256

257257

258+
def get_release_type(release):
259+
"""Return the type of the release
260+
261+
Either 'draft', 'prerelease' (no draft) or 'release' (neither)
262+
"""
263+
if release['draft']:
264+
return 'draft'
265+
if release['prerelease']:
266+
return 'prerelease'
267+
return 'release'
268+
269+
258270
def get_releases(repo_name, verbose=False):
259271

260272
releases = []
@@ -515,6 +527,7 @@ def gh_release_edit(repo_name, current_tag_name,
515527
@gh_release.command("delete")
516528
@click.argument("pattern")
517529
@click.option("--keep-pattern")
530+
@click.option("--release-type", type=click.Choice(['all', 'draft', 'prerelease', 'release']), default='all')
518531
@click.option("--dry-run", is_flag=True, default=False)
519532
@click.option("--verbose", is_flag=True, default=False)
520533
@click.pass_obj
@@ -524,7 +537,7 @@ def _cli_release_delete(*args, **kwargs):
524537

525538

526539
@_check_for_credentials
527-
def gh_release_delete(repo_name, pattern, keep_pattern=None,
540+
def gh_release_delete(repo_name, pattern, keep_pattern=None, release_type='all',
528541
dry_run=False, verbose=False):
529542
releases = get_releases(repo_name)
530543
candidates = []
@@ -538,9 +551,13 @@ def gh_release_delete(repo_name, pattern, keep_pattern=None,
538551
if keep_pattern is not None:
539552
if fnmatch.fnmatch(release['tag_name'], keep_pattern):
540553
continue
541-
candidates.append(release['tag_name'])
542-
for tag_name in candidates:
543-
release = get_release(repo_name, tag_name)
554+
if release_type != 'all' and release_type != get_release_type(release):
555+
if verbose:
556+
print('skipping release {0}: type {1} is not {2}'.format(
557+
release['tag_name'], get_release_type(release), release_type))
558+
continue
559+
candidates.append(release)
560+
for release in candidates:
544561
print('deleting release {0}'.format(release['tag_name']))
545562
if dry_run:
546563
continue

0 commit comments

Comments
 (0)