Class: Pave::Concrete

Inherits:
Object
  • Object
show all
Includes:
Shell
Defined in:
lib/pave/concrete.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Shell

#sh, #shell

Constructor Details

#initialize(name) ⇒ Concrete



14
15
16
# File 'lib/pave/concrete.rb', line 14

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



5
6
7
# File 'lib/pave/concrete.rb', line 5

def name
  @name
end

Class Method Details

.create(name, options) ⇒ Object



7
8
9
10
11
12
# File 'lib/pave/concrete.rb', line 7

def self.create(name, options)
  say ""
  return say "Options should be given after the application name. For details run: `pave help`" unless name.size > 0
  say "Setting up Concrete5 in folder #{name}."
  new(name).setup
end

Instance Method Details

#clone_concrete5Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/pave/concrete.rb', line 26

def clone_concrete5
  say "* Downloading Concrete5 version 5.6.2.1..."
  sh "curl http://www.concrete5.org/download_file/-/view/58379/8497 -o c5.zip > /dev/null"
  say ""
  say "* Unzipping..."
  sh "unzip c5.zip"
  sh "rm c5.zip"
  sh "mv concrete5.6.2.1 #{name}"
  say "* Concrete5 downloaded and unzipped into ./#{name}."
end

#create_virtual_hostObject



57
58
59
60
61
62
63
# File 'lib/pave/concrete.rb', line 57

def create_virtual_host
  if sudo?
    Pave::VirtualHost.new("#{name}.site").create_vhost
  else
    say "Virtual host not set up. Run `sudo pave vh:create #{name}.site` to create it."
  end
end

#initialize_gitObject



46
47
48
49
50
51
# File 'lib/pave/concrete.rb', line 46

def initialize_git
  say "* Setting up git..."
  sh "echo 'files/cache/*' > #{name}/.gitignore"
  sh "echo 'files/tmp/*' >> #{name}/.gitignore"
  sh "cd #{name} && git init && git add -A && git commit -m 'Initial'"
end

#modify_folder_permissionsObject



65
66
67
68
69
# File 'lib/pave/concrete.rb', line 65

def modify_folder_permissions
  world_writable_folders.each do |folder|
    sh "chmod -R 777 #{folder}"
  end
end

#remove_extra_foldersObject



97
98
99
# File 'lib/pave/concrete.rb', line 97

def remove_extra_folders
  sh "rmdir #{name}/" + removed_folders.join(" #{name}/")
end

#removed_foldersObject



101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/pave/concrete.rb', line 101

def removed_folders
  [
    :tools,
    :libraries,
    :models,
    :css,
    :controllers,
    :helpers,
    :js,
    :languages,
    :mail,
  ]
end

#set_up_app_folderObject



37
38
39
40
41
42
43
44
# File 'lib/pave/concrete.rb', line 37

def set_up_app_folder
  say "* Setting up folders..."
  sh "mkdir #{name}/app"

  symlink_folders
  remove_extra_folders
  modify_folder_permissions
end

#setupObject



18
19
20
21
22
23
24
# File 'lib/pave/concrete.rb', line 18

def setup
  clone_concrete5
  set_up_app_folder
  initialize_git
  create_virtual_host
  self
end

#sudo?Boolean



53
54
55
# File 'lib/pave/concrete.rb', line 53

def sudo?
  `whoami` == "root"
end


79
80
81
82
83
# File 'lib/pave/concrete.rb', line 79

def symlink_folders
  symlinked_folders.each do |folder|
    sh "ln -s #{name}/#{folder} app/#{folder}"
  end
end

#symlinked_foldersObject



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/pave/concrete.rb', line 85

def symlinked_folders
  [
    :blocks,
    :elements,
    :jobs,
    :page_types,
    :single_pages,
    :themes,
    :packages,
  ]
end

#world_writable_foldersObject



71
72
73
74
75
76
77
# File 'lib/pave/concrete.rb', line 71

def world_writable_folders
  [
    :config,
    :packages,
    :files
  ]
end