summaryrefslogtreecommitdiff
path: root/desktop-cronish
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-cronish')
-rwxr-xr-xdesktop-cronish18
1 files changed, 17 insertions, 1 deletions
diff --git a/desktop-cronish b/desktop-cronish
index eb34c6e..70f2e40 100755
--- a/desktop-cronish
+++ b/desktop-cronish
@@ -17,6 +17,7 @@
import cliapp
import logging
+import os
import time
import sys
import ttystatus
@@ -78,10 +79,11 @@ class DesktopCronish(cliapp.Application):
for job_name, job in self.jobs.items():
if 'interval' in job:
job_when = self.when_interval_job(job_name, job)
+ elif 'trigger-file' in job:
+ job_when = self.when_trigger_file_job(job_name, job)
else:
raise cliapp.AppException(
'Unknown job trigger for %s' % job_name)
- job_when = self.previously.get(job_name, 0) + job['interval']
if next_job_name is None or job_when <= next_when:
next_job_name = job_name
next_when = job_when
@@ -90,6 +92,20 @@ class DesktopCronish(cliapp.Application):
def when_interval_job(self, job_name, job):
return self.previously.get(job_name, 0) + job['interval']
+ def when_trigger_file_job(self, job_name, job):
+ filename = job['trigger-file']
+
+ # If file doesn't exist, trigger now.
+ if not os.path.exists(filename):
+ return self.now()
+
+ # If there is no max age for file, but it exists, never trigger.
+ if 'trigger-age' not in job:
+ return -1
+
+ mtime = os.path.getmtime(filename)
+ return mtime + job['trigger-age']
+
def wait_until(self, when, for_what):
while self.now() < when:
seconds = when - self.now()