confgen: base config creation on output type args
This commit is contained in:
parent
b173cf2817
commit
61329f60c3
1 changed files with 15 additions and 22 deletions
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue