wordless 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.mdown +2 -0
- data/bin/setup.sh +10 -14
- data/lib/wordless/cli.rb +4 -4
- data/lib/wordless/cli_helper.rb +22 -20
- data/lib/wordless/version.rb +1 -1
- data/lib/wordless/wordless_cli.rb +108 -134
- data/wordless.gemspec +2 -3
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdfb87db26ed86aa7c9eba8af20a05b43420779b
|
4
|
+
data.tar.gz: a5e1d58e1574feab7a0cb906093fb4178f36bab1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebfdadfb8be11dace9245a20057a340d24bac44dd3dfb27c83d35477bd2839fe48bd54e66dc8fec068efea4a71fdc66d4f6586e8f67118ca0c10cf4a8f72671f
|
7
|
+
data.tar.gz: a3cdab7a1315b4ddb9294d1945c82e91d0f877ae0917465bcec48ce5bd6256d4e022abc9fbbef4310ca2ff7afe3c867c3957603a654de9b50be403ee25f1ef83
|
data/README.mdown
CHANGED
@@ -114,6 +114,8 @@ static_js:
|
|
114
114
|
deploy_command: 'wordmove push -t'
|
115
115
|
```
|
116
116
|
|
117
|
+
**Note**: remember to add `screen.css` and/or `application.js` if you want to define `static_css` or `static_js`
|
118
|
+
|
117
119
|
## Caveats
|
118
120
|
|
119
121
|
- If you attempt to download a WordPress localization that's outdated, the latest English version will be downloaded instead.
|
data/bin/setup.sh
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
set -e
|
4
4
|
|
5
5
|
FIXTURE_PATH="spec/fixtures/wordless"
|
6
|
-
|
6
|
+
WORDLESS_ARCHIVE="https://github.com/welaika/wordless/archive/master.tar.gz"
|
7
7
|
WORDLESS_PREFERENCES="wordless/theme_builder/vanilla_theme/config/initializers/wordless_preferences.php"
|
8
8
|
|
9
9
|
function log {
|
@@ -11,22 +11,18 @@ function log {
|
|
11
11
|
echo "== [ $1 ] ==";
|
12
12
|
}
|
13
13
|
|
14
|
+
log "Deleting {$FIXTURE_PATH}..."
|
14
15
|
rm -rf $FIXTURE_PATH
|
16
|
+
mkdir $FIXTURE_PATH
|
17
|
+
echo "Done!"
|
15
18
|
|
16
|
-
log "
|
17
|
-
|
19
|
+
log "Downloading wordless from github..."
|
20
|
+
cd $FIXTURE_PATH
|
21
|
+
wget $WORDLESS_ARCHIVE -O - | tar -xz --strip 1
|
22
|
+
echo "Done!"
|
18
23
|
|
19
|
-
log "Customizing ruby and compass paths"
|
20
|
-
echo "# BEGIN: wordless_preferences.php"
|
24
|
+
log "Customizing ruby and compass paths..."
|
21
25
|
cp -f ../wordless_preferences.php $WORDLESS_PREFERENCES
|
22
26
|
perl -p -i -e "s|<RUBY_PATH>|$(which ruby)|" $WORDLESS_PREFERENCES
|
23
27
|
perl -p -i -e "s|<COMPASS_PATH>|$(which compass)|" $WORDLESS_PREFERENCES
|
24
|
-
|
25
|
-
echo "# END: wordless_preferences.php"
|
26
|
-
|
27
|
-
log "Committing changes to test repo"
|
28
|
-
git config user.name "Wordless Tester"
|
29
|
-
git config user.email "tester@wordless.com"
|
30
|
-
git commit -am "updated ruby and compass path"
|
31
|
-
|
32
|
-
log "DONE!"
|
28
|
+
echo "Done!"
|
data/lib/wordless/cli.rb
CHANGED
@@ -5,7 +5,7 @@ module Wordless
|
|
5
5
|
|
6
6
|
no_tasks do
|
7
7
|
def wordless_cli
|
8
|
-
Wordless::WordlessCLI.new(
|
8
|
+
Wordless::WordlessCLI.new(self, options)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -18,7 +18,7 @@ module Wordless
|
|
18
18
|
|
19
19
|
desc "install", "Install the Wordless plugin into an existing WordPress installation"
|
20
20
|
def install
|
21
|
-
wordless_cli.
|
21
|
+
wordless_cli.install_wordless
|
22
22
|
end
|
23
23
|
|
24
24
|
desc "theme [NAME]", "Create a new Wordless theme NAME"
|
@@ -37,8 +37,8 @@ module Wordless
|
|
37
37
|
end
|
38
38
|
|
39
39
|
desc "deploy", "Deploy your WordPress site using the deploy_command defined in your Wordfile"
|
40
|
-
method_option :refresh, :
|
41
|
-
method_option :command, :
|
40
|
+
method_option :refresh, aliases: "-r", desc: "Compile static assets before deploying and clean them afterwards"
|
41
|
+
method_option :command, aliases: "-c", desc: "Use a custom deploy command"
|
42
42
|
def deploy
|
43
43
|
wordless_cli.deploy
|
44
44
|
end
|
data/lib/wordless/cli_helper.rb
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
module Wordless
|
2
2
|
module CLIHelper
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
[ :say, :run ].each do |sym|
|
7
|
+
define_method sym do |*args|
|
8
|
+
thor.send(sym, *args)
|
9
|
+
end
|
10
|
+
private sym
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def thor
|
17
|
+
raise NotImplementedError, "Including class must provide a thor instance object"
|
18
|
+
end
|
3
19
|
|
4
20
|
def info(message)
|
5
21
|
log_message message
|
@@ -18,27 +34,18 @@ module Wordless
|
|
18
34
|
log_message message, :yellow
|
19
35
|
end
|
20
36
|
|
21
|
-
def
|
22
|
-
|
23
|
-
f = open(destination, "wb")
|
24
|
-
f.write(open(url).read) ? true : false
|
25
|
-
rescue
|
26
|
-
false
|
27
|
-
ensure
|
28
|
-
f.close
|
29
|
-
end
|
37
|
+
def ensure_wp_cli_installed!
|
38
|
+
error("Cannot continue: WP-CLI is not installed.") unless wp_cli_installed?
|
30
39
|
end
|
31
40
|
|
32
|
-
def
|
33
|
-
|
41
|
+
def run_command(command)
|
42
|
+
system("#{command} >>#{void} 2>&1")
|
34
43
|
end
|
35
44
|
|
36
|
-
def
|
37
|
-
run_command("
|
45
|
+
def wp_cli_installed?
|
46
|
+
run_command("which wp")
|
38
47
|
end
|
39
48
|
|
40
|
-
private
|
41
|
-
|
42
49
|
def log_message(message, color = nil)
|
43
50
|
say message, color
|
44
51
|
end
|
@@ -46,10 +53,5 @@ module Wordless
|
|
46
53
|
def void
|
47
54
|
RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
|
48
55
|
end
|
49
|
-
|
50
|
-
def run_command(command)
|
51
|
-
system("#{command} >>#{void} 2>&1")
|
52
|
-
end
|
53
|
-
|
54
56
|
end
|
55
57
|
end
|
data/lib/wordless/version.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Wordless
|
2
2
|
class WordlessCLI
|
3
3
|
include CLIHelper
|
4
|
+
|
4
5
|
attr_reader :options, :thor
|
5
6
|
|
6
7
|
module PATH
|
@@ -17,192 +18,165 @@ module Wordless
|
|
17
18
|
PATH::THEMES => 'wp-content/themes',
|
18
19
|
}
|
19
20
|
|
20
|
-
|
21
|
-
define_method "#{type}_path" do
|
22
|
-
value
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def lib_dir
|
27
|
-
@@lib_dir ||= File.expand_path(File.dirname(__FILE__))
|
28
|
-
end
|
29
|
-
|
30
|
-
def wordpress_dir(current_dir = start_dir)
|
31
|
-
@wordpress_dir ||= (
|
32
|
-
current_dir = File.expand_path(current_dir)
|
33
|
-
|
34
|
-
if File.exist? File.join(current_dir, wp_content_path)
|
35
|
-
current_dir
|
36
|
-
elsif last_dir?(current_dir)
|
37
|
-
raise StandardError, "Could not find a valid Wordpress directory"
|
38
|
-
else
|
39
|
-
wordpress_dir(upper_dir(current_dir))
|
40
|
-
end
|
41
|
-
)
|
42
|
-
end
|
43
|
-
|
44
|
-
def last_dir?(directory)
|
45
|
-
directory == "/"
|
46
|
-
end
|
47
|
-
|
48
|
-
def upper_dir(directory)
|
49
|
-
File.join(directory, '..')
|
50
|
-
end
|
51
|
-
|
52
|
-
def config
|
53
|
-
@@config ||= (
|
54
|
-
if File.exist?(wordfile_path)
|
55
|
-
YAML::load(File.open(wordfile_path)).symbolize_keys
|
56
|
-
else
|
57
|
-
{}
|
58
|
-
end
|
59
|
-
)
|
60
|
-
end
|
61
|
-
|
62
|
-
[ :say, :run ].each do |sym|
|
63
|
-
define_method sym do |*args|
|
64
|
-
thor.send(sym, *args)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def initialize(options = {}, thor = nil)
|
21
|
+
def initialize(thor, options = {})
|
69
22
|
@options = options
|
70
23
|
@thor = thor
|
71
24
|
end
|
72
25
|
|
73
26
|
def start(name)
|
74
|
-
|
75
|
-
|
76
|
-
|
27
|
+
install_wordpress_and_wp_cli(name)
|
28
|
+
ensure_wp_cli_installed!
|
29
|
+
|
30
|
+
install_wordless
|
77
31
|
create_theme(name)
|
78
|
-
|
79
|
-
|
80
|
-
activate_theme(name)
|
81
|
-
set_permalinks
|
82
|
-
else
|
83
|
-
warning("WP-CLI is not installed. Cannot activate wordless plugin and theme")
|
84
|
-
end
|
32
|
+
activate_theme(name)
|
33
|
+
set_permalinks
|
85
34
|
end
|
86
35
|
|
87
|
-
def
|
88
|
-
|
36
|
+
def install_wordless
|
37
|
+
ensure_wp_cli_installed!
|
89
38
|
|
90
|
-
|
91
|
-
error "Git is not available. Please install git."
|
92
|
-
end
|
39
|
+
info("Installing and activating plugin...")
|
93
40
|
|
94
|
-
|
95
|
-
|
96
|
-
|
41
|
+
at_wordpress_root do
|
42
|
+
error("Directory '#{plugins_path}' not found.") unless File.directory?(plugins_path)
|
43
|
+
if run_command("wp plugin install wordless --activate")
|
44
|
+
success("Done!")
|
97
45
|
else
|
98
|
-
error
|
46
|
+
error("There was an error installing and/or activating the Wordless plugin.")
|
99
47
|
end
|
100
|
-
else
|
101
|
-
error "Directory '#{plugins_path}' not found."
|
102
48
|
end
|
103
49
|
end
|
104
50
|
|
105
|
-
def activate_plugin
|
106
|
-
info("Activating wordless plugin...")
|
107
|
-
run_command("wp plugin activate wordless") || error("Cannot activate wordless plugin")
|
108
|
-
success("Done!")
|
109
|
-
end
|
110
|
-
|
111
|
-
def activate_theme(name)
|
112
|
-
info("Activating theme...")
|
113
|
-
run_command("wp theme activate #{name}") || error("Cannot activate theme '#{name}'")
|
114
|
-
success("Done!")
|
115
|
-
end
|
116
|
-
|
117
|
-
def set_permalinks
|
118
|
-
info("Setting permalinks for wordless...")
|
119
|
-
run_command("wp rewrite structure /%postname%/") || error("Cannot set permalinks")
|
120
|
-
success("Done!")
|
121
|
-
end
|
122
|
-
|
123
51
|
def create_theme(name)
|
124
|
-
at_wordpress_root
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
52
|
+
at_wordpress_root do
|
53
|
+
if File.directory?(themes_path)
|
54
|
+
if run_command("php #{File.join(lib_dir, 'theme_builder.php')} #{name}")
|
55
|
+
success("Created a new Wordless theme in '#{File.join(themes_path, name)}'.")
|
56
|
+
else
|
57
|
+
error("Couldn't create Wordless theme.")
|
58
|
+
end
|
129
59
|
else
|
130
|
-
error
|
60
|
+
error("Directory '#{themes_path}' not found.")
|
131
61
|
end
|
132
|
-
else
|
133
|
-
error "Directory '#{themes_path}' not found."
|
134
62
|
end
|
135
63
|
end
|
136
64
|
|
137
65
|
def compile
|
138
|
-
at_wordpress_root
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
66
|
+
at_wordpress_root do
|
67
|
+
if system "php #{File.join(lib_dir, 'compile_assets.php')}"
|
68
|
+
success("Compiled static assets.")
|
69
|
+
else
|
70
|
+
error("Couldn't compile static assets.")
|
71
|
+
end
|
144
72
|
end
|
145
73
|
end
|
146
74
|
|
147
75
|
def clean
|
148
|
-
at_wordpress_root
|
76
|
+
at_wordpress_root do
|
77
|
+
if File.directory?(themes_path)
|
78
|
+
static_css = Array(config[:static_css] || Dir['wp-content/themes/*/assets/stylesheets/screen.css'])
|
79
|
+
static_js = Array(config[:static_js] || Dir['wp-content/themes/*/assets/javascripts/application.js'])
|
149
80
|
|
150
|
-
|
151
|
-
|
152
|
-
|
81
|
+
(static_css + static_js).each do |file|
|
82
|
+
FileUtils.rm_f(file) if File.exist?(file)
|
83
|
+
end
|
153
84
|
|
154
|
-
|
155
|
-
|
85
|
+
success("Cleaned static assets.")
|
86
|
+
else
|
87
|
+
error("Directory '#{themes_path}' not found.")
|
156
88
|
end
|
157
|
-
|
158
|
-
success "Cleaned static assets."
|
159
|
-
else
|
160
|
-
error "Directory '#{themes_path}' not found."
|
161
89
|
end
|
162
90
|
end
|
163
91
|
|
164
92
|
def deploy
|
165
|
-
at_wordpress_root
|
93
|
+
at_wordpress_root do
|
94
|
+
compile if options['refresh']
|
166
95
|
|
167
|
-
|
96
|
+
deploy_command = options['command'].presence || config[:deploy_command]
|
168
97
|
|
169
|
-
|
98
|
+
if deploy_command
|
99
|
+
system("#{deploy_command}")
|
100
|
+
else
|
101
|
+
error("deploy_command not set. Make sure it is included in your Wordfile.")
|
102
|
+
end
|
170
103
|
|
171
|
-
|
172
|
-
system "#{deploy_command}"
|
173
|
-
else
|
174
|
-
error "deploy_command not set. Make sure it is included in your Wordfile."
|
104
|
+
clean if options['refresh']
|
175
105
|
end
|
176
|
-
|
177
|
-
clean if options['refresh']
|
178
106
|
end
|
179
107
|
|
180
108
|
private
|
181
109
|
|
182
|
-
|
183
|
-
"
|
110
|
+
DEFAULT_PATHS.each do |type, value|
|
111
|
+
define_method "#{type}_path" do
|
112
|
+
value
|
113
|
+
end
|
184
114
|
end
|
185
115
|
|
186
|
-
def
|
187
|
-
|
116
|
+
def lib_dir
|
117
|
+
@@lib_dir ||= File.expand_path(File.dirname(__FILE__))
|
188
118
|
end
|
189
119
|
|
190
|
-
def
|
191
|
-
|
120
|
+
def wordpress_dir(current_dir = Dir.pwd)
|
121
|
+
@wordpress_dir ||= (
|
122
|
+
current_dir = File.expand_path(current_dir)
|
123
|
+
|
124
|
+
if File.exist?(File.join(current_dir, wp_content_path))
|
125
|
+
current_dir
|
126
|
+
elsif last_dir?(current_dir)
|
127
|
+
error("Could not find a valid Wordpress directory")
|
128
|
+
else
|
129
|
+
wordpress_dir(upper_dir(current_dir))
|
130
|
+
end
|
131
|
+
)
|
192
132
|
end
|
193
133
|
|
194
|
-
def
|
195
|
-
|
134
|
+
def last_dir?(directory)
|
135
|
+
directory == "/"
|
136
|
+
end
|
137
|
+
|
138
|
+
def upper_dir(directory)
|
139
|
+
File.join(directory, '..')
|
140
|
+
end
|
141
|
+
|
142
|
+
def config
|
143
|
+
@@config ||= (
|
144
|
+
if File.exist?(wordfile_path)
|
145
|
+
YAML::load(File.open(wordfile_path)).symbolize_keys
|
146
|
+
else
|
147
|
+
{}
|
148
|
+
end
|
149
|
+
)
|
196
150
|
end
|
197
151
|
|
198
|
-
def
|
199
|
-
|
152
|
+
def at_wordpress_root
|
153
|
+
pwd = Dir.pwd
|
154
|
+
Dir.chdir(wordpress_dir)
|
155
|
+
begin
|
156
|
+
yield
|
157
|
+
ensure
|
158
|
+
Dir.chdir(pwd)
|
159
|
+
end
|
200
160
|
end
|
201
161
|
|
202
|
-
def
|
203
|
-
|
162
|
+
def install_wordpress_and_wp_cli(name)
|
163
|
+
WordPressTools::CLI.new.invoke('new', [name], options)
|
204
164
|
end
|
205
165
|
|
166
|
+
def activate_theme(name)
|
167
|
+
at_wordpress_root do
|
168
|
+
info("Activating theme...")
|
169
|
+
run_command("wp theme activate #{name}") || error("Cannot activate theme '#{name}'")
|
170
|
+
success("Done!")
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def set_permalinks
|
175
|
+
at_wordpress_root do
|
176
|
+
info("Setting permalinks for wordless...")
|
177
|
+
run_command("wp rewrite structure /%postname%/") || error("Cannot set permalinks")
|
178
|
+
success("Done!")
|
179
|
+
end
|
180
|
+
end
|
206
181
|
end
|
207
182
|
end
|
208
|
-
|
data/wordless.gemspec
CHANGED
@@ -26,10 +26,9 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency "compass"
|
27
27
|
spec.add_dependency "coffee-script"
|
28
28
|
spec.add_dependency "yui-compressor"
|
29
|
-
spec.add_dependency "wordpress_tools", "~> 1.1.
|
29
|
+
spec.add_dependency "wordpress_tools", "~> 1.1.2"
|
30
30
|
|
31
|
-
spec.add_development_dependency "rspec", "
|
32
|
-
spec.add_development_dependency "fakeweb", "~> 1.3"
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
33
32
|
spec.add_development_dependency "pry-byebug", "~> 3.0"
|
34
33
|
spec.add_development_dependency "priscilla", "~> 1.0"
|
35
34
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wordless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Étienne Després"
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: exe
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-
|
15
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: thor
|
@@ -104,42 +104,28 @@ dependencies:
|
|
104
104
|
requirements:
|
105
105
|
- - "~>"
|
106
106
|
- !ruby/object:Gem::Version
|
107
|
-
version: 1.1.
|
107
|
+
version: 1.1.2
|
108
108
|
type: :runtime
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
112
|
- - "~>"
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version: 1.1.
|
114
|
+
version: 1.1.2
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: rspec
|
117
|
-
requirement: !ruby/object:Gem::Requirement
|
118
|
-
requirements:
|
119
|
-
- - "<"
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: 3.0.0
|
122
|
-
type: :development
|
123
|
-
prerelease: false
|
124
|
-
version_requirements: !ruby/object:Gem::Requirement
|
125
|
-
requirements:
|
126
|
-
- - "<"
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: 3.0.0
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
name: fakeweb
|
131
117
|
requirement: !ruby/object:Gem::Requirement
|
132
118
|
requirements:
|
133
119
|
- - "~>"
|
134
120
|
- !ruby/object:Gem::Version
|
135
|
-
version:
|
121
|
+
version: 3.2.0
|
136
122
|
type: :development
|
137
123
|
prerelease: false
|
138
124
|
version_requirements: !ruby/object:Gem::Requirement
|
139
125
|
requirements:
|
140
126
|
- - "~>"
|
141
127
|
- !ruby/object:Gem::Version
|
142
|
-
version:
|
128
|
+
version: 3.2.0
|
143
129
|
- !ruby/object:Gem::Dependency
|
144
130
|
name: pry-byebug
|
145
131
|
requirement: !ruby/object:Gem::Requirement
|