wordless 0.1.0 → 0.2.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.
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