wordless 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|