Sha256: 688c09cd70526991db09016056f5ead44e5f86e62bbb8bc84331f7ed74e508a7

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

#!/usr/bin/env ruby

$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])

require 'gritano'

def help
  puts "
  ssh user@host command
  
  Examples:
  ssh git@host.com repo:list
  ssh git@host.com key:list
  ssh git@host.com key:add keyname < key.pub
  ssh git@host.com key:rm keyname
  ssh git@host.com admin:help
  
  --
  v#{File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')).readlines.join}"
end

ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(Etc.getpwuid.dir, '.gritano', 'database.yml'))))

login = ARGV[0]
command = Gritano::Command.eval(ENV['SSH_ORIGINAL_COMMAND'])
begin
  case command[:access]
    when :read, :write then
      user = Gritano::User.find_by_login(login)
      repository = Gritano::Repository.find_by_name(command[:repo])
      if user and repository
        if user.check_access(repository, command[:access])
          puts "#{command[:command]} #{File.join(repository.full_path)}"
          exec "#{command[:command]} #{File.join(repository.full_path)}"
        end
      end
    when :user_cmd
      cmd = command[:command].gsub("[USER]", login)
      exec "gritano #{cmd}"
    when :admin_cmd
      cmd = command[:command]
      user = Gritano::User.find_by_login(login)
      if user.admin?
        exec "gritano #{cmd}"
      else
        puts "access denied"
      end
  end
rescue
  puts help
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gritano-0.4.1 bin/gritano-check
gritano-0.4.0 bin/gritano-check