diff options
author | zlg <zlg@zlg.space> | 2020-08-02 16:57:26 -0700 |
---|---|---|
committer | zlg <zlg@zlg.space> | 2020-08-02 16:57:26 -0700 |
commit | bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4 (patch) | |
tree | 164b7ef5bbe4167fce0f49f7a18d48f541bc5191 /src/vgstash_cli.py | |
parent | setup.py: Bump to 0.3b5 for PyPI (diff) | |
download | vgstash-bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4.tar.gz vgstash-bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4.tar.bz2 vgstash-bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4.tar.xz vgstash-bc6fd1e41c3e362c42414b4f582f5ebd2613a8a4.zip |
vgstash_cli: Show what happens to note data
The 'notes -e' command used to always tell the user that the notes had
been updated. This was incorrect.
Now 'notes -e' will detect three states:
* The note has been changed
* The note has not been changed
* The editor can't be loaded (set via EDITOR)
ZLG-Bug: 3
Diffstat (limited to 'src/vgstash_cli.py')
-rwxr-xr-x | src/vgstash_cli.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/vgstash_cli.py b/src/vgstash_cli.py index d00f339..1967458 100755 --- a/src/vgstash_cli.py +++ b/src/vgstash_cli.py @@ -194,18 +194,35 @@ def notes(title, system, edit): with tempfile.NamedTemporaryFile() as tmpfile: tmpfile.write(target_game.notes.encode("UTF-8")) tmpfile.flush() - process = subprocess.run([os.getenv("EDITOR", "vim"), tmpfile.name]) + pre_stat = os.stat(tmpfile.name) + o_mtime = pre_stat.st_mtime + o_size = pre_stat.st_size + try: + process = subprocess.run([os.getenv("EDITOR", "vim"), tmpfile.name]) + except: + click.echo("Could not run editor. Is it set correctly?") + return tmpfile.flush() tmpfile.seek(0) + post_stat = os.stat(tmpfile.name) + n_mtime = post_stat.st_mtime + n_size = post_stat.st_size note_arr = [] for line in tmpfile: note_arr.append(line.decode("UTF-8").rstrip("\r\n")) target_game.notes = "\n".join(note_arr) db.update_game(target_game, target_game) - if process.returncode == 0: - click.echo("Notes for {} on {} have been updated!".format(target_game.title, target_game.system)) - else: - click.echo("Couldn't find an editor for notes. Check the EDITOR environment variable and try again.") + if process.returncode == 0: + # determine what actually happened + if o_mtime == n_mtime: + if o_size == n_size: + click.echo("Notes for {} on {} left unchanged.".format(target_game.title, target_game.system)) + elif n_mtime > o_mtime and o_size != n_size: + click.echo("Notes for {} on {} have been updated!".format(target_game.title, target_game.system)) + return + else: + click.echo("The editor crashed. Please try again.") + return else: if len(target_game.notes) > 0: click.echo("Notes for {} on {}:".format(target_game.title, target_game.system)) |