lib/travis/cli/sync.rb



# frozen_string_literal: true

require 'travis/cli'

module Travis
  module CLI
    class Sync < ApiCommand
      description 'triggers a new sync with GitHub'

      on '-c', '--check',      'only check the sync status'
      on '-b', '--background', 'will trigger sync but not block until sync is done'
      on '-f', '--force',      'will force sync, even if one is already running'

      def run
        authenticate

        if check?
          say "#{'not ' unless user.syncing?}syncing", "#{user.login} is currently %s"
        elsif user.syncing? && !force?
          error 'user is already syncing'
        elsif background?
          say 'starting synchronization'
          sync(false)
        else
          say 'synchronizing: '
          sync
          say color(' done', :success)
        end
      end
    end
  end
end