#!/usr/bin/env ruby-2.5

#
# GitLab shell authorized_keys. Query GitLab API to get the authorized command for a given ssh key fingerprint
#
# Ex.
#   /bin/authorized_keys BASE64-KEY
#
# Returns
#   command="/bin/gitlab-shell key-#",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQA...
#

key = ARGV[0]
abort "# No key provided" if key.nil? || key.empty?

require_relative "../lib/gitlab_init"
require_relative "../lib/gitlab_net"
require_relative "../lib/gitlab_keys"

authorized_key = GitlabNet.new.authorized_key(key)
if authorized_key.nil?
  puts "# No key was found for #{key}"
else
  puts GitlabKeys.key_line("key-#{authorized_key['id']}", authorized_key["key"])
end
