def configure_user(config, args): config_user = dict() if os.path.exists("config.user.jsn"): config_user = jsn.loads(open("config.user.jsn", "r").read()) if util.get_platform_name() == "win32": if "-msbuild" not in sys.argv: configure_vc_vars_all(config_user) configure_windows_sdk(config_user) if os.path.exists("config.user.jsn"): config_user = jsn.loads(open("config.user.jsn", "r").read()) util.merge_dicts(config, config_user)
def update_user_config(k, v, config): config[k] = v user = dict() if os.path.exists("config.user.jsn"): user = jsn.loads(open("config.user.jsn", "r").read()) user[k] = v bj = open("config.user.jsn", "w+") bj.write(json.dumps(user, indent=4)) bj.close()
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
def main(): start_time = time.time() # must have config.json in working directory if not os.path.exists("config.jsn"): print("[error] no config.json in current directory.") exit(1) # load jsn, inherit etc config_all = jsn.loads(open("config.jsn", "r").read()) # top level help if "-help" in sys.argv or len(sys.argv) == 1: if len(sys.argv) <= 2: pmbuild_help(config_all) exit(0) call = "run" if "-help" in sys.argv: call = "help" # first arg is build profile if call == "run": config = config_all[sys.argv[1]] # load config user for user specific values (sdk version, vcvarsall.bat etc.) configure_user(config, sys.argv) if "-cfg" in sys.argv: print(json.dumps(config, indent=4)) else: config = config_all["base"] # tasks are executed in order they are declared here tasks = collections.OrderedDict() tasks["vs_version"] = {"run": run_vs_version, "help": vs_version_help} tasks["libs"] = {"run": run_libs, "help": libs_help} tasks["premake"] = {"run": run_premake, "help": premake_help} tasks["pmfx"] = {"run": run_pmfx, "help": pmfx_help} tasks["models"] = {"run": run_models, "help": models_help} tasks["textures"] = {"run": run_textures, "help": textures_help} tasks["jsn"] = {"run": run_jsn, "help": jsn_help} tasks["copy"] = {"run": run_copy, "help": copy_help} tasks["build"] = {"run": run_build, "help": build_help} tasks["cr"] = {"run": run_cr, "help": cr_help} # clean is a special task, you must specify separately if "-clean" in sys.argv: if call == "help": clean_help(config) else: run_clean(config) # run tasks in order they are specified. for key in tasks.keys(): if call == "run": if key not in config.keys(): continue ts = time.time() run = False # check flags to include or exclude jobs if "-all" in sys.argv and "-n" + key not in sys.argv: run = True elif len(sys.argv) != 2 and "-" + key in sys.argv: run = True elif len(sys.argv) == 2: run = True # run job if run: tasks.get(key, lambda config: '')[call](config) print_duration(ts) # finally metadata for rebuilding and hot reloading generate_pmbuild_config(config, sys.argv[1]) print( "--------------------------------------------------------------------------------" ) print( "all jobs complete --------------------------------------------------------------" ) print_duration(start_time)
) print( "pmbuild (v3) -------------------------------------------------------------------" ) print( "--------------------------------------------------------------------------------" ) print("") # must have config.json in working directory if not os.path.exists("config.jsn"): print("[error] no config.json in current directory.") exit(1) # load jsn, inherit etc config_all = jsn.loads(open("config.jsn", "r").read()) # top level help if "-help" in sys.argv or len(sys.argv) == 1: if len(sys.argv) <= 2: pmbuild_help(config_all) exit(0) call = "run" if "-help" in sys.argv: call = "help" # first arg is build profile if call == "run": config = config_all[sys.argv[1]] # load config user for user specific values (sdk version, vcvarsall.bat etc.)