class GithubBackup::Repository

Attributes

sawyer_resource[R]
shell[R]

Public Class Methods

new(sawyer_resource, opts = {}) click to toggle source
# File lib/github-backup/repository.rb, line 5
def initialize(sawyer_resource, opts = {})
  @sawyer_resource = sawyer_resource
  @shell = opts[:shell] || Shell.new
end

Public Instance Methods

backup(backup_root) click to toggle source
# File lib/github-backup/repository.rb, line 10
def backup(backup_root)
  full_backup_path = File.join(backup_root, backup_path)

  puts "Backing up #{ full_backup_path }"

  if File.exist?(full_backup_path)
    backup_repository_incremental(full_backup_path)
  else
    backup_repository_initial(full_backup_path)
  end
end
backup_path() click to toggle source
# File lib/github-backup/repository.rb, line 26
def backup_path
  "#{ sawyer_resource.full_name }.git"
end
clone_url() click to toggle source
# File lib/github-backup/repository.rb, line 22
def clone_url
  sawyer_resource.ssh_url
end

Private Instance Methods

backup_repository_incremental(path) click to toggle source
# File lib/github-backup/repository.rb, line 36
def backup_repository_incremental(path)
  FileUtils.cd(path) do
    shell.run('git remote update')
  end
end
backup_repository_initial(path) click to toggle source
# File lib/github-backup/repository.rb, line 32
def backup_repository_initial(path)
  shell.run("git clone --mirror -n #{ clone_url } #{ path }")
end