next updates
This commit is contained in:
79
tools/open_doc_issue.py
Normal file
79
tools/open_doc_issue.py
Normal file
@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import argparse
|
||||
import re
|
||||
import requests
|
||||
import sys
|
||||
|
||||
import otc_metadata.services
|
||||
|
||||
api_session = requests.Session()
|
||||
|
||||
|
||||
def open_issue(args, repository, issue_data):
|
||||
#if issue_data['repository'] not in ['docs/elastic-cloud-server']:
|
||||
# return
|
||||
req = dict(
|
||||
title=issue_data["title"],
|
||||
body=issue_data["body"].replace("\\n", "\n")
|
||||
)
|
||||
if "assignees" in issue_data:
|
||||
req["assignees"] = issue_data["assignees"]
|
||||
if "labels" in issue_data:
|
||||
req["labels"] = issue_data["labels"]
|
||||
print(req)
|
||||
rsp = api_session.post(
|
||||
f"{args.api_url}/repos/{repository}/issues",
|
||||
json=req
|
||||
)
|
||||
if rsp.status_code != 201:
|
||||
print(rsp.text)
|
||||
print(f"Going to open issue with title {issue_data['title']} in {repository}")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Open Issue for every document.')
|
||||
parser.add_argument(
|
||||
'token', metavar='token', help='API token')
|
||||
parser.add_argument(
|
||||
'--api-url', help='API base url of the Git hoster'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--environment', help='Environment for the repository'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--title', required=True, help='Issue title'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--body', required=True, help='Issue body'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--repo', help='Repository to report issue in (instead of doc repository).'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--assignee', help='Issue assignee to use instead of document service assignees.'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--labels', help='Issue labels to use (comma separated list of label IDs).'
|
||||
)
|
||||
args = parser.parse_args()
|
||||
data = otc_metadata.services.Services()
|
||||
api_session.headers.update({'Authorization': f"token {args.token}"})
|
||||
|
||||
for doc in data.all_docs_full(environment=args.environment):
|
||||
issue_data=dict(
|
||||
title=args.title.format(**doc),
|
||||
body=args.body.format(**doc),
|
||||
repository=doc["repository"]
|
||||
)
|
||||
if "assignees" in doc:
|
||||
issue_data["assignees"] = doc["assignees"]
|
||||
if args.assignee:
|
||||
issue_data["assignees"] = [args.assignee]
|
||||
if args.labels:
|
||||
issue_data["labels"] = [int(x) for x in args.labels.split(',')]
|
||||
open_issue(args, args.repo or doc["repository"], issue_data)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Reference in New Issue
Block a user