Sha256: 58daf21426abad4215862acb897636a4ca0e7ecd1f401439ccbddc894be9787a

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

module BackupRepos
  module Performers
    class BaseGit
      attr_reader :params, :options

      def initialize(params, options = {})
        @params = params
        @options = options
      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
        raise 'Not implemented'
      end

      def backup_path
        raise 'Not implemented'
      end

      def provider
        raise '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
        raise 'Backup root is not specified!' if backup_root.blank?

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
backup_repos-0.3.0 lib/backup_repos/performers/base_git.rb
backup_repos-0.2.1 lib/backup_repos/performers/base_git.rb