class Pave::Concrete

Attributes

name[RW]

Public Class Methods

create(name) click to toggle source
# 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
new(name) click to toggle source
# File lib/pave/concrete.rb, line 14
def initialize(name)
  @name = name
end

Public Instance Methods

add_config_customizations() click to toggle source
# 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_concrete5() click to toggle source
# 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_customizations() click to toggle source
# File lib/pave/concrete.rb, line 64
    def config_customizations
      command =<<HD
$configuration .= '
define(\"ENABLE_NEWSFLOW_OVERLAY\", false);
define(\"PERMISSIONS_MODEL\", \"advanced\");
define(\"STATISTICS_TRACK_PAGE_VIEWS\", false);
define(\"WHITE_LABEL_DASHBOARD_BACKGROUND_SRC\", \"/concrete/images/spacer.gif\");
define(\"ENABLE_INTELLIGENT_SEARCH_HELP\", false);
';
HD
      command
    end
create_virtual_host() click to toggle source
# 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
gitignored() click to toggle source
# File lib/pave/concrete.rb, line 77
def gitignored
  [
    "files/*",
    "!files/.keep",
    ".DS_Store",
    ".sass-cache",
    "stylesheets"
  ]
end
gitkept_folders() click to toggle source
# File lib/pave/concrete.rb, line 118
def gitkept_folders
  [
    :blocks,
    :elements,
    :jobs,
    :page_types,
    :single_pages,
    :themes,
    :packages,
  ]
end
in_project_dir?() click to toggle source
# File lib/pave/concrete.rb, line 96
def in_project_dir?
  File.basename(Dir.pwd) == name
end
modify_folder_permissions() click to toggle source
# 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_folders() click to toggle source
# File lib/pave/concrete.rb, line 130
def remove_extra_folders
  sh "rmdir #{name}/" + removed_folders.join(" #{name}/")
end
removed_folders() click to toggle source
# File lib/pave/concrete.rb, line 134
def removed_folders
  [
    :tools,
    :libraries,
    :models,
    :css,
    :controllers,
    :helpers,
    :js,
    :languages,
    :mail,
  ]
end
set_up_folders() click to toggle source
# File lib/pave/concrete.rb, line 43
def set_up_folders
  say "* Setting up folders..."
  remove_extra_folders
  modify_folder_permissions
end
set_up_git() click to toggle source
# 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_pave() click to toggle source
# File lib/pave/concrete.rb, line 28
def set_up_pave
  sh "mkdir ~/.pave" unless File.exists?(File.join(Dir.home, ".pave/"))
end
setup() click to toggle source
# 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_folders() click to toggle source
# File lib/pave/concrete.rb, line 114
def world_writable_folders
  %w{ blocks config packages files }
end