Class: Dandelion::Deployment::DiffDeployment

Inherits:
Deployment
  • Object
show all
Defined in:
lib/dandelion/deployment.rb

Instance Method Summary collapse

Methods inherited from Deployment

create, #local_revision, #log, #validate, #write_revision

Constructor Details

#initialize(repo, backend, options = {}) ⇒ DiffDeployment

Returns a new instance of DiffDeployment.



71
72
73
74
# File 'lib/dandelion/deployment.rb', line 71

def initialize(repo, backend, options = {})
  super(repo, backend, options)
  @diff = Git::Diff.new(@repo, read_remote_revision, @options[:revision])
end

Instance Method Details

#any?Boolean

Returns:

  • (Boolean)


114
115
116
# File 'lib/dandelion/deployment.rb', line 114

def any?
  @diff.changed.any? || @diff.deleted.any?
end

#deployObject



80
81
82
83
84
85
86
87
88
89
90
# File 'lib/dandelion/deployment.rb', line 80

def deploy
  if !revisions_match? && any?
    deploy_changed
    deploy_deleted
  else
    log.info("Nothing to deploy")
  end
  unless revisions_match?
    write_revision
  end
end

#deploy_changedObject



92
93
94
95
96
97
98
99
100
101
# File 'lib/dandelion/deployment.rb', line 92

def deploy_changed
  @diff.changed.each do |file|
    if exclude_file?(file)
      log.info("Skipping file: #{file}")
    else
      log.info("Uploading file: #{file}")
      @backend.write(file, @tree.show(file))
    end
  end
end

#deploy_deletedObject



103
104
105
106
107
108
109
110
111
112
# File 'lib/dandelion/deployment.rb', line 103

def deploy_deleted
  @diff.deleted.each do |file|
    if exclude_file?(file)
      log.info("Skipping file: #{file}")
    else
      log.info("Deleting file: #{file}")
      @backend.delete(file)
    end
  end
end

#remote_revisionObject



76
77
78
# File 'lib/dandelion/deployment.rb', line 76

def remote_revision
  @diff.from_revision
end

#revisions_match?Boolean

Returns:

  • (Boolean)


118
119
120
# File 'lib/dandelion/deployment.rb', line 118

def revisions_match?
  remote_revision == local_revision
end