wordless 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -21,6 +21,10 @@ Once Wordless is installed, you can create a new Wordless theme:
21
21
 
22
22
  wordless theme mytheme
23
23
 
24
+ Compile your site's static assets:
25
+
26
+ wordless compile
27
+
24
28
  You can also simply install the latest stable release of WordPress, with an optional locale:
25
29
 
26
30
  wordless wp mysite
data/lib/wordless/cli.rb CHANGED
@@ -10,6 +10,8 @@ module Wordless
10
10
  include Thor::Actions
11
11
  include Wordless::CLIHelper
12
12
 
13
+ @@lib_dir = File.expand_path(File.dirname(__FILE__))
14
+
13
15
  no_tasks do
14
16
  def wordless_repo
15
17
  'git://github.com/welaika/wordless.git'
@@ -102,12 +104,21 @@ module Wordless
102
104
  end
103
105
 
104
106
  # Run PHP helper script
105
- if system "php #{File.join(File.expand_path(File.dirname(__FILE__)), 'theme_builder.php')} #{name}"
106
- success "Created a new Wordless theme in 'wp-content/themes/#{name}'"
107
+ if system "php #{File.join(@@lib_dir, 'theme_builder.php')} #{name}"
108
+ success "Created a new Wordless theme in 'wp-content/themes/#{name}'."
107
109
  else
108
110
  error "Couldn't create Wordless theme."
109
111
  return
110
112
  end
111
113
  end
114
+
115
+ desc "compile", "compile static assets"
116
+ def compile
117
+ if system "php #{File.join(@@lib_dir, 'compile_assets.php')}"
118
+ success "Compiled static assets."
119
+ else
120
+ error "Couldn't compile static assets."
121
+ end
122
+ end
112
123
  end
113
124
  end
@@ -0,0 +1,36 @@
1
+ <?php
2
+
3
+ require 'wordless_bridge.php';
4
+
5
+ class CompileAssets extends WordlessBridge {
6
+ public static function start() {
7
+ parent::initialize();
8
+
9
+ // Determine theme name
10
+ foreach (scandir(self::$current_dir . '/wp-content/themes') as $theme_dir) {
11
+ if (in_array($theme_dir, array('.', '..')) && !is_dir($theme_dir)) {
12
+ continue;
13
+ }
14
+
15
+ $previous_theme_name = WordlessBridge::$theme_name;
16
+ WordlessBridge::$theme_name = $theme_dir;
17
+ if (Wordless::theme_is_wordless_compatible()) {
18
+ if (basename(self::$current_dir) == $theme_dir) {
19
+ // A theme with the same name as the site is Wordless-compatible, this is probably the one we want
20
+ break;
21
+ }
22
+ } else {
23
+ WordlessBridge::$theme_name = $previous_theme_name;
24
+ }
25
+ }
26
+
27
+ require(get_template_directory() . '/config/initializers/wordless_preferences.php');
28
+
29
+ Wordless::register_preprocessors();
30
+ Wordless::compile_assets();
31
+ }
32
+ }
33
+
34
+ CompileAssets::start();
35
+
36
+ ?>
@@ -1,20 +1,23 @@
1
1
  <?php
2
2
 
3
- $current_dir = getcwd();
4
- $plugin_dir = "$current_dir/wp-content/plugins/wordless";
3
+ require 'wordless_bridge.php';
5
4
 
6
- require_once "$plugin_dir/wordless/wordless.php";
7
- require_once Wordless::join_paths($plugin_dir, "wordless", "theme_builder.php");
8
-
9
- $theme_name = $argv[1] ? $argv[1] : 'wordless';
10
- $permissions = substr(sprintf('%o', fileperms($plugin_dir)), -4);
11
-
12
- # Required WordPress function
13
- function get_template_directory() {
14
- return Wordless::join_paths($current_dir, "wp-content", "themes", "whatever");
5
+ class ThemeBuilder extends WordlessBridge {
6
+ public static function start() {
7
+ global $argv, $theme_name;
8
+
9
+ parent::initialize();
10
+
11
+ require_once Wordless::join_paths(self::$plugin_dir, "wordless", "theme_builder.php");
12
+
13
+ $theme_name = $argv[1] ? $argv[1] : 'wordless';
14
+ $permissions = substr(sprintf('%o', fileperms(self::$plugin_dir)), -4);
15
+
16
+ $builder = new WordlessThemeBuilder($theme_name, $theme_name, intval($permissions, 8));
17
+ $builder->build();
18
+ }
15
19
  }
16
20
 
17
- $builder = new WordlessThemeBuilder($theme_name, $theme_name, intval($permissions, 8));
18
- $builder->build();
21
+ ThemeBuilder::start();
19
22
 
20
23
  ?>
@@ -1,3 +1,3 @@
1
1
  module Wordless
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,26 @@
1
+ <?php
2
+
3
+ // WordPress function stubs
4
+
5
+ function get_template_directory() {
6
+ return Wordless::join_paths(getcwd(), "wp-content", "themes", WordlessBridge::$theme_name);
7
+ }
8
+
9
+ function __($string) {
10
+ return $string;
11
+ }
12
+
13
+ class WordlessBridge {
14
+ public static $current_dir;
15
+ public static $plugin_dir;
16
+ public static $theme_name = 'stub';
17
+
18
+ public static function initialize() {
19
+ self::$current_dir = getcwd();
20
+ self::$plugin_dir = self::$current_dir . '/wp-content/plugins/wordless';
21
+
22
+ require_once self::$plugin_dir . "/wordless/wordless.php";
23
+ }
24
+ }
25
+
26
+ ?>
data/spec/cli_spec.rb CHANGED
@@ -103,6 +103,20 @@ describe Wordless::CLI do
103
103
  end
104
104
  end
105
105
 
106
+ context "#compile", :now => true do
107
+ context "with a valid Wordless installation" do
108
+ before :each do
109
+ Wordless::CLI.start ['new', 'myapp']
110
+ end
111
+
112
+ it "compiles static assets" do
113
+ Wordless::CLI.start ['compile']
114
+ File.exists?('wp-content/themes/myapp/assets/stylesheets/screen.css').should eq true
115
+ File.exists?('wp-content/themes/myapp/assets/javascripts/application.js').should eq true
116
+ end
117
+ end
118
+ end
119
+
106
120
  after :each do
107
121
  Dir.chdir(@original_wd)
108
122
  %w(tmp/wordpress tmp/myapp).each do |dir|
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: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-17 00:00:00.000000000 Z
12
+ date: 2012-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70226020702320 !ruby/object:Gem::Requirement
16
+ requirement: &70294941484300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70226020702320
24
+ version_requirements: *70294941484300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70226020701760 !ruby/object:Gem::Requirement
27
+ requirement: &70294941483880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70226020701760
35
+ version_requirements: *70294941483880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fakeweb
38
- requirement: &70226020701200 !ruby/object:Gem::Requirement
38
+ requirement: &70294941483400 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70226020701200
46
+ version_requirements: *70294941483400
47
47
  description: Wordless
48
48
  email:
49
49
  - etienne@molotov.ca
@@ -63,8 +63,10 @@ files:
63
63
  - lib/wordless.rb
64
64
  - lib/wordless/cli.rb
65
65
  - lib/wordless/cli_helper.rb
66
+ - lib/wordless/compile_assets.php
66
67
  - lib/wordless/theme_builder.php
67
68
  - lib/wordless/version.rb
69
+ - lib/wordless/wordless_bridge.php
68
70
  - spec/cli_helper_spec.rb
69
71
  - spec/cli_spec.rb
70
72
  - spec/fixtures/wordpress_stub.zip