aboutsummaryrefslogtreecommitdiff
path: root/app/jobs/govuk_guix/job.rb
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-02-18 11:23:41 +0000
committerChristopher Baines <mail@cbaines.net>2018-03-29 07:41:09 +0100
commitbc1ffc5214ab3f563b60523d9c349fab7974e634 (patch)
tree1caa1ed8bf2fb96c4d340aeffd53cd50a8799980 /app/jobs/govuk_guix/job.rb
parent700b8b0a112fa976b9850418a7f0c71d95b6dd79 (diff)
downloadgovuk-mini-environment-admin-bc1ffc5214ab3f563b60523d9c349fab7974e634.tar
govuk-mini-environment-admin-bc1ffc5214ab3f563b60523d9c349fab7974e634.tar.gz
Add some govuk-guix related jobs
And various other views and routes.
Diffstat (limited to 'app/jobs/govuk_guix/job.rb')
-rw-r--r--app/jobs/govuk_guix/job.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/jobs/govuk_guix/job.rb b/app/jobs/govuk_guix/job.rb
new file mode 100644
index 0000000..0161cb1
--- /dev/null
+++ b/app/jobs/govuk_guix/job.rb
@@ -0,0 +1,24 @@
+class GovukGuix::Job < Que::Job
+ def run_command(command)
+ logger.debug("#{self.class}: Running command #{command}")
+
+ Open3.popen2e(*command) do |stdin, stdout_and_stderr, wait_thr|
+ logger.info("#{self.class}: commmand running, pid #{wait_thr.pid}")
+
+ output = []
+ stdout_and_stderr.each_line do |line|
+ logger.debug("#{self.class}: #{line}")
+ output << line
+ end
+
+ exit_status = wait_thr.value
+ unless exit_status == 0
+ logger.error("#{self.class}: failed, exit status #{exit_status}")
+
+ raise "#{output.join}\n"
+ end
+
+ yield(output)
+ end
+ end
+end