Make it possible to parse text or file
This commit is contained in:
parent
b0cd7b6b09
commit
71054bc821
|
@ -39,37 +39,55 @@ def cli():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def parse_text(input_text: str = ""):
|
def parse(input_text: str = ""):
|
||||||
"""Parses text for Jira or Bugzilla issue numbers and creates entries from them"""
|
"""Parses text for Jira or Bugzilla issue numbers and creates entries from them"""
|
||||||
if input_text == "":
|
if input_text == "":
|
||||||
click.echo("No text provided for parsing.")
|
logging.error("No text provided for parsing.")
|
||||||
for line in input_text:
|
match input_text:
|
||||||
line = line.strip()
|
case [text] if type(text) == str:
|
||||||
if results := re.findall(search_pattern, line, re.IGNORECASE):
|
logging.debug(f"{text} is a string.")
|
||||||
logging.debug(f"Found matches: {results}")
|
parse_text(text)
|
||||||
if len(results) != 1:
|
case [*line]:
|
||||||
logging.debug("More than 1 match found.")
|
logging.debug("This is a list of lines.")
|
||||||
else:
|
for line in input_text:
|
||||||
logging.debug("Only 1 match found.")
|
line = line.strip()
|
||||||
parentheses_items: list = []
|
parse_text(line)
|
||||||
# FIXME: add links to other mentioned sections, for now just link the first one
|
case _:
|
||||||
section_id = format_section_id(results[0])
|
logging.debug("This is nothing I recognize.")
|
||||||
for match in results:
|
|
||||||
issue_number = match.split("#").pop()
|
|
||||||
if "jsc" in match:
|
@cli.command("parse-text")
|
||||||
parentheses_items.append(make_jira_url(issue_number))
|
@click.argument("text")
|
||||||
if "bsc" in match:
|
def parse_text_command(text):
|
||||||
parentheses_items.append(make_bugzilla_url(issue_number))
|
parse_text(text)
|
||||||
parentheses_text = ", ".join(parentheses_items)
|
|
||||||
click.echo(make_entry(section_id, parentheses_text))
|
|
||||||
|
def parse_text(line):
|
||||||
|
if results := re.findall(search_pattern, line, re.IGNORECASE):
|
||||||
|
logging.debug(f"Found matches: {results}")
|
||||||
|
if len(results) != 1:
|
||||||
|
logging.debug("More than 1 match found.")
|
||||||
else:
|
else:
|
||||||
logging.debug(f"Nothing found in line '{line}'. Ignoring.")
|
logging.debug("1 match found.")
|
||||||
|
parentheses_items: list = []
|
||||||
|
# FIXME: add links to other mentioned sections, for now just link the first one
|
||||||
|
section_id = format_section_id(results[0])
|
||||||
|
for match in results:
|
||||||
|
issue_number = match.split("#").pop()
|
||||||
|
if "jsc" in match:
|
||||||
|
parentheses_items.append(make_jira_url(issue_number))
|
||||||
|
if "bsc" in match:
|
||||||
|
parentheses_items.append(make_bugzilla_url(issue_number))
|
||||||
|
parentheses_text = ", ".join(parentheses_items)
|
||||||
|
click.echo(make_entry(section_id, parentheses_text))
|
||||||
|
else:
|
||||||
|
logging.debug(f"Nothing found in line '{line}'. Ignoring.")
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.argument("filename", type=click.File())
|
@click.argument("filename", type=click.File())
|
||||||
def parse(filename: IO):
|
def parse_file(filename: IO):
|
||||||
parse_text(filename.readlines())
|
parse(filename.readlines())
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue