From 64439629c587a5f4a0395f4fc680d4d38d0c614d Mon Sep 17 00:00:00 2001 From: dvs1 Date: Mon, 21 Oct 2024 19:49:44 +1000 Subject: Convert example user script to new exe stuff. --- .aataaj_JACK.lua | 138 ++++--------------------------------------------------- 1 file changed, 10 insertions(+), 128 deletions(-) (limited to '.aataaj_JACK.lua') diff --git a/.aataaj_JACK.lua b/.aataaj_JACK.lua index b8b32a2..21e7938 100755 --- a/.aataaj_JACK.lua +++ b/.aataaj_JACK.lua @@ -2,131 +2,13 @@ -- An example users .aataaj_JACK.lua script that just starts qsynth. - --- Most of this APT stuff was copied from apt-panopticon. -local APT = {} - -APT.readCmd = function(cmd) - local result = {} - local output = io.popen(cmd) - if nil ~= output then - for l in output:lines() do - table.insert(result, l) - end - end - return result -end - - -APT.exe = function(c) - local exe = {status = 0, result = '', lines = {}, log = true, cmd = c .. ' ', command = c} - - function exe:log() - self.log = true - return self - end - function exe:Nice(c) - if nil == c then - self.cmd = 'ionice -c3 nice -n 19 ' .. self.cmd - else - self.cmd = self.cmd .. 'ionice -c3 nice -n 19 ' .. c .. ' ' - end - return self - end - function exe:timeout(c) - -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well. - -- --kill-after means "send KILL after TERM fails. - if nil == c then - self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd - else - self.cmd = 'timeout --kill-after=10.0 --foreground ' .. c .. ' ' .. self.cmd - end - return self - end - function exe:also(c) - if nil == c then c = '' else c = ' ' .. c end - self.cmd = self.cmd .. ';' .. c .. ' ' - return self - end - function exe:And(c) - if nil == c then c = '' else c = ' ' .. c end - self.cmd = self.cmd .. '&&' .. c .. ' ' - return self - end - function exe:Or(c) - if nil == c then c = '' end - self.cmd = self.cmd .. '|| ' .. c .. ' ' - return self - end - function exe:noErr() - self.cmd = self.cmd .. '2>/dev/null ' - return self - end - function exe:wait(w) - self.cmd = self.cmd .. '&& touch ' .. w .. ' ' - return self - end - function exe:Do() - --[[ "The condition expression of a control structure can return any - value. Both false and nil are considered false. All values different - from nil and false are considered true (in particular, the number 0 - and the empty string are also true)." - says the docs, I beg to differ.]] - if true == self.log then D(" executing -   " .. self.cmd .. "") end - --[[ Damn os.execute() - Lua 5.1 says it returns "a status code, which is system-dependent" - Lua 5.2 says it returns true/nil, "exit"/"signal", the status code. - I'm getting 7168 or 0. No idea what the fuck that is. - local ok, rslt, status = os.execute(s) - ]] - local f = APT.readCmd(self.cmd, 'r') - -- The last line will be the command's returned status, collect everything else in result. - self.status = '' -- Otherwise the result starts with 0. - self.result = '\n' - self.lines = f - for i,l in ipairs(f) do - self.result = self.result .. l .. "\n" - end - f = APT.readCmd('echo "$?"', 'r') - for i,l in ipairs(f) do - self.status = tonumber(l) - if (137 == self.status) or (124 == self.status) then - print("timeout killed " .. self.status .. ' ' .. self.command) - E("timeout killed " .. self.status .. ' ' .. self.command) - elseif (0 ~= self.status) then - print("status |" .. self.status .. '| ' .. self.command) - E("status |" .. self.status .. '| ' .. self.command) - end - end - return self - end - function exe:fork(host) - if nil ~= host then self.cmd = self.cmd .. '; r=$?; if [ $r -ge 124 ]; then echo "$r ' .. host .. ' failed forked command ' .. string.gsub(self.cmd, '"', "'") .. '"; fi' end - self.cmd = '{ ' .. self.cmd .. '; } &' - if true == self.log then D(" forking -   " .. self.cmd .. "") end - os.execute(self.cmd) - return self - end - return exe -end - -APT.exists = function(c) - if 0 == APT.exe('which ' .. c):Do().status then return true end - return false -end - -APT.killEmAll = function(all) - for i,l in ipairs(all) do - local c = 0 - while 0 ~= tonumber(APT.exe("pgrep -u $USER -xc " .. l):Do().result) do - local s = 'TERM' - if c > 0 then s = 'KILL'; APT.exe("sleep " .. c):Do() end - print( "pkill -" .. s .. " -u $USER -x " .. l) - APT.exe("pkill -" .. s .. " -u $USER -x " .. l):Do() - c = c + 1 - end - end -end - - -if APT.exists('qsynth') then APT.exe('qsynth'):fork() end +local _ = require '_' +local D = _.D +local I = _.I +local T = _.T +local W = _.W +local E = _.E +local C = _.C +local __ = _._ + +if _.exists('qsynth') then __('qsynth'):fork() end -- cgit v1.1