Sha256: 832460ce9353d33ca57504a756961eeea6b1d89060786ca685f5574d035c2941

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# encoding: utf-8

module Doggy
  class CLI::Push
    WARNING_MESSAGE = "You are about to force push all the objects. "\
      "This will override changes in Datadog if they have not been sycned to the dog repository. "\
      "Do you want to proceed?(Y/N)"

    def sync_changes
      changed_resources = Doggy::Model.changed_resources
      Doggy.ui.say "Syncing #{changed_resources.size} objects to Datadog..."
      changed_resources.each do |resource|
        if resource.is_deleted
          Doggy.ui.say "Deleting #{resource.path}, with id = #{resource.id}"
          resp = resource.destroy
          Doggy.ui.error("Could not delete. Error: #{resp['errors']}. Skipping") if resp['errors']
        else
          Doggy.ui.say "Saving #{resource.path}, with id = #{resource.id}"
          resource.ensure_read_only!
          resource.save
        end
      end
      Doggy::Model.emit_shipit_deployment
    end

    def push_all(ids)
      if ids.empty? && !Doggy.ui.yes?(WARNING_MESSAGE)
        Doggy.ui.say('Operation cancelled')
        return
      end
      Doggy::Model.all_local_resources.each do |resource|
        next if ids.any? && !ids.include?(resource.id.to_s)
        Doggy.ui.say "Pushing #{resource.path}, with id #{resource.id}"
        resource.ensure_read_only!
        resource.save
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
doggy-2.0.35 lib/doggy/cli/push.rb
doggy-2.0.34 lib/doggy/cli/push.rb