Sha256: 62eff30f0bb250a5a60a0d124b660b6a59e0ce83c5e7f00716ab7565eb32c68c

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 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 -p22022 "cd #{project_name} && #{command}")
    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bard-0.11.1 lib/bard/ssh_delegation.rb
bard-0.11.0 lib/bard/ssh_delegation.rb
bard-0.10.0 lib/bard/ssh_delegation.rb
bard-0.9.14 lib/bard/ssh_delegation.rb