Sha256: aa03658dfa4fc0f8ce7ba3738198a285921eba646089209385a952c7892b8d24

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

class Bard < Thor
  desc "install-authorized-keys", "!!! INTERNAL USE ONLY !!! run as sudo"
  def install_authorized_keys(source_user, dest_user)
    source = "/home/#{source_user}/.ssh/authorized_keys"
    dest = "/home/#{dest_user}/.ssh/authorized_keys"

    file = File.read(source)
    file.gsub! /gitosis-serve/, "bard delegate"

    File.open(dest, "w") { |f| f.write(file) }
  end

  desc "delegate", "!!! INTERNAL USER ONLY !!!"
  def delegate(key)
    command = ENV['SSH_ORIGINAL_COMMAND']

    case command
    when /^scp -f (\w+)\.sql\.gz$/
      project = $1
      `#{command_for("staging", "cd #{project} && rake db:dump RAILS_ENV=staging && gzip -9f db/data.sql")}`
      command = "scp -f ~/#{project}/db/data.sql.gz"
    end

    exec command_for("staging", command)
  end

  private
    def command_for(user, command)
      %(sudo -H -u #{user} bash -c "cd ~ && #{command}")
    end

    def run_crucial_via_bard(command)
      return if ENV['TESTING']
      run_crucial %(ssh www@staging.botandrose.com "cd #{project_name} && #{command}")
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bard-0.9.13 lib/bard/ssh_delegation.rb
bard-0.9.12 lib/bard/ssh_delegation.rb
bard-0.9.11 lib/bard/ssh_delegation.rb