clemens (owner)

Revisions

gist: 100610 Download_button fork
public
Public Clone URL: git://gist.github.com/100610.git
Embed All Files: show embed
adva-cms-recipe.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# highly experimental Capistrano recipe for adva-cms-based apps
# UNTESTED
 
set :adva_cms_repository, "git://github.com/svenfuchs/adva_cms.git" # set this to something different if you want to use a fork
set :adva_engines, :core # list desired engines as array or use :all to install all engines
set :adva_plugins, [] # list desired plugins as array or use :all to install all plugins
 
namespace :adva do
  desc "Install selected engines."
  task :install do
    rake = fetch(:rake, "rake")
 
    engines = !adva_engines.is_a?(Array) && [:all, :core].include?(adva_engines.to_sym) ? adva_engines : adva_engines.join(',')
    plugins = !adva_plugins.is_a?(Array) && :all == adva_plugins ? adva_plugins : adva_plugins.join(',')
    engines = "engines=#{engines}" unless engines.blank?
    plugins = "plugins=#{plugins}" unless plugins.blank?
 
    run "cd #{current_path} && #{rake} adva:install #{engines} #{plugins} && #{rake} adva:assets:install"
  end
 
  namespace :shared_dirs do
    desc "Symlink shared folders."
    task :symlink do
      run "ln -nfs #{shared_path}/themes #{release_path}/public/themes" if engine_included?(:adva_themes)
      run "ln -nfs #{shared_path}/assets #{release_path}/public/assets" if engine_included?(:adva_assets)
      run "ln -nfs #{shared_path}/photos #{release_path}/public/photos" if engine_included?(:adva_photos)
 
      run "mkdir -p #{release_path}/vendor"
      run "ln -nfs #{shared_path}/adva_cms #{release_path}/vendor/adva"
    end
 
    desc "Create shared directories."
    task :create, :roles => [:app] do
      dirs = %w(adva_cms)
 
      dirs << 'themes' if engine_included?(:adva_themes)
      dirs << 'assets' if engine_included?(:adva_assets)
      dirs << 'photos' if engine_included?(:adva_photos)
 
      run "umask 02 && mkdir -p #{shared_path}/{#{dirs.join(',')}}"
    end
  end
 
  desc "Clone adva-cms"
  task :clone_cms do
    run "git clone #{adva_cms_repository} #{shared_path}/adva_cms"
  end
end
 
# dependencies
depend :remote, :directory, "#{shared_path}/adva_cms"
depend :remote, :directory, "#{shared_path}/assets" if engine_included?(:adva_assets)
depend :remote, :directory, "#{shared_path}/photos" if engine_included?(:adva_photos)
depend :remote, :directory, "#{shared_path}/themes" if engine_included?(:adva_themes)
 
# callbacks
after 'deploy:update_code', 'adva:shared_dirs:symlink'
after 'deploy:symlink_shared', 'adva:install'
 
after 'deploy:setup', 'adva:clone_cms'
after 'deploy:setup', 'adva:shared_dirs:create'
 
# some utility methods
def engine_included?(engine)
  if !adva_engines.is_a?(Array)
    adva_engines.to_sym == :all || (adva_engines.to_sym == :core && core_engines.include?(engine))
  else
    adva_engines.map(&:to_sym).include?(engine.to_sym)
  end
end
 
def core_engines
  %w(adva_activity adva_blog adva_cms adva_comments adva_rbac adva_user)
end