Sha256: fbebbfc7754e275ecfe86b03c30634bcf787948f039605deef1974d7bdef5d67

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module BackupRepos
  module Performers
    class BaseGit
      attr_reader :params

      def initialize(params)
        @params = params
      end

      def backup
        print "Backing up #{backup_path.yellow}: "

        if File.exist?(full_backup_path)
          update_repo
        else
          clone_repo
        end
      end

      def clone_url
        fail 'Not implemented'
      end

      def backup_path
        fail 'Not implemented'
      end

      def provider
        fail 'Not implemented'
      end

      private

      def clone_repo
        success, _output = BackupRepos.shell.run(
          "git clone --mirror -n #{clone_url} #{full_backup_path}")
        puts success ? 'Successfuly cloned'.green : 'Failed to clone'.red
      end

      def update_repo
        FileUtils.cd(full_backup_path) do
          success, _output = BackupRepos.shell.run('git remote update')
          puts success ? 'Successfuly updated'.green : 'Failed to update'.red
        end
      end

      def full_backup_path
        backup_root = BackupRepos.config.backup_root
        fail 'Backup root is not specified!' if backup_root.blank?

        File.join(backup_root, provider, backup_path)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
backup_repos-0.1.0 lib/backup_repos/performers/base_git.rb