Parse --key=value arguments

Lua
local function parse_args(argv)
  local options = {}
  local i = 1

  while i <= #argv do
    local key = argv[i]
    if key:sub(1, 2) ~= "--" then
      error("expected --key=value, got: " .. key)
    end

    local name, value = key:match("^%-%-([%w_-]+)=(.*)$")
    if not name then
      error("missing value for " .. key)
    end

    options[name] = value
    i = i + 1
  end

  return options
end

local opts = parse_args(arg)
print(opts.port or "3000")