예제 #1
0
def generate_pmbuild_config(config, profile):
    print(
        "--------------------------------------------------------------------------------"
    )
    print(
        "pmbuild live reload config -----------------------------------------------------"
    )
    print(
        "--------------------------------------------------------------------------------"
    )
    if "data_dir" not in config:
        print(
            "[error]: did not generate pmbuild_config.json for live reloading")
        return
    print("writing " + config["data_dir"] + "/" + "pmbuild_config.json")
    wd = os.getcwd()
    pmd = util.sanitize_file_path(config["env"]["pmtech_dir"])
    md = {
        "profile": profile,
        "pmtech_dir": pmd,
        "pmbuild": "cd " + wd + " && " + pmd + "pmbuild " + profile + " "
    }
    util.create_dir(config["data_dir"])
    f = open(os.path.join(config["data_dir"], "pmbuild_config.json"), "w+")
    f.write(json.dumps(md, indent=4))
예제 #2
0
def python_tool_to_platform(tool):
    tool = util.sanitize_file_path(tool)
    if platform.system() == "Windows":
        tool = "py -3 " + tool
    else:
        tool = "python3 " + tool
    return tool
예제 #3
0
def get_task_files(task):
    outputs = []
    if len(task) != 2:
        print("[error] file tasks must be an array of size 2 [src, dst]")
        exit(1)
    fn = task[0].find("*")
    if fn != -1:
        # wildcards
        fnroot = task[0][:fn - 1]
        for root, dirs, files in os.walk(fnroot):
            for file in files:
                src = util.sanitize_file_path(os.path.join(root, file))
                if is_excluded(src):
                    continue
                if fnmatch.fnmatch(src, task[0]):
                    dst = src.replace(util.sanitize_file_path(fnroot),
                                      util.sanitize_file_path(task[1]))
                    outputs.append((src, dst))
    elif os.path.isdir(task[0]):
        # dir
        for root, dirs, files in os.walk(task[0]):
            for file in files:
                src = util.sanitize_file_path(os.path.join(root, file))
                if is_excluded(src):
                    continue
                dst = src.replace(util.sanitize_file_path(task[0]),
                                  util.sanitize_file_path(task[1]))
                outputs.append((src, dst))
    else:
        # single file
        if not is_excluded(task[0]):
            outputs.append((task[0], task[1]))
    return outputs
예제 #4
0
def export_config_for_directory(filedir, platform):
    filepath = util.sanitize_file_path(filedir)
    dirtree = filepath.split(os.sep)
    export_dict = dict()
    subdir = ""
    for i in range(0, len(dirtree)):
        subdir = os.path.join(subdir, dirtree[i])
        export = os.path.join(subdir, "export.jsn")
        if os.path.exists(export):
            dir_dict = jsn.loads(open(export, "r").read())
            util.merge_dicts(export_dict, dir_dict)
    if platform in export_dict.keys():
        util.merge_dicts(export_dict, export_dict[platform])
    return export_dict
예제 #5
0
def tool_to_platform(tool):
    tool = util.sanitize_file_path(tool)
    tool = tool.replace("$platform", util.get_platform_name())
    if platform.system() == "Windows":
        tool += ".exe"
    return tool