Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
header.py 2.84 KiB
import os
from generator import format, qms

def remove_header(localroot, root, filename):
    nfirstlines = []

    os.chdir(root)

    # count the number of lines
    count = 0
    n = 0
    headerCheck = False
    with open(filename, 'r') as f:
        for line in f:
            count += 1

            # check if the header is actually a header
            if count > 1 and line[0:3] == "---":
                headerCheck = True
                n = count

    # remove the header
    if headerCheck:
        with open(filename) as f, open("tmp"+filename, "w") as out:
            for _ in range(n):
                nfirstlines.append(next(f))
            for line in f:
                out.write(line)

        os.remove(filename)
        os.rename("tmp"+filename, filename)
        print(" - Old header removed.")

    # change back to the local root
    os.chdir(localroot)

    return n

def element_header(folder, prefix, permalink, element):

    if (
         ("handbook-annexes" in permalink or "handbook-additional" in permalink) or
         ("lab-software" in permalink or "lab-equipment" in permalink or "lab-hsa" in permalink) or
         ("qms-policies" in permalink or "qms-sops" in permalink)
       ):
        element += prefix + "/cards/" + format.root_href(permalink) + "\n"
        element += prefix + "/" + folder + "/cards/" + format.root_href(permalink) + "\n"

    return element

def generate_header(folder, permalink, shortcut, order, legacy_from, title, description, name="", nb=""):
    header = "---\n"

    if len(order) > 0:
        header += "card_order: " + str(order) + "\n"

    header += "layout: page\n"
    header += "permalink: " + permalink + "\n"
    header += "shortcut: " + format.root_href(shortcut) + "\n"
    header += "redirect_from:\n"
    header += "  - /cards/" + shortcut + "\n"
    header += "  - /" + folder + "/cards/" + shortcut + "\n"

    # specific for deploying when the reponame is in the baseURL
    header += "  - /" + format.root_href(shortcut).replace(":", "/") + "\n"
    header += "  - /" + folder + permalink + "\n"

    # generate specific redirects
    header = element_header(folder, "  - ", shortcut, header)

    qmsDoc = qms.determine_qms(permalink)


    # include the legacy section in the redirect_from section
    if len(legacy_from) > 0:
        for item in legacy_from[1:-1]:
            header += str(item)

    # add the title and description
    if qmsDoc:
        if len(title) > 0:
            header += 'title: "' + title + '"\n'
        if len(description) > 0:
            header += 'description: "' + description + '"\n'

    # include the legacy section
    if len(legacy_from) > 0:
        for item in legacy_from:
            header += str(item)
    else:
        header += "---"

    # add title for QMS documents
    if qmsDoc:
        header += qms.add_link(title, name, nb)

    print(title)

    return header