mps_helper.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #!/bin/env lua
  2. -- mps için yardımcı işlevler
  3. --importlar
  4. local color = require ("ansicolors")
  5. local helper={}
  6. helper.renkli=true
  7. helper.shell_log="/tmp/mps_helper-shell.log"
  8. -- yaz = farklı tipte çıktıları ekrana renkli yazan işlev
  9. -- codes: 0=error, 1=success, 2=info 3=warning
  10. getmetatable("").__index.yaz = function(msg,code)
  11. --print("*",msg,code,color)
  12. tip={'%{red}','%{green}','%{blue}','%{lred}'}
  13. if code == nil then code=2 end
  14. if helper.renkli then
  15. --print(tip[code+1](msg))
  16. print(color(('%s%s'):format(tip[code+1],msg)))
  17. else
  18. print(msg)
  19. end
  20. if code == 0 then
  21. os.exit()
  22. end
  23. end
  24. -- myassert, bir parametrenin nil, "", false olma durumlarını kontrol eder.
  25. function helper._assert(param,msg)
  26. if msg == nil then
  27. msg = "error:"
  28. end
  29. if param == nil or param == false then
  30. msg:yaz(0)
  31. else
  32. return param
  33. end
  34. end
  35. -- check a variable in an array
  36. -- todo!!! has_value kullanilan islevler find ile revize edilecek
  37. function helper.has_value (tab, val)
  38. for _, value in ipairs(tab) do
  39. if value == val then
  40. return true
  41. end
  42. end
  43. return false
  44. end
  45. -- get the index of an item in a table
  46. function helper.find(tab, val)
  47. for index, value in pairs(tab) do
  48. if value == val then
  49. return index
  50. end
  51. end
  52. return -1
  53. end
  54. -- print elements of a table-array
  55. function helper.tprint(tablo)
  56. for _, value in ipairs(tablo) do
  57. print (value)
  58. end
  59. end
  60. -- bir dizin/dosya yolunun varlığını kontrol eder
  61. function helper.path_exists(path)
  62. return lfs.attributes(path, "mode") ~= nil
  63. end
  64. -- bir dizin/dosya boyut
  65. function helper.get_size(path)
  66. return lfs.attributes(path, "size")
  67. end
  68. function helper.shell(command)
  69. -- Open log file in append mode
  70. local logger = io.open(helper.shell_log, "a")
  71. logger:write(command.."\n");
  72. logger:close();
  73. local handle=io.popen(command)
  74. local result=handle:read('*all')
  75. handle:close()
  76. -- komut çıktısı sonu yeni satır karakterin silinmesi - en sondaki \n
  77. if result:sub(-1) == "\n" then
  78. --result=result:gsub("\n", "")
  79. result=result:sub(1,-2)
  80. end
  81. return result
  82. end
  83. function helper.get_abspath(path)
  84. local ret=helper.shell("readlink -f " .. path)
  85. return ret
  86. end
  87. function helper.get_basename(path)
  88. return helper.shell("basename " .. path)
  89. end
  90. function helper.get_dirname(path)
  91. return helper.shell("dirname " .. path)
  92. end
  93. -- get content of a file
  94. function helper.get_content(filename)
  95. assert(helper.path_exists(filename),"helper.get_content : invalid path: "..filename)
  96. local f = assert(io.open(filename, "r"))
  97. local t = f:read('*all')
  98. f:close()
  99. return t
  100. end
  101. -- check a file has a line
  102. function helper.has_line(filename,line)
  103. assert(helper.path_exists(filename),"helper.has_line : invalid path: "..filename)
  104. local cnt=helper.get_content(filename)
  105. for linein in cnt:gmatch("[^\r\n]+") do
  106. if linein == line then
  107. return true
  108. end
  109. end
  110. return false
  111. end
  112. -- check sha256sum of a file
  113. function helper.hash_check(filepath,hash_value)
  114. assert(helper.path_exists(filepath),"helper invalid path: "..filepath)
  115. local komut='echo "%s %s" | sha256sum --check ;[ $? -eq 1 ] && printf "err@r"'
  116. local ret=helper.shell(komut:format(hash_value,filepath))
  117. if ret:match("err@r") then
  118. return false
  119. end
  120. return true
  121. end
  122. -- get dirs of a directory
  123. function helper.get_dirs(directory)
  124. dirs={}
  125. for obj in lfs.dir(directory) do
  126. if lfs.attributes(directory..obj,"mode") == "directory" then
  127. if obj ~="." and obj~=".." then
  128. table.insert(dirs,obj)
  129. end
  130. end
  131. end
  132. return dirs
  133. end
  134. return helper