Skip to content
Snippets Groups Projects
Commit e3a76466 authored by Jonas Höppner's avatar Jonas Höppner
Browse files

scripts: Add simple python script to convert license.manifest to md table

parent f6b301dc
No related branches found
No related tags found
1 merge request!422scripts: Add simple python script to convert license.manifest to md table
Pipeline #158279 skipped with stage
#!/usr/bin/env python3
import argparse
import glob
import os
class Package:
def __init__(self, item):
self.name = ""
self.version = ""
self.recipe = ""
self.lic = ""
self.add_item(item)
def __str__(self):
return f"{self.name} {self.version} {self.lic}"
@staticmethod
def md_table_line(items, fill=""):
l = len(items)
if l < 4:
i = 0
while len(items) < 4:
items.append(items[i])
i += 1
i %= l
return f"| {items[0]:{fill}30} | {items[1]:{fill}30} | {items[2]:{fill}30} | {items[3]:{fill}50} |\n"
@property
def md_table_row(self):
return Package.md_table_line([self.name, self.version, self.recipe, self.lic])
@staticmethod
def md_table_head():
return Package.md_table_line(
["Package", "Version", "Recipe", "License"]
) + Package.md_table_line([""], "->")
def add_item(self, item):
tokens = item.split(":", maxsplit=1)
if tokens[0] == "PACKAGE NAME":
self.name = tokens[1].strip()
elif tokens[0] == "PACKAGE VERSION":
self.version = tokens[1].strip()
elif tokens[0] == "RECIPE NAME":
self.recipe = tokens[1].strip()
elif tokens[0] == "LICENSE":
self.lic = tokens[1].strip()
@property
def is_valid(self):
return (
self.name != ""
and self.version != ""
and self.lic != ""
and self.recipe != ""
)
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"filename",
help="""File(s) to process""",
nargs="+",
)
args, _ = parser.parse_known_args()
packages = []
package = None
for filename in args.filename:
for input_filename in glob.glob(filename):
output_filename = f"{os.path.splitext(input_filename)[0]}.md"
print(f"Converting {input_filename} to {output_filename}")
with open(input_filename, encoding="UTF-8") as fin:
while True:
line = fin.readline()
if not line:
break
line = line.strip()
if len(line) == 0:
continue
if package is None:
package = Package(line)
else:
package.add_item(line)
if package.is_valid:
packages.append(package)
package = None
with open(output_filename, "w", encoding="UTF-8") as fout:
fout.write(Package.md_table_head())
for p in packages:
fout.write(p.md_table_row)
if __name__ == "__main__":
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment