<filename>bin/macro_gen.py
#!/bin/python
from os import path, walk
import sys
import argparse
import yaml
import re
import json

def macro_gen(STRONTIC_PATH, REPO_PATH, VERBOSE):

    macros = []
    macro = dict()

    with open(STRONTIC_PATH, 'r', encoding='utf-8-sig') as file:
        strontic_objects = json.load(file,strict=False)

    for process_object, values in strontic_objects.items():
        if 'meta_original_filename' in values:
            # make macro object
            macro['definition'] = 'Processes.process_name=' + process_object.split("-")[0] + ' OR Processes.original_file_name=' + values['meta_original_filename']
            macro['description'] = "matches the process with its original file name, data for this macro came from: https://strontic.github.io/"
            macro['name'] = process_object.split("-")[0].lower().replace(".", "_")
            macros.append(macro)

            if VERBOSE:
                print("generating macro: {0} with definition: {1}".format(macro['name'], macro['definition']))

    #final_macros = []
    # check for duplicate first
    #for macro in macros:
    #    if macro not in final_macros:
    #        final_macros.append(macro)
        #else:
        #    extended_definition = ' OR Processes.process_name=' + process_object.split("-")[0] + ' OR Processes.original_file_name=' + values['meta_original_filename']
        #    macro['definition'] = macro['definition'] + extended_definition
            #print(macro['definition'])

    #print(macros)
    return len(macros)


def main(args):

    parser = argparse.ArgumentParser(description="keeps yamls in security_content sorted and pretty printed with custom sort keys, \
            meant to run quitely for CI, use -v flag to make it bark")

    parser.add_argument("-s", "--strontic_json", required=True, help="path to strontic json")
    parser.add_argument("-p", "--path", required=True, help="path to security_content repo")
    parser.add_argument("-v", "--verbose", required=False, default=False, action='store_true', help="prints verbose output")

    # parse them
    args = parser.parse_args()
    STRONTIC_PATH = args.strontic_json
    REPO_PATH = args.path
    VERBOSE = args.verbose
    generated_count = macro_gen(STRONTIC_PATH, REPO_PATH, VERBOSE)
    #if VERBOSE:
    print("generated {0} macros from strontics list".format(generated_count))

    print("finished successfully!")


if __name__ == "__main__":
    main(sys.argv[1:])

<filename>bin/macro_gen.py
#!/bin/python
from os import path, walk
import sys
import argparse
import yaml
import re
import json

def macro_gen(STRONTIC_PATH, REPO_PATH, VERBOSE):

    macros = []
    macro = dict()

    with open(STRONTIC_PATH, 'r', encoding='utf-8-sig') as file:
        strontic_objects = json.load(file,strict=False)

    for process_object, values in strontic_objects.items():
        if 'meta_original_filename' in values:
            # make macro object
            macro['definition'] = 'Processes.process_name=' + process_object.split("-")[0] + ' OR Processes.original_file_name=' + values['meta_original_filename']
            macro['description'] = "matches the process with its original file name, data for this macro came from: https://strontic.github.io/"
            macro['name'] = process_object.split("-")[0].lower().replace(".", "_")
            macros.append(macro)

            if VERBOSE:
                print("generating macro: {0} with definition: {1}".format(macro['name'], macro['definition']))

    #final_macros = []
    # check for duplicate first
    #for macro in macros:
    #    if macro not in final_macros:
    #        final_macros.append(macro)
        #else:
        #    extended_definition = ' OR Processes.process_name=' + process_object.split("-")[0] + ' OR Processes.original_file_name=' + values['meta_original_filename']
        #    macro['definition'] = macro['definition'] + extended_definition
            #print(macro['definition'])

    #print(macros)
    return len(macros)


def main(args):

    parser = argparse.ArgumentParser(description="keeps yamls in security_content sorted and pretty printed with custom sort keys, \
            meant to run quitely for CI, use -v flag to make it bark")

    parser.add_argument("-s", "--strontic_json", required=True, help="path to strontic json")
    parser.add_argument("-p", "--path", required=True, help="path to security_content repo")
    parser.add_argument("-v", "--verbose", required=False, default=False, action='store_true', help="prints verbose output")

    # parse them
    args = parser.parse_args()
    STRONTIC_PATH = args.strontic_json
    REPO_PATH = args.path
    VERBOSE = args.verbose
    generated_count = macro_gen(STRONTIC_PATH, REPO_PATH, VERBOSE)
    #if VERBOSE:
    print("generated {0} macros from strontics list".format(generated_count))

    print("finished successfully!")


if __name__ == "__main__":
    main(sys.argv[1:])

#!/bin/python # make macro object #final_macros = [] # check for duplicate first #for macro in macros: #    if macro not in final_macros: #        final_macros.append(macro) #else: #    extended_definition = ' OR Processes.process_name=' + process_object.split("-")[0] + ' OR Processes.original_file_name=' + values['meta_original_filename'] #    macro['definition'] = macro['definition'] + extended_definition #print(macro['definition']) #print(macros) # parse them #if VERBOSE: