confgen: base config creation on output type args

This commit is contained in:
Renz Christian Bagaporo 2019-01-15 23:06:50 +08:00
parent b173cf2817
commit 61329f60c3

View file

@ -52,10 +52,6 @@ def main():
default=[], default=[],
action='append') action='append')
parser.add_argument('--create-config-if-missing',
help='If set, a new config file will be saved if the old one is not found',
action='store_true')
parser.add_argument('--kconfig', parser.add_argument('--kconfig',
help='KConfig file with config item definitions', help='KConfig file with config item definitions',
required=True) required=True)
@ -95,26 +91,22 @@ def main():
raise RuntimeError("Defaults file not found: %s" % name) raise RuntimeError("Defaults file not found: %s" % name)
config.load_config(name, replace=False) config.load_config(name, replace=False)
if args.config is not None: # If config file previously exists, load it
if os.path.exists(args.config): if args.config and os.path.exists(args.config):
config.load_config(args.config) config.load_config(args.config, replace=False)
elif args.create_config_if_missing:
print("Creating config file %s..." % args.config)
config.write_config(args.config)
elif args.config is None:
raise RuntimeError("Config file not found: %s" % args.config)
for output_type, filename in args.output: # Output the files specified in the arguments
temp_file = tempfile.mktemp(prefix="confgen_tmp") for output_type, filename in args.output:
temp_file = tempfile.mktemp(prefix="confgen_tmp")
try:
output_function = OUTPUT_FORMATS[output_type]
output_function(config, temp_file)
update_if_changed(temp_file, filename)
finally:
try: try:
output_function = OUTPUT_FORMATS[output_type] os.remove(temp_file)
output_function(config, temp_file) except OSError:
update_if_changed(temp_file, filename) pass
finally:
try:
os.remove(temp_file)
except OSError:
pass
def write_config(config, filename): def write_config(config, filename):
@ -275,6 +267,7 @@ def write_json_menus(config, filename):
def update_if_changed(source, destination): def update_if_changed(source, destination):
with open(source, "r") as f: with open(source, "r") as f:
source_contents = f.read() source_contents = f.read()
if os.path.exists(destination): if os.path.exists(destination):
with open(destination, "r") as f: with open(destination, "r") as f:
dest_contents = f.read() dest_contents = f.read()