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

#file_insert, included, #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) ⇒ Object



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

def self.create(name)
  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

#add_config_customizationsObject



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

def add_config_customizations
  config_file = "#{name}/concrete/core/controllers/single_pages/install.php"
  insert_pattern = "['DB_DATABASE']) . \"');\\n\";"
  file_insert config_file, insert_pattern, config_customizations
end

#clone_concrete5Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/pave/concrete.rb', line 32

def clone_concrete5
  c5 = "concrete5.6.3.1"
  c5_link = "http://www.concrete5.org/download_file/-/view/66159/8497/"
  unless File.exists?(File.join(Dir.home, ".pave/#{c5}.zip"))
    say "* Downloading #{c5}..."
    sh "curl #{c5_link} > ~/.pave/#{c5}.zip"
  end
  say "* Copying Concrete5 into #{name}..."
  sh "unzip -qq ~/.pave/#{c5}.zip && mv #{c5} #{name}"
end

#config_customizationsObject



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/pave/concrete.rb', line 64

def config_customizations
  command ="$configuration .= '\ndefine(\\\"ENABLE_NEWSFLOW_OVERLAY\\\", false);\ndefine(\\\"PERMISSIONS_MODEL\\\", \\\"advanced\\\");\ndefine(\\\"STATISTICS_TRACK_PAGE_VIEWS\\\", false);\ndefine(\\\"WHITE_LABEL_DASHBOARD_BACKGROUND_SRC\\\", \\\"/concrete/images/spacer.gif\\\");\ndefine(\\\"ENABLE_INTELLIGENT_SEARCH_HELP\\\", false);\n';\n"
  command
end

#create_virtual_hostObject



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

def create_virtual_host
  say "* Setting up virtual host..."
  if sh("sudo pave vh:create #{name}.site #{Dir.pwd}/#{name}") == 0
    say "Successfully setup virtual host #{name}.site."
  else
    say "Virtual host not set up. Run `pave vh:create #{name}.site ./#{name}` to create it."
  end
end

#gitignoredObject



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

def gitignored
  [
    "files/*",
    "!files/.keep",
    ".DS_Store",
    ".sass-cache",
    "stylesheets"
  ]
end

#gitkept_foldersObject



118
119
120
121
122
123
124
125
126
127
128
# File 'lib/pave/concrete.rb', line 118

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

#in_project_dir?Boolean



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

def in_project_dir?
  File.basename(Dir.pwd) == name
end

#modify_folder_permissionsObject



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

def modify_folder_permissions
  say "* Modifying folder permissions..."

  successful = world_writable_folders.map do |folder|
    sh "sudo chmod -R 777 #{in_project_dir? ? folder.to_s : name + '/' + folder.to_s}"
  end.count{ |x| x != 0 } == 0

  if successful
    say "Successfully modified folder permissions."
  else
    say "Folder permissions not set up. Run `pave setup:permissions` to set them."
  end
end

#remove_extra_foldersObject



130
131
132
# File 'lib/pave/concrete.rb', line 130

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

#removed_foldersObject



134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/pave/concrete.rb', line 134

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

#set_up_foldersObject



43
44
45
46
47
# File 'lib/pave/concrete.rb', line 43

def set_up_folders
  say "* Setting up folders..."
  remove_extra_folders
  modify_folder_permissions
end

#set_up_gitObject



49
50
51
52
53
54
55
56
# File 'lib/pave/concrete.rb', line 49

def set_up_git
  say "* Setting up git..."
  sh "touch #{name}/.gitignore"
  gitignored.each{ |ignored| sh "echo '#{ignored}' >> #{name}/.gitignore" }
  gitkept_folders.each{ |folder| sh "touch #{name}/#{folder}/.keep" }
  sh "touch #{name}/files/.keep"
  sh "touch #{name}/updates/.keep"
end

#set_up_paveObject



28
29
30
# File 'lib/pave/concrete.rb', line 28

def set_up_pave
  sh "mkdir ~/.pave" unless File.exists?(File.join(Dir.home, ".pave/"))
end

#setupObject



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

def setup
  set_up_pave
  clone_concrete5
  set_up_folders
  add_config_customizations
  set_up_git
  create_virtual_host
  self
end

#world_writable_foldersObject



114
115
116
# File 'lib/pave/concrete.rb', line 114

def world_writable_folders
  %w{ blocks config packages files }
end