module DanarchyDeploy::Applicator

Public Class Methods

new(os, user, options) click to toggle source
# File lib/danarchy_deploy/applicator.rb, line 8
def self.new(os, user, options)
  puts "\n" + self.name

  user[:applications].each do |domain, app|
    app[:domain] = domain.to_s
    app[:username] = user[:username]
    app[:path] = app[:path] ? app[:path] : user[:home] + '/' + app[:domain]

    Dir.exist?(app[:path]) || FileUtils.mkdir_p(app[:path], mode: 0755)
    FileUtils.chown_R(user[:username], user[:username], app[:path])

    if app[:archives] && options[:first_run]
      puts "\n > Deploying archives for #{domain}"
      perms = { uid: user[:uid], gid: user[:gid] }
      app[:archives].map{|a| a[:perms] = perms }
      puts "\n   |> Applying user's ownership to archives: #{perms}"
      DanarchyDeploy::Archiver.new(app[:archives], options)
    end

    app = DanarchyDeploy::Applicator::PHPFPM.new(app, options)    if app[:phpfpm]
    app = DanarchyDeploy::Applicator::Nginx.new(app, options)     if app[:nginx]
    app = DanarchyDeploy::Applicator::WordPress.new(app, options) if app[:app] == 'wordpress'
    app = DanarchyDeploy::Applicator::Redmine.new(app, options)   if app[:app] == 'redmine'

    app.delete_if { |k, v| [:username, :domain].include? k }
    user[:applications][domain] = app
  end

  user
end