Skip to content

Commit

Permalink
devtools/label: Add initial script that can label issues/PRs (#14296)
Browse files Browse the repository at this point in the history
devtools/label: Add initial script to auto-label issues/PRs.

 The first iteration of this script only allows users to add a version label based on the local branch version.yml.
  • Loading branch information
roaksoax authored Jun 28, 2022
1 parent dfb1098 commit e9d4d02
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions devtools/label
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/usr/bin/env python3
"""Cherry pick and backport a PR"""
from __future__ import print_function

from builtins import input
import sys
import os
import argparse
from os.path import expanduser
import re
from subprocess import check_call, call, check_output
import requests
import json

usage = """
Example usage:
./devtools/label <pr_number>
"""


def main():
"""Main"""
parser = argparse.ArgumentParser(
description="Adds a label to a pull request",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=usage)
parser.add_argument("pr_number",
help="The PR number being merged (e.g. 2345)")
args = parser.parse_args()

print(args)

create_label(parser, args)

def create_label(parser, args):
info("Checking if GitHub API token is available in `~/.elastic/github.token`")
token = get_github_token()

if not token:
info("GitHub API token not available.")
else:
# initialize github
session = github_session(token)
base = "https://api.github.com/repos/elastic/logstash"

# add labels
labels = []

# get the version (vX.Y.Z) we are merging to
version = get_version(os.getcwd())
if version:
labels.append(version)

session.post(
base + "/issues/{}/labels".format(args.pr_number), json=labels)

def get_version(base_dir):
with open(os.path.join(base_dir, "versions.yml"), "r") as f:
for line in f:
if line.startswith('logstash:'):
return "v" + line.split(':')[-1].strip()

def get_github_token():
try:
token = open(expanduser("~/.elastic/github.token"), "r").read().strip()
except:
token = False
return token

def github_session(token):
session = requests.Session()
session.headers.update({"Authorization": "token " + token})
return session

def info(msg):
print("\nINFO: {}".format(msg))

if __name__ == "__main__":
sys.exit(main())

0 comments on commit e9d4d02

Please sign in to comment.