Skip to content

Commit 9ae732f

Browse files
author
Artem Panfilov
committed
github: add script to create and delete tags
Add a script to create and delete tags via GitHub REST API. Signed-off-by: Artem Panfilov <[email protected]>
1 parent 1dd6acc commit 9ae732f

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

github/gh-tags

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env python3
2+
3+
import argparse
4+
import logging
5+
import sys
6+
7+
import ghapi
8+
9+
10+
def parse_arguments():
11+
parser = argparse.ArgumentParser()
12+
13+
subparsers = parser.add_subparsers(title="commands",
14+
required=True,
15+
dest="command")
16+
17+
parser_create = subparsers.add_parser('create', help="Create tag")
18+
parser_create.add_argument("tag")
19+
group = parser_create.add_mutually_exclusive_group(required=True)
20+
group.add_argument("--commit")
21+
group.add_argument("--branch")
22+
23+
parser_delete = subparsers.add_parser('delete', help="Delete tag")
24+
parser_delete.add_argument("tag")
25+
26+
for subparser in [parser_create, parser_delete]:
27+
subparser.add_argument("--owner", required=True, )
28+
subparser.add_argument("--project", required=True)
29+
subparser.add_argument("--oauth-token", required=True)
30+
31+
return parser.parse_args()
32+
33+
34+
def main():
35+
logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.INFO)
36+
args = parse_arguments()
37+
command = args.command
38+
tag = args.tag
39+
40+
try:
41+
gh_conn = ghapi.GitHubApi(args.owner, args.project, args.oauth_token)
42+
43+
if command == "create":
44+
if args.branch:
45+
commit = gh_conn.last_commit_hash_on_branch(args.branch)
46+
else:
47+
commit = args.commit
48+
gh_conn.create_tag_reference(tag, commit)
49+
if command == "delete":
50+
gh_conn.delete_tag_reference(tag)
51+
except ghapi.GitHubApiException as ex:
52+
logging.error(ex)
53+
sys.exit(1)
54+
55+
56+
if __name__ == "__main__":
57+
main()

0 commit comments

Comments
 (0)