diff options
author | onefang | 2019-12-28 03:49:40 +1000 |
---|---|---|
committer | onefang | 2019-12-28 03:49:40 +1000 |
commit | 74451f4977ed4ab79f1ca7e2f6023f88cd9d5f49 (patch) | |
tree | 31ada1778f66215d31cd21e6b1267e75fdfbe924 /apt-panopticommon.lua | |
parent | Oops, forgot to uncomment code after testing. (diff) | |
download | apt-panopticon-74451f4977ed4ab79f1ca7e2f6023f88cd9d5f49.zip apt-panopticon-74451f4977ed4ab79f1ca7e2f6023f88cd9d5f49.tar.gz apt-panopticon-74451f4977ed4ab79f1ca7e2f6023f88cd9d5f49.tar.bz2 apt-panopticon-74451f4977ed4ab79f1ca7e2f6023f88cd9d5f49.tar.xz |
Refactor the executers into an actual class type thingy.
Diffstat (limited to 'apt-panopticommon.lua')
-rw-r--r-- | apt-panopticommon.lua | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/apt-panopticommon.lua b/apt-panopticommon.lua index c9194fa..a19f1e3 100644 --- a/apt-panopticommon.lua +++ b/apt-panopticommon.lua | |||
@@ -450,6 +450,65 @@ APT.fork = function(s) | |||
450 | os.execute(s .. " &") | 450 | os.execute(s .. " &") |
451 | end | 451 | end |
452 | 452 | ||
453 | |||
454 | APT.exe = function(c) | ||
455 | local exe = {status = 0, result = ''} | ||
456 | exe.cmd = c .. ' ' | ||
457 | exe.log = false | ||
458 | |||
459 | function exe:log() | ||
460 | self.log = true | ||
461 | return self | ||
462 | end | ||
463 | function exe:Nice(c) | ||
464 | self.cmd = self.cmd .. 'ionice -c3 nice -n 19 ' .. c .. ' ' | ||
465 | return self | ||
466 | end | ||
467 | function exe:And(c) | ||
468 | if nil == c then c = '' else c = ' ' .. c end | ||
469 | self.cmd = self.cmd .. '&&' .. c .. ' ' | ||
470 | return self | ||
471 | end | ||
472 | function exe:Or(c) | ||
473 | if nil == c then c = '' end | ||
474 | self.cmd = self.cmd .. '|| ' .. c .. ' ' | ||
475 | return self | ||
476 | end | ||
477 | function exe:noErr() | ||
478 | self.cmd = self.cmd .. '2>/dev/null ' | ||
479 | return self | ||
480 | end | ||
481 | function exe:wait(w) | ||
482 | self.cmd = self.cmd .. '&& touch ' .. w .. ' ' | ||
483 | return self | ||
484 | end | ||
485 | function exe:Do() | ||
486 | if self.log then D(" executing - <code>" .. self.cmd .. "</code>") end | ||
487 | --[[ Damn os.execute() | ||
488 | Lua 5.1 says it returns "a status code, which is system-dependent" | ||
489 | Lua 5.2 says it returns true/nil, "exit"/"signal", the status code. | ||
490 | I'm getting 7168 or 0. No idea what the fuck that is. | ||
491 | local ok, rslt, status = os.execute(s) | ||
492 | ]] | ||
493 | local f = io.popen(self.cmd .. ' ; echo "$?"', 'r') | ||
494 | -- The last line will be the command's returned status, collect everything else in result. | ||
495 | for l in f:lines() do | ||
496 | self.result = self.result .. self.status .. "\n" | ||
497 | self.status = l | ||
498 | end | ||
499 | self.status = tonumber(self.status) | ||
500 | return self | ||
501 | end | ||
502 | function exe:fork() | ||
503 | self.cmd = '{ ' .. self.cmd .. '; } &' | ||
504 | if self.log then D(" forking - <code>" .. self.cmd .. "</code>") end | ||
505 | os.execute(self.cmd) | ||
506 | return self | ||
507 | end | ||
508 | return exe | ||
509 | end | ||
510 | |||
511 | |||
453 | APT.checkExes = function (exe) | 512 | APT.checkExes = function (exe) |
454 | local count = io.popen('ps x | grep "' .. exe .. '" | grep -v " grep " | grep -v "flock -n apt-panopticon.lock " | wc -l'):read("*l") | 513 | local count = io.popen('ps x | grep "' .. exe .. '" | grep -v " grep " | grep -v "flock -n apt-panopticon.lock " | wc -l'):read("*l") |
455 | D(count .. " " .. exe .. " commands still running.") | 514 | D(count .. " " .. exe .. " commands still running.") |