pave 0.12.0.rc3 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +5 -1
- data/bin/pave +0 -9
- data/lib/pave/concrete.rb +20 -0
- data/lib/pave/files.rb +8 -15
- data/lib/pave/remote.rb +7 -2
- data/lib/pave/shell.rb +7 -2
- data/lib/pave/theme.rb +7 -0
- data/lib/pave/version.rb +1 -1
- data/resources/deploy.sh +4 -1
- data/templates/themes/blank/css/styles.scss +3 -2
- data/templates/themes/blank/default.php +6 -6
- data/templates/themes/blank/elements/footer.php +3 -3
- data/templates/themes/blank/elements/header.php +10 -5
- data/templates/themes/blank/includes/view_helpers.php +47 -6
- data/templates/themes/blank/js/page_default.js +1 -0
- data/templates/themes/blank/js/{scripts.js → shared.js} +0 -0
- data/templates/themes/blank/js/template_default.js +1 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2d5fe7f671471fe1459f0e2c0f6271b049cd05f
|
4
|
+
data.tar.gz: a4fc1c031ed597d9a0bffbdfedf87e58926f7103
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67b610b8f2502646e66d0fc9d771fd234590121e5b6c2499e2c27a5d9f443d879bd5e39c056b58c01dc27d101fecd5f3a61b130de146f20642fdeb6a50d7f297
|
7
|
+
data.tar.gz: 530dac82d7450405d707204e574387dba9b6a468b9aeb4a98a7655258c41a7d3f1cc54be82ff355bad9fcb92905cb742ba7f63de53a6adf892dbaf069fa3d507
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pave (0.
|
4
|
+
pave (0.11.24)
|
5
5
|
commander (~> 4.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
commander (4.
|
10
|
+
commander (4.2.0)
|
11
11
|
highline (~> 1.6.11)
|
12
12
|
diff-lcs (1.2.5)
|
13
|
-
highline (1.6.
|
13
|
+
highline (1.6.21)
|
14
14
|
rake (10.1.1)
|
15
15
|
rdoc (4.1.0)
|
16
16
|
rspec (2.14.1)
|
data/README.md
CHANGED
@@ -28,12 +28,16 @@ This:
|
|
28
28
|
|
29
29
|
$ pave deploy:setup
|
30
30
|
|
31
|
-
This sets up a Git-based deployment script to the remote server and deploys an initial version. SSH access is required.
|
31
|
+
This sets up a Git-based deployment script to the remote server and deploys an initial version. SSH access is required. You may run it multiple times and setup as many deployment endpoints as you want.
|
32
32
|
|
33
33
|
$ pave deploy
|
34
34
|
|
35
35
|
Deploys the site using git. Files and databases are not deployed (see below for how to do that).
|
36
36
|
|
37
|
+
$ pave deploy staging feature-branch
|
38
|
+
|
39
|
+
Deploys feature-branch to staging remote.
|
40
|
+
|
37
41
|
## Database
|
38
42
|
|
39
43
|
$ pave db:create mydatabase
|
data/bin/pave
CHANGED
@@ -240,15 +240,6 @@ command :"files:push" do |c|
|
|
240
240
|
end
|
241
241
|
end
|
242
242
|
|
243
|
-
command :"files:sync" do |c|
|
244
|
-
c.syntax = "pave files:sync"
|
245
|
-
c.description = "Syncronize local and remote files directories."
|
246
|
-
c.action do |args|
|
247
|
-
remote = args.first || "live"
|
248
|
-
Pave::Files.sync(remote)
|
249
|
-
end
|
250
|
-
end
|
251
|
-
|
252
243
|
command :"generate:theme" do |c|
|
253
244
|
c.syntax = "pave generate:theme THEME_NAME"
|
254
245
|
c.description = "Set up a blank theme with sass."
|
data/lib/pave/concrete.rb
CHANGED
@@ -19,6 +19,7 @@ module Pave
|
|
19
19
|
set_up_pave
|
20
20
|
clone_concrete5
|
21
21
|
set_up_folders
|
22
|
+
add_config_customizations
|
22
23
|
set_up_git
|
23
24
|
create_virtual_host
|
24
25
|
self
|
@@ -54,6 +55,25 @@ module Pave
|
|
54
55
|
sh "touch #{name}/updates/.keep"
|
55
56
|
end
|
56
57
|
|
58
|
+
def add_config_customizations
|
59
|
+
config_file = "#{name}/concrete/core/controllers/single_pages/install.php"
|
60
|
+
insert_pattern = "'{$salt}');\\n\";"
|
61
|
+
file_insert config_file, insert_pattern, config_customizations
|
62
|
+
end
|
63
|
+
|
64
|
+
def config_customizations
|
65
|
+
command =<<HD
|
66
|
+
$configuration .= '
|
67
|
+
define(\"ENABLE_NEWSFLOW_OVERLAY\", false);
|
68
|
+
define(\"PERMISSIONS_MODEL\", \"advanced\");
|
69
|
+
define(\"STATISTICS_TRACK_PAGE_VIEWS\", false);
|
70
|
+
define(\"WHITE_LABEL_DASHBOARD_BACKGROUND_SRC\", \"/concrete/images/spacer.gif\");
|
71
|
+
define(\"ENABLE_INTELLIGENT_SEARCH_HELP\", false);
|
72
|
+
';
|
73
|
+
HD
|
74
|
+
command
|
75
|
+
end
|
76
|
+
|
57
77
|
def gitignored
|
58
78
|
[
|
59
79
|
"files/*",
|
data/lib/pave/files.rb
CHANGED
@@ -2,34 +2,27 @@ module Pave
|
|
2
2
|
class Files
|
3
3
|
include Pave::Shell
|
4
4
|
|
5
|
-
def self.exclusions
|
6
|
-
" --exclude 'files/tmp' --exclude 'files/cache' "
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.flags
|
10
|
-
" -uazh -e ssh --progress "
|
11
|
-
end
|
12
|
-
|
13
5
|
def self.clear_cache
|
14
6
|
sh "rm -rf ./files/tmp/*; rm -rf ./files/cache/*;"
|
15
7
|
end
|
16
8
|
|
17
9
|
def self.push(remote="live")
|
10
|
+
clear_cache
|
18
11
|
server = Pave::Remote.server(remote)
|
19
12
|
directory = Pave::Remote.directory(remote)
|
20
|
-
sh "
|
13
|
+
sh "scp -r ./files #{server}:#{directory}/local_files;"
|
14
|
+
sh "ssh #{server} 'cd #{directory};
|
15
|
+
mv ./files ./old_files;
|
16
|
+
mv ./local_files ./files && rm -rf ./old_files;'"
|
21
17
|
end
|
22
18
|
|
23
19
|
def self.pull(remote="live")
|
24
20
|
server = Pave::Remote.server(remote)
|
25
21
|
directory = Pave::Remote.directory(remote)
|
26
|
-
sh "
|
22
|
+
sh "scp -r #{server}:#{directory}/files ./remote_files;
|
23
|
+
mv ./files ./old_files;
|
24
|
+
mv ./remote_files ./files && rm -rf ./old_files;"
|
27
25
|
clear_cache
|
28
26
|
end
|
29
|
-
|
30
|
-
def self.sync(remote="live")
|
31
|
-
pull(remote)
|
32
|
-
push(remote)
|
33
|
-
end
|
34
27
|
end
|
35
28
|
end
|
data/lib/pave/remote.rb
CHANGED
@@ -4,7 +4,7 @@ module Pave
|
|
4
4
|
|
5
5
|
def self.setup
|
6
6
|
server = ask "Username and hostname of the remote server (e.g. user@server.com): "
|
7
|
-
folder = ask "Name of the remote directory (e.g. ~/webapps/appname
|
7
|
+
folder = ask "Name of the remote directory (e.g. ~/webapps/appname): "
|
8
8
|
remote = ask "Desired git remote name (e.g. live): "
|
9
9
|
script = File.join(File.expand_path("../..", File.dirname(__FILE__)), "resources/deploy.sh")
|
10
10
|
|
@@ -23,7 +23,12 @@ module Pave
|
|
23
23
|
|
24
24
|
def self.url(remote="live")
|
25
25
|
remotes = shell("git remote -v").output
|
26
|
-
|
26
|
+
begin
|
27
|
+
remotes.match(/#{remote}\s+(.*)\s+\(push\)/)[1]
|
28
|
+
rescue NoMethodError
|
29
|
+
puts "Could not find remote named #{remote}. Please run `pave deploy:setup` to create it."
|
30
|
+
exit
|
31
|
+
end
|
27
32
|
end
|
28
33
|
|
29
34
|
def self.server(remote="live")
|
data/lib/pave/shell.rb
CHANGED
@@ -9,10 +9,15 @@ module Pave
|
|
9
9
|
Struct.new(:status, :output).new($?, output)
|
10
10
|
end
|
11
11
|
|
12
|
-
def sh(
|
13
|
-
result = shell(
|
12
|
+
def sh(cmd)
|
13
|
+
result = shell(cmd)
|
14
14
|
puts result.output
|
15
15
|
result.status
|
16
16
|
end
|
17
|
+
|
18
|
+
def file_insert(insert_file, insert_pattern, insert_lines)
|
19
|
+
file_string = File.read(insert_file).sub(insert_pattern, "#{insert_pattern}\n#{insert_lines}")
|
20
|
+
File.write(insert_file, file_string)
|
21
|
+
end
|
17
22
|
end
|
18
23
|
end
|
data/lib/pave/theme.rb
CHANGED
@@ -44,6 +44,12 @@ module Pave
|
|
44
44
|
sh "cp -a #{Pave.template_folder}/themes/blank #{Dir.pwd}/themes/#{self.name}"
|
45
45
|
end
|
46
46
|
|
47
|
+
def create_project_css_folders
|
48
|
+
sh "cd themes/#{self.name}/css/ && mkdir -p #{self.name}/{components,layouts}"
|
49
|
+
sh "cd themes/#{self.name}/css/#{self.name} && touch ./components/_components.scss && touch ./layouts/_layouts.scss"
|
50
|
+
sh "cd themes/#{self.name}/css/ && echo \"@import 'components/components';\" >> ./styles.scss && echo \"@import 'layouts/layouts';\" >> ./styles.scss"
|
51
|
+
end
|
52
|
+
|
47
53
|
def setup
|
48
54
|
say "Creating theme..."
|
49
55
|
copy_theme
|
@@ -51,6 +57,7 @@ module Pave
|
|
51
57
|
install_bourbon
|
52
58
|
install_neat
|
53
59
|
install_bitters
|
60
|
+
create_project_css_folders
|
54
61
|
say "Docs for Neat: http://neat.bourbon.io/"
|
55
62
|
say "Docs for Bitters: https://github.com/thoughtbot/bitters"
|
56
63
|
say ""
|
data/lib/pave/version.rb
CHANGED
data/resources/deploy.sh
CHANGED
@@ -3,6 +3,9 @@ if [ ! -d 'deploy.git' ]; then
|
|
3
3
|
mkdir deploy.git && cd deploy.git
|
4
4
|
git init --bare
|
5
5
|
echo '#!/bin/sh' > hooks/post-receive
|
6
|
-
echo '
|
6
|
+
echo 'while read oldrev newrev ref' >> hooks/post-receive
|
7
|
+
echo 'do' >> hooks/post-receive
|
8
|
+
echo 'GIT_WORK_TREE=.. git checkout -f -B `basename "$ref"` "$newrev"' >> hooks/post-receive
|
9
|
+
echo 'done' >> hooks/post-receive
|
7
10
|
chmod +x hooks/post-receive
|
8
11
|
fi
|
@@ -1,2 +1,3 @@
|
|
1
|
-
@import 'bourbon/
|
2
|
-
@import 'neat/
|
1
|
+
@import 'bourbon/bourbon';
|
2
|
+
@import 'neat/neat';
|
3
|
+
@import 'bitters/bitters';
|
@@ -3,10 +3,10 @@
|
|
3
3
|
$this->inc("elements/header.php");
|
4
4
|
?>
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
<!-- block example -->
|
7
|
+
<?php
|
8
|
+
$a = new Area("Main");
|
9
|
+
$a->display($c);
|
10
|
+
?>
|
11
11
|
|
12
|
-
<?php $this->inc("elements/footer.php"); ?>
|
12
|
+
<?php $this->inc("elements/footer.php"); ?>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<?php defined("C5_EXECUTE") or die("Access Denied."); ?>
|
2
2
|
|
3
|
-
|
3
|
+
<!-- block example -->
|
4
4
|
<?php
|
5
5
|
$a = new GlobalArea("Footer - Meta");
|
6
6
|
$a->display($c);
|
7
7
|
?>
|
8
8
|
|
9
|
-
|
10
9
|
<?php Loader::element("footer_required"); ?>
|
11
|
-
<script src="<?= $this->getThemePath(); ?>/js/
|
10
|
+
<script src="<?= $this->getThemePath(); ?>/js/shared.js"></script>
|
11
|
+
<?= page_specific_scripts($c, $this) ?>
|
12
12
|
</body>
|
13
13
|
</html>
|
@@ -3,9 +3,10 @@
|
|
3
3
|
$this->inc("includes/view_helpers.php");
|
4
4
|
?>
|
5
5
|
<!DOCTYPE html>
|
6
|
-
<html lang="
|
6
|
+
<html lang="<?= LANGUAGE?>">
|
7
7
|
<head>
|
8
8
|
<?php Loader::element("header_required"); ?>
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
9
10
|
|
10
11
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/2.1.3/normalize.min.css" />
|
11
12
|
<link rel="stylesheet" href="<?= $this->getThemePath(); ?>/css/styles.css" />
|
@@ -14,15 +15,19 @@
|
|
14
15
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.2/html5shiv.js"></script>
|
15
16
|
<![endif]-->
|
16
17
|
</head>
|
17
|
-
<body class="<?= $c
|
18
|
+
<body class="<?= page_classes($c) ?>">
|
18
19
|
|
19
|
-
|
20
|
+
|
21
|
+
<!-- image_tag helper example -->
|
22
|
+
<?= image_tag($this, "logo.png", ["class" => "main-logo"]); ?>
|
23
|
+
|
24
|
+
<!-- block example -->
|
20
25
|
<?php
|
21
26
|
$a = new Area("Header");
|
22
27
|
$a->display($c);
|
23
28
|
?>
|
24
29
|
|
25
|
-
<!--
|
30
|
+
<!-- nav example -->
|
26
31
|
<?php
|
27
32
|
$nav = BlockType::getByHandle("autonav");
|
28
33
|
$nav->controller->orderBy = "display_asc";
|
@@ -31,4 +36,4 @@
|
|
31
36
|
$nav->controller->displaySubPageLevels = "custom";
|
32
37
|
$nav->controller->displaySubPageLevelsNum = 1;
|
33
38
|
$nav->render("templates/header_menu");
|
34
|
-
?>
|
39
|
+
?>
|
@@ -1,17 +1,21 @@
|
|
1
1
|
<?
|
2
|
+
function pretty_r($var, $die=true) {
|
3
|
+
echo "<pre>";
|
4
|
+
var_dump($var);
|
5
|
+
echo "<pre>";
|
6
|
+
if($die) {
|
7
|
+
die();
|
8
|
+
};
|
9
|
+
}
|
2
10
|
|
3
11
|
function is_edit_mode() {
|
4
12
|
global $c;
|
5
|
-
|
6
|
-
echo "edit-mode";
|
7
|
-
}
|
13
|
+
return $c->isEditMode();
|
8
14
|
}
|
9
15
|
|
10
16
|
function is_logged_in() {
|
11
17
|
global $u;
|
12
|
-
|
13
|
-
echo "logged-in";
|
14
|
-
}
|
18
|
+
return $u->isLoggedIn();
|
15
19
|
}
|
16
20
|
|
17
21
|
function has_blocks($area) {
|
@@ -19,6 +23,21 @@
|
|
19
23
|
return $area->getTotalBlocksInArea($c) > 0;
|
20
24
|
}
|
21
25
|
|
26
|
+
function is_admin() {
|
27
|
+
$u = new User();
|
28
|
+
$g = Group::getByName('Administrators');
|
29
|
+
return $u->isSuperUser()||$u->inGroup($g);
|
30
|
+
}
|
31
|
+
|
32
|
+
function current_url() {
|
33
|
+
Loader::helper('navigation');
|
34
|
+
return NavigationHelper::getLinkToCollection(Page::getCurrentPage(), true);
|
35
|
+
}
|
36
|
+
|
37
|
+
function page_classes($c) {
|
38
|
+
return $c->getCollectionTypeHandle() . " " . $c->getCollectionHandle() . " " . (is_admin() ? 'admin' : '');
|
39
|
+
}
|
40
|
+
|
22
41
|
function image_tag($t, $img, $html_options = false) {
|
23
42
|
$imgPath = ($t->getThemePath()) . "/images/";
|
24
43
|
if ($html_options) {
|
@@ -32,4 +51,26 @@
|
|
32
51
|
echo "<img src='" . $imgPath . $img . "'" . $options . " />";
|
33
52
|
}
|
34
53
|
|
54
|
+
function page_specific_scripts($page, $t) {
|
55
|
+
$script_html = "";
|
56
|
+
|
57
|
+
$handle = $page->getCollectionTypeHandle();
|
58
|
+
if (isset($handle) === true) {
|
59
|
+
$script_path = __DIR__ . "/../js/template_" . $handle . ".js";
|
60
|
+
if (file_exists($script_path) === true) {
|
61
|
+
$script_html .= "<script src='" . $t->getThemePath() . "/js/template_" . $handle . ".js'></script>";
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
$page_name = $page->getCollectionHandle();
|
66
|
+
if (isset($page_name) === true) {
|
67
|
+
$script_path = __DIR__ . "/../js/page_" . $page_name . ".js";
|
68
|
+
if (file_exists($script_path) === true) {
|
69
|
+
$script_html .= "<script src='" . $t->getThemePath() . "/js/page_" . $page_name . ".js'></script>";
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
return $script_html;
|
74
|
+
}
|
75
|
+
|
35
76
|
?>
|
@@ -0,0 +1 @@
|
|
1
|
+
// loaded if page handle is 'default'
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
// loaded if page template handle is 'default'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.0
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamon Holmgren
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -126,7 +126,9 @@ files:
|
|
126
126
|
- templates/themes/blank/elements/footer.php
|
127
127
|
- templates/themes/blank/elements/header.php
|
128
128
|
- templates/themes/blank/includes/view_helpers.php
|
129
|
-
- templates/themes/blank/js/
|
129
|
+
- templates/themes/blank/js/page_default.js
|
130
|
+
- templates/themes/blank/js/shared.js
|
131
|
+
- templates/themes/blank/js/template_default.js
|
130
132
|
- templates/themes/blank/thumbnail.png
|
131
133
|
- templates/themes/blank/view.php
|
132
134
|
homepage: https://github.com/jamonholmgren/pave
|
@@ -144,12 +146,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
146
|
version: 1.9.3
|
145
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
148
|
requirements:
|
147
|
-
- - "
|
149
|
+
- - ">="
|
148
150
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
151
|
+
version: '0'
|
150
152
|
requirements: []
|
151
153
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.2.
|
154
|
+
rubygems_version: 2.2.2
|
153
155
|
signing_key:
|
154
156
|
specification_version: 4
|
155
157
|
summary: Provides a set of command line tools for Concrete5.
|