-- -*- lua -*-

Version = "0.0"
local s_mTbl = {}

function mTbl()
   return s_mTbl
end

function buildVersionCode(branch, tag, gittag, dateStr)
   local a = {}
   a[#a+1] = 'local M={}'
   a[#a+1] = 'function M.branch()'
   a[#a+1] = '   return "'..  branch ..'"'
   a[#a+1] = 'end'
   a[#a+1] = 'function M.branchStr()'
   a[#a+1] = '   local s = M.branch()'
   a[#a+1] = '   if (s == "main") then'
   a[#a+1] = '      s = ""'
   a[#a+1] = '   end'
   a[#a+1] = '   return s == "" and s or "[branch: "..s.."]"'
   a[#a+1] = 'end'
   a[#a+1] = 'function M.tag()  return "'..tag..'"   end'
   a[#a+1] = 'function M.git()'
   a[#a+1] = '   local s = "'..gittag..'"'
   a[#a+1] = '   if (s == "@" .. "git@") then s = "" end'
   a[#a+1] = '   if (s == M.tag()      ) then s = "" end'
   a[#a+1] = '   return s == "" and s or "("..s..")"'
   a[#a+1] = 'end'
   a[#a+1] = 'function M.date() return "'..dateStr..'" end'
   a[#a+1] = 'function M.name()'
   a[#a+1] = '  local a = {}'
   a[#a+1] = '  a[#a+1] = M.tag()'
   a[#a+1] = '  a[#a+1] = M.git()'
   a[#a+1] = '  a[#a+1] = M.branchStr()'
   a[#a+1] = '  a[#a+1] = M.date()'
   a[#a+1] = '  local b = {}'
   a[#a+1] = '  for i = 1,#a do'
   a[#a+1] = '     if (a[i] ~= "") then'
   a[#a+1] = '        b[#b+1] = a[i]'
   a[#a+1] = '     end'
   a[#a+1] = '  end'
   a[#a+1] = '  return table.concat(b," ")'
   a[#a+1] = 'end'
   a[#a+1] = 'return M'
   return table.concat(a,"\n")
end

function main()

   local branch      = arg[1]
   local tag         = arg[2]
   local gittag      = arg[3]
   local VersionDate = arg[4]
   local curDate     = arg[5]
   local vdate       = VersionDate

   if (branch:find("HEAD detached")) then
      branch = "main"
   end

   if (tag ~= gittag or branch ~= "main") then
      vdate = curDate
   end
      
   local s = buildVersionCode(branch, tag, gittag, vdate)
   print (s)
end

main()
