Skip to content

Commit dd163ea

Browse files
committed
cancel editing with empty buffer
1 parent 48bfa3a commit dd163ea

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

netfoundry/ctl.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@ def create(cli):
305305

306306
create_object = edit_object_as_yaml(create_input_object)
307307

308+
if not create_object: # is False if editing cancelled by empty buffer
309+
return True
310+
308311
organization = use_organization()
309312

310313
if cli.args.resource_type == "network":
@@ -342,6 +345,9 @@ def edit(cli):
342345
edit_resource_object, network, network_group, organization = get(cli, echo=False)
343346
cli.log.debug("opening %s named '%s' for editing", cli.args.resource_type, edit_resource_object['name'])
344347
update_request_object = edit_object_as_yaml(edit_resource_object)
348+
if not update_request_object: # is False if editing cancelled by empty buffer
349+
return True
350+
345351
network.put_resource(put=update_request_object, type=cli.args.resource_type)
346352

347353
@cli.argument('query', arg_only=True, action=StoreDictKeyPair, nargs='?', help="id=UUIDv4 or query params as k=v,k=v comma-separated pairs")
@@ -774,23 +780,28 @@ def edit_object_as_yaml(edit: object):
774780
tf.seek(0)
775781
edited = tf.read()
776782
if return_code == 0:
777-
try:
778-
edited_object = yaml_loads(edited)
779-
except parser.ParserError as e:
780-
cli.log.error("invalid YAML or JSON: %s", e)
781-
save_error = True
782-
except Exception as e:
783-
cli.log.error("unknown error in %s", e)
784-
save_error = True
783+
if len(edited) == 0:
784+
cli.log.info("cancelled due to empty file")
785+
return False
785786
else:
786-
return edited_object
787+
try:
788+
edited_object = yaml_loads(edited)
789+
except parser.ParserError as e:
790+
cli.log.error("invalid YAML or JSON: %s", e)
791+
save_error = True
792+
except Exception as e:
793+
cli.log.error("unknown error in %s", e)
794+
save_error = True
795+
else:
796+
return edited_object
787797
else:
788798
cli.log.error("editor returned an error")
789799
save_error = True
790800
if save_error:
791801
with tempfile.NamedTemporaryFile(suffix=".yml") as tf:
792802
tf.write(edited.encode())
793803
cli.log.warn("your buffer was saved in %s and you may edit and redirect to the same command as stdin or --file", tf.name)
804+
exit(1)
794805

795806

796807
if __name__ == '__main__':

0 commit comments

Comments
 (0)