tparser.lua 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/env lua
  2. -- talimat parser kodlaması
  3. --kütüphane eklemeleri
  4. local lip= require("LIP")
  5. local lfs = require("lfs")
  6. local util=require ("mps_helper")
  7. local yaz=util.yaz
  8. local _assert=util._assert
  9. local has_value=util.has_value
  10. local path_exists=util.path_exists
  11. local shell=util.shell
  12. local get_abspath=util.get_abspath
  13. local get_basename=util.get_basename
  14. -- dil tespiti / sonra mps-helper den çağrılabilir.
  15. local _langenv=os.getenv("LANG")
  16. if not _langenv then _langenv="tr_TR" end
  17. local _langvar,_=_langenv:match("(.*)_(.*)")
  18. local messages = require ("lang_".. _langvar)
  19. --------------------------------------------------
  20. local parser={}
  21. local talimat_format="([%a%d-]+)#([^-]+)([%d]+)" -- talimat_isim@surum-devir : abc@1.2.3-1
  22. -- parse edilmiş talimat nesnesi
  23. local talimat={}
  24. -- talimat dizini
  25. local talimatd={}
  26. function parser.isd()
  27. local isd = get_basename(talimatd)
  28. local isim,surum,devir=isd:match(talimat_format)
  29. if not (isim and surum and devir) then
  30. messages.talimat_name_format_not_valid:yaz(0)
  31. end
  32. talimat.isim=isim
  33. talimat.surum=surum
  34. talimat.devir=devir
  35. end
  36. -- girdi talimat-dizin verilir
  37. -- çıktı olarak talimat nesnesi döndürülür.
  38. function parser.get(talimatdizin)
  39. talimatd=get_abspath(talimatdizin)
  40. local talimatyol=talimatd..'/talimat'
  41. talimat = lip.load(talimatyol,{"derle","pakur","kaynak"})
  42. parser.isd()
  43. return talimat
  44. end
  45. return parser
  46. -- talimat tablo(nesne) içeren
  47. -- talimat.isim
  48. -- talimat.surum
  49. -- talimat.devir
  50. -- talimat.paket.tanim
  51. -- talimat.paket.url
  52. -- talimat.paket.paketci
  53. -- talimat.paket.grup
  54. -- talimat.gerek.derleme
  55. -- talimat.gerek.calisma
  56. -- ve diğer talimat kısımları...