Also rename yaml filename with rename command (#3447)

This commit is contained in:
Jesse Hills 2022-05-09 19:16:46 +12:00 committed by GitHub
parent 50a32b387e
commit 2e4645310b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -496,14 +496,14 @@ def command_rename(args, config):
)
)
return 1
# Load existing yaml file
with open(CORE.config_path, mode="r+", encoding="utf-8") as raw_file:
raw_contents = raw_file.read()
yaml = yaml_util.load_yaml(CORE.config_path)
if CONF_ESPHOME not in yaml or CONF_NAME not in yaml[CONF_ESPHOME]:
print(
color(
Fore.BOLD_RED, "Complex YAML files cannot be automatically renamed."
)
color(Fore.BOLD_RED, "Complex YAML files cannot be automatically renamed.")
)
return 1
old_name = yaml[CONF_ESPHOME][CONF_NAME]
@ -536,23 +536,24 @@ def command_rename(args, config):
flags=re.MULTILINE,
)
raw_file.seek(0)
raw_file.write(new_raw)
raw_file.flush()
print(f"Updating {color(Fore.CYAN, CORE.config_path)}")
new_path = os.path.join(CORE.config_dir, args.name + ".yaml")
print(
f"Updating {color(Fore.CYAN, CORE.config_path)} to {color(Fore.CYAN, new_path)}"
)
print()
rc = run_external_process("esphome", "config", CORE.config_path)
with open(new_path, mode="w", encoding="utf-8") as new_file:
new_file.write(new_raw)
rc = run_external_process("esphome", "config", new_path)
if rc != 0:
raw_file.seek(0)
raw_file.write(raw_contents)
print(color(Fore.BOLD_RED, "Rename failed. Reverting changes."))
os.remove(new_path)
return 1
cli_args = [
"run",
CORE.config_path,
new_path,
"--no-logs",
"--device",
CORE.address,
@ -566,10 +567,11 @@ def command_rename(args, config):
except KeyboardInterrupt:
rc = 1
if rc != 0:
raw_file.seek(0)
raw_file.write(raw_contents)
os.remove(new_path)
return 1
os.remove(CORE.config_path)
print(color(Fore.BOLD_GREEN, "SUCCESS"))
print()
return 0