atq2iso 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env lua
  2. --[[
  3. -- Copyright (c) 2013-2016 Marcus Rohrmoser, http://purl.mro.name/recorder
  4. --
  5. -- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
  6. -- associated documentation files (the "Software"), to deal in the Software without restriction,
  7. -- including without limitation the rights to use, copy, modify, merge, publish, distribute,
  8. -- sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
  9. -- furnished to do so, subject to the following conditions:
  10. --
  11. -- The above copyright notice and this permission notice shall be included in all copies or
  12. -- substantial portions of the Software.
  13. --
  14. -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
  15. -- NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  16. -- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
  17. -- OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  18. -- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  19. --
  20. -- MIT License http://opensource.org/licenses/MIT
  21. ]]
  22. --
  23. -- convert 'atq' output to iso dates.
  24. --
  25. -- Example:
  26. --
  27. -- To get the upcoming at job, run
  28. -- $ atq | atq2iso | sort --key 2 | head -n 1
  29. --
  30. local month_names_en = {'Jan','Feb','Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'}
  31. local months = {}
  32. for i,m in ipairs(month_names_en) do months[m] = i end
  33. month_names = nil
  34. for line in io.stdin:lines() do
  35. local job,wday,month,day,hour,min,sec,year,queue,uid = line:match('^(%d+)%s+([A-Z][a-z][a-z])%s+([A-Z][a-z][a-z])%s+(%d+)%s+(%d+):(%d+):(%d+)%s+(%d+)%s+([^%s]+)%s+(.*)$')
  36. local date = os.time{year=year,month=months[month],day=day,hour=hour,min=min,sec=sec}
  37. io.write(string.format('%-7s', job), ' ', os.date('%Y-%m-%dT%H:%M:%S', date), ' ', queue, ' ', uid, '\n')
  38. end