Fix cutoff thrashing/skipping
This fixes two main bugs I've been seeing sporadically for a while:
1. `peat` would sometimes "thrash" and run the command a bunch of times in a row
even though nothing was changing between runs.
2. Other times `peat` would miss a change and I'd have to manually save a file
again to trigger another run.
Neither of these were too annoying to work around, so I haven't gotten around to
fixing them until now.
author |
Steve Losh <steve@stevelosh.com> |
date |
Tue, 23 Feb 2016 13:41:50 +0000 |
parents |
7a725f724e08
|
children |
2d1174aea645
|
branches/tags |
v1.0.2 |
files |
peat |
Changes
--- a/peat Tue Feb 23 13:36:05 2016 +0000
+++ b/peat Tue Feb 23 13:41:50 2016 +0000
@@ -24,6 +24,8 @@
get_paths = lambda: set()
verbose = True
dynamic = None
+last_run = None
+
USAGE = r"""usage: %prog [options] COMMAND
@@ -54,10 +56,9 @@
sys.exit(1)
def check(paths):
- cutoff = int(time.time() - interval)
for p in paths:
try:
- if os.stat(p).st_mtime >= cutoff:
+ if os.stat(p).st_mtime >= last_run:
return True
except OSError as e:
# If the file has been deleted since we started watching, don't
@@ -69,6 +70,8 @@
return False
def run():
+ global last_run
+ last_run = time.time()
log("running: " + command)
subprocess.call(command, shell=True)