class GithubSnapshot::Snapshot
Attributes
backup_folder[R]
git_clone_cmd[R]
github[R]
logger[R]
organizations[R]
password[R]
releases_to_keep[R]
s3_bucket[R]
time_now[R]
username[R]
Public Class Methods
new(config_file="config.yml")
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 39 def initialize(config_file="config.yml") config = YAML.load(File.read(config_file)) @username = config['username'] @password = config['password'] @organizations = config['organizations'] @s3_bucket = config['s3bucket'] @backup_folder = config['backup_folder'] GithubSnapshot.releases_to_keep = config['releases_to_keep'] GithubSnapshot.git_clone_timeout = config['git_clone_timeout'] @github = Github.new do |config| config.login = username config.password = password config.auto_pagination = true end end
Public Instance Methods
backup()
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 57 def backup create_backup_folder download_from_s3 backup_orgs upload_to_s3 total_size = %x[ du -sh #{backup_folder} | cut -f1 ] GithubSnapshot.logger.info "backup finished, total size is #{total_size}" end
Private Instance Methods
backup_orgs()
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 82 def backup_orgs Dir.chdir "#{backup_folder}" organizations.each do |org| GithubSnapshot.logger.info "#{org} - initializing" repos = github.repos.list org: org organization = Organization.new org, repos organization.backup GithubSnapshot.logger.info "#{org} - ending" end Dir.chdir ".." end
create_backup_folder()
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 68 def create_backup_folder GithubSnapshot.exec "mkdir -p #{backup_folder}" end
download_from_s3()
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 72 def download_from_s3 GithubSnapshot.logger.info "downloading fom s3" begin GithubSnapshot.exec "s3cmd sync --delete-removed --skip-existing s3://#{s3_bucket}/ #{backup_folder}/" rescue Utilities::ExecError GithubSnapshot.logger.info "s3cmd doesn't respect exit status\n"\ "there is a good chance that the sync was successful" end end
upload_to_s3()
click to toggle source
# File lib/github_snapshot/snapshot.rb, line 94 def upload_to_s3 GithubSnapshot.logger.info "uploading to s3" GithubSnapshot.exec "s3cmd sync --delete-removed --skip-existing #{backup_folder}/ s3://#{s3_bucket}/" end