#!/usr/bin/lua5.1
-- -*- Lua -*-
-- gitano-auth
--
-- Git (with) Augmented network operations -- User authentication wrapper
--
-- Copyright 2012 Daniel Silverstone <dsilvers@digital-scurf.org>
--
--

-- Gitano modules installed into /usr/share/lua/5.1/?.lua

local gitano = require "gitano"
local gall = require "gall"
local luxio = require "luxio"
local sio = require "luxio.simple"
local sp = require "luxio.subprocess"

gitano.config.lib_bin_path("/usr/lib/gitano/bin")
gitano.config.share_path("/usr/share/gitano")
gitano.i18n.set_langpack_path("/usr/share/gitano/lang") gitano.i18n.set_category()
gitano.plugins.load_plugins {"/etc/gitano/plugins", "/usr/lib/gitano/plugins"}

local repo_root = ...

gitano.config.repo_path(repo_root)
gitano.log.bump_level(gitano.log.level.CHAT)
gitano.log.syslog.open()

-- Now load the administration data

local admin_repo = gall.repository.new((repo_root or "") .. "/gitano-admin.git")

if not admin_repo then
   gitano.log.error(gitano.i18n.expand("UPDATE_SSH_USAGE"))
   gitano.log.fatal(gitano.i18n.expand("ERROR_CANNOT_FIND_ADMIN_REPO"));
end

local admin_head = admin_repo:get(admin_repo.HEAD)

if not admin_head then
   gitano.log.fatal(gitano.i18n.expand("ERROR_BAD_ADMIN_REPO"))
end

local config, msg = gitano.config.parse(admin_head)

if not config then
   gitano.log.critical(gitano.i18n.expand("ERROR_CANNOT_PARSE_ADMIN"))
   gitano.log.critical("  * " .. (msg or "No error?"))
   gitano.log.fatal(gitano.i18n.expand("ERROR_CANNOT_CONTINUE"))
end

gitano.config.writessh(config)

gitano.log.syslog.close()

return 0
