wordless 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ spec/fixtures/wordless
data/Gemfile.lock CHANGED
@@ -1,24 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wordless (0.2.1)
5
- thor
4
+ wordless (0.2.2)
5
+ activesupport (~> 3.2.0)
6
+ thor (~> 0.16.0)
6
7
  wordpress_tools (~> 0.0.1)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ activesupport (3.2.8)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
11
15
  diff-lcs (1.1.3)
12
16
  fakeweb (1.3.0)
13
- rspec (2.8.0)
14
- rspec-core (~> 2.8.0)
15
- rspec-expectations (~> 2.8.0)
16
- rspec-mocks (~> 2.8.0)
17
- rspec-core (2.8.0)
18
- rspec-expectations (2.8.0)
19
- diff-lcs (~> 1.1.2)
20
- rspec-mocks (2.8.0)
21
- thor (0.14.6)
17
+ i18n (0.6.1)
18
+ multi_json (1.3.6)
19
+ rspec (2.11.0)
20
+ rspec-core (~> 2.11.0)
21
+ rspec-expectations (~> 2.11.0)
22
+ rspec-mocks (~> 2.11.0)
23
+ rspec-core (2.11.1)
24
+ rspec-expectations (2.11.3)
25
+ diff-lcs (~> 1.1.3)
26
+ rspec-mocks (2.11.3)
27
+ thor (0.16.0)
22
28
  wordpress_tools (0.0.1)
23
29
  thor
24
30
 
@@ -27,5 +33,5 @@ PLATFORMS
27
33
 
28
34
  DEPENDENCIES
29
35
  fakeweb
30
- rspec
36
+ rspec (~> 2.11.0)
31
37
  wordless!
data/README.md CHANGED
@@ -25,20 +25,59 @@ Compile your site's static assets:
25
25
 
26
26
  wordless compile
27
27
 
28
- You can also simply install the latest stable release of WordPress, with an optional locale:
28
+ Clean your compiled static assets:
29
29
 
30
- wordless wp mysite
31
- wordless wp mysite --locale=fr_FR
30
+ wordless clean
31
+
32
+ Deploy your wordless installation using the `deploy_command` specified in your Wordfile:
33
+
34
+ wordless deploy
35
+
36
+ You can also use the refresh option `-r` to compile your assets before deploying and clean your assets after:
37
+
38
+ wordless deploy -r
32
39
 
33
40
  Get some help:
34
41
 
35
42
  wordless help
36
43
 
44
+ ## Configuration
45
+
46
+ You can create a Wordfile to customize the behaviour of wordless:
47
+
48
+ ```yaml
49
+ wordless_repo: 'git://github.com/welaika/wordless.git'
50
+ static_css:
51
+ - 'wp-content/themes/mytheme/assets/stylesheets/screen.css'
52
+ - 'wp-content/themes/mytheme/assets/stylesheets/print.css'
53
+ static_js:
54
+ - 'wp-content/themes/mytheme/assets/javascripts/application.js'
55
+ - 'wp-content/themes/mytheme/assets/javascripts/mobile.js'
56
+ deploy_command: 'wordmove push -du'
57
+ ```
58
+
37
59
  ## Caveats
38
60
 
39
61
  - If you attempt to download a WordPress localization that's outdated, the latest English version will be downloaded instead.
40
62
  - Only tested on Mac OS X
41
- - Specs that test installation of the plugin actually download the plugin from GitHub. This makes the specs a bit slow to run.
63
+
64
+ ## Running specs
65
+
66
+ Clone the wordless repo inside `spec/fixtures/wordless`:
67
+
68
+ git clone https://github.com/welaika/wordless.git spec/fixtures/wordless && cd spec/fixtures/wordless
69
+
70
+ Set your compass and ruby paths:
71
+
72
+ vim wordless/theme_builder/vanilla_theme/config/initializers/wordless_preferences.php
73
+
74
+ Commit your changes:
75
+
76
+ git commit -am "Set compass and ruby paths"
77
+
78
+ Go back to the wordless_gem directory and have fun:
79
+
80
+ cd - && rspec
42
81
 
43
82
  ## Contributing
44
83
 
data/lib/wordless/cli.rb CHANGED
@@ -1,34 +1,40 @@
1
1
  require 'thor'
2
- # require 'thor/shell/basic'
2
+ require 'yaml'
3
3
  require 'net/http'
4
4
  require 'rbconfig'
5
5
  require 'tempfile'
6
6
  require 'wordpress_tools/cli'
7
7
  require 'wordless/cli_helper'
8
+ require 'active_support/all'
8
9
 
9
10
  module Wordless
10
11
  class CLI < Thor
11
12
  include Thor::Actions
12
13
  include Wordless::CLIHelper
13
-
14
+
14
15
  @@lib_dir = File.expand_path(File.dirname(__FILE__))
15
-
16
+ @@config = if File.exists?('Wordfile')
17
+ YAML::load(File.open('Wordfile')).symbolize_keys
18
+ else
19
+ {}
20
+ end
21
+
16
22
  no_tasks do
17
23
  def wordless_repo
18
- 'git://github.com/welaika/wordless.git'
24
+ @@config[:wordless_repo] || 'git://github.com/welaika/wordless.git'
19
25
  end
20
26
  end
21
-
22
- desc "new [NAME]", "download WordPress in specified directory, install the Wordless plugin and create a Wordless theme"
27
+
28
+ desc "new [NAME]", "Download WordPress in specified directory, install the Wordless plugin and create a Wordless theme"
23
29
  method_option :locale, :aliases => "-l", :desc => "WordPress locale (default is en_US)"
24
30
  def new(name)
25
31
  WordPressTools::CLI.new.invoke('new', [name], :bare => true, :locale => options['locale'])
26
32
  Dir.chdir(name)
27
- Wordless::CLI.new.invoke(:install)
28
- invoke('theme', [name])
33
+ install
34
+ theme(name)
29
35
  end
30
-
31
- desc "install", "install the Wordless plugin into an existing WordPress installation"
36
+
37
+ desc "install", "Install the Wordless plugin into an existing WordPress installation"
32
38
  def install
33
39
  unless git_installed?
34
40
  error "Git is not available. Please install git."
@@ -46,14 +52,14 @@ module Wordless
46
52
  error "There was an error installing the Wordless plugin."
47
53
  end
48
54
  end
49
-
50
- desc "theme NAME", "create a new Wordless theme NAME"
55
+
56
+ desc "theme [NAME]", "Create a new Wordless theme NAME"
51
57
  def theme(name)
52
58
  unless File.directory? 'wp-content/themes'
53
59
  error "Directory 'wp-content/themes' not found. Make sure you're at the root level of a WordPress installation."
54
60
  return
55
61
  end
56
-
62
+
57
63
  # Run PHP helper script
58
64
  if system "php #{File.join(@@lib_dir, 'theme_builder.php')} #{name}"
59
65
  success "Created a new Wordless theme in 'wp-content/themes/#{name}'."
@@ -62,8 +68,8 @@ module Wordless
62
68
  return
63
69
  end
64
70
  end
65
-
66
- desc "compile", "compile static assets"
71
+
72
+ desc "compile", "Compile static assets"
67
73
  def compile
68
74
  if system "php #{File.join(@@lib_dir, 'compile_assets.php')}"
69
75
  success "Compiled static assets."
@@ -71,5 +77,47 @@ module Wordless
71
77
  error "Couldn't compile static assets."
72
78
  end
73
79
  end
80
+
81
+ desc "clean", "Clean static assets"
82
+ def clean
83
+ unless File.directory? 'wp-content/themes'
84
+ error "Directory 'wp-content/themes' not found. Make sure you're at the root level of a WordPress installation."
85
+ return
86
+ end
87
+
88
+ static_css = Array(@@config[:static_css] || Dir['wp-content/themes/*/assets/stylesheets/screen.css'])
89
+ static_js = Array(@@config[:static_js] || Dir['wp-content/themes/*/assets/javascripts/application.js'])
90
+
91
+ begin
92
+ (static_css + static_js).each do |file|
93
+ FileUtils.rm_f(file) if File.exists?(file)
94
+ end
95
+ success "Cleaned static assets."
96
+ rescue
97
+ error "Couldn't clean static assets."
98
+ end
99
+ end
100
+
101
+ desc "deploy", "Deploy your WordPress site using the deploy_command defined in your Wordfile"
102
+ method_option :refresh, :aliases => "-r", :desc => "Compile static assets before deploying and clean them afterwards"
103
+ method_option :command, :aliases => "-c", :desc => "Use a custom deploy command"
104
+ def deploy
105
+ unless File.exists? 'wp-config.php'
106
+ error "WordPress not found. Make sure you're at the root level of a WordPress installation."
107
+ return
108
+ end
109
+
110
+ compile if options['refresh']
111
+
112
+ deploy_command = options['command'].presence || @@config[:deploy_command]
113
+
114
+ if deploy_command
115
+ system "#{deploy_command}"
116
+ else
117
+ error "deploy_command not set. Make sure it is included in your Wordfile."
118
+ end
119
+
120
+ clean if options['refresh']
121
+ end
74
122
  end
75
123
  end
@@ -13,7 +13,7 @@ module Wordless
13
13
  def warning(message)
14
14
  say message, :yellow
15
15
  end
16
-
16
+
17
17
  def download(url, destination)
18
18
  begin
19
19
  f = open(destination, "wb")
@@ -34,9 +34,9 @@ module Wordless
34
34
  void = RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
35
35
  system "git --version >>#{void} 2>&1"
36
36
  end
37
-
37
+
38
38
  def add_git_repo(repo, destination)
39
39
  run "git clone #{repo} #{destination}", :verbose => false, :capture => true
40
40
  end
41
41
  end
42
- end
42
+ end
@@ -5,13 +5,13 @@ require 'wordless_bridge.php';
5
5
  class CompileAssets extends WordlessBridge {
6
6
  public static function start() {
7
7
  parent::initialize();
8
-
8
+
9
9
  // Determine theme name
10
10
  foreach (scandir(self::$current_dir . '/wp-content/themes') as $theme_dir) {
11
- if (in_array($theme_dir, array('.', '..')) && !is_dir($theme_dir)) {
11
+ if (in_array($theme_dir, array('.', '..', 'index.php')) && !is_dir($theme_dir)) {
12
12
  continue;
13
13
  }
14
-
14
+
15
15
  $previous_theme_name = WordlessBridge::$theme_name;
16
16
  WordlessBridge::$theme_name = $theme_dir;
17
17
  if (Wordless::theme_is_wordless_compatible()) {
@@ -23,9 +23,9 @@ class CompileAssets extends WordlessBridge {
23
23
  WordlessBridge::$theme_name = $previous_theme_name;
24
24
  }
25
25
  }
26
-
26
+
27
27
  require(get_template_directory() . '/config/initializers/wordless_preferences.php');
28
-
28
+
29
29
  Wordless::register_preprocessors();
30
30
  Wordless::compile_assets();
31
31
  }
@@ -5,14 +5,14 @@ require 'wordless_bridge.php';
5
5
  class ThemeBuilder extends WordlessBridge {
6
6
  public static function start() {
7
7
  global $argv, $theme_name;
8
-
8
+
9
9
  parent::initialize();
10
-
10
+
11
11
  require_once Wordless::join_paths(self::$plugin_dir, "wordless", "theme_builder.php");
12
-
12
+
13
13
  $theme_name = $argv[1] ? $argv[1] : 'wordless';
14
14
  $permissions = substr(sprintf('%o', fileperms(self::$plugin_dir)), -4);
15
-
15
+
16
16
  $builder = new WordlessThemeBuilder($theme_name, $theme_name, intval($permissions, 8));
17
17
  $builder->build();
18
18
  }
@@ -1,3 +1,3 @@
1
1
  module Wordless
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -14,13 +14,13 @@ class WordlessBridge {
14
14
  public static $current_dir;
15
15
  public static $plugin_dir;
16
16
  public static $theme_name = 'stub';
17
-
17
+
18
18
  public static function initialize() {
19
19
  self::$current_dir = getcwd();
20
20
  self::$plugin_dir = self::$current_dir . '/wp-content/plugins/wordless';
21
-
21
+
22
22
  require_once self::$plugin_dir . "/wordless/wordless.php";
23
23
  }
24
24
  }
25
25
 
26
- ?>
26
+ ?>
@@ -1,57 +1,54 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Wordless::CLIHelper do
4
- # def shell
5
- # @shell ||= Thor::Shell::Basic.new
6
- # end
7
-
4
+
8
5
  before :each do
9
6
  @cli = Wordless::CLI.new
10
7
  end
11
-
8
+
12
9
  context "::download" do
13
10
  before(:each) do
14
11
  @tempfile = Tempfile.new("download_test")
15
12
  @valid_url = "http://www.example.com/test"
16
13
  FakeWeb.register_uri(:get, @valid_url, :body => "Download test")
17
14
  end
18
-
15
+
19
16
  it "downloads a file to the specified location" do
20
17
  @cli.download(@valid_url, @tempfile.path)
21
- open(@tempfile.path).read.should eq("Download test")
18
+ open(@tempfile.path).read.should == "Download test"
22
19
  end
23
-
20
+
24
21
  it "returns true on success" do
25
- @cli.download(@valid_url, @tempfile.path).should eq true
22
+ @cli.download(@valid_url, @tempfile.path).should be_true
26
23
  end
27
-
24
+
28
25
  it "returns false on failure" do
29
- @cli.download("http://an.invalid.url", @tempfile.path).should eq false
26
+ @cli.download("http://an.invalid.url", @tempfile.path).should be_false
30
27
  end
31
-
28
+
32
29
  after(:each) do
33
30
  @tempfile.close!
34
31
  end
35
32
  end
36
-
33
+
37
34
  context "::unzip" do
38
35
  it "unzips a file" do
39
36
  @cli.unzip(File.expand_path('spec/fixtures/zipped_file.zip'), 'tmp/unzip')
40
- File.exists?('tmp/unzip/zipped_file').should be true
37
+ File.exists?('tmp/unzip/zipped_file').should be_true
41
38
  end
42
-
39
+
43
40
  after(:each) do
44
41
  FileUtils.rm_rf('tmp/unzip') if File.directory? 'tmp/unzip'
45
42
  end
46
43
  end
47
-
44
+
48
45
  context "::error" do
49
46
  it "displays an error" do
50
47
  $stdout.should_receive(:puts).with("\e[31mI am an error\e[0m")
51
48
  @cli.error("I am an error")
52
49
  end
53
50
  end
54
-
51
+
55
52
  context "::success" do
56
53
  it "displays a success message" do
57
54
  $stdout.should_receive(:puts).with("\e[32mI am a success message\e[0m")
@@ -65,4 +62,4 @@ describe Wordless::CLIHelper do
65
62
  @cli.warning("I am a warning")
66
63
  end
67
64
  end
68
- end
65
+ end
data/spec/cli_spec.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Wordless::CLI do
4
- before :each do
5
- # $stdout = StringIO.new
6
- @original_wd = Dir.pwd
4
+
5
+ before :all do
7
6
  wp_api_response = <<-eof
8
7
  upgrade
9
8
  http://wordpress.org/download/
@@ -15,30 +14,44 @@ describe Wordless::CLI do
15
14
  eof
16
15
  FakeWeb.register_uri(:get, %r|http://api.wordpress.org/core/version-check/1.5/.*|, :body => wp_api_response)
17
16
  FakeWeb.register_uri(:get, "http://wordpress.org/wordpress-3.3.1.zip", :body => File.expand_path('spec/fixtures/wordpress_stub.zip'))
17
+ end
18
+
19
+ before :each do
20
+ Wordless::CLI.class_variable_set :@@config, {
21
+ :wordless_repo => File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'wordless'))
22
+ }
23
+ @original_wd = Dir.pwd
18
24
  Dir.chdir('tmp')
19
25
  end
20
-
26
+
27
+ after :each do
28
+ Dir.chdir(@original_wd)
29
+ %w(tmp/wordpress tmp/myapp).each do |dir|
30
+ FileUtils.rm_rf(dir) if File.directory? dir
31
+ end
32
+ end
33
+
21
34
  context "#new" do
22
35
  it "downloads a copy of WordPress, installs Wordless and creates a theme" do
23
36
  Wordless::CLI.start ['new', 'myapp']
24
- File.exists?('wp-content/index.php').should eq true
25
- (File.exists?('wp-content/plugins/plugin.php') || File.directory?('wp-content/themes/theme')).should eq false
26
- File.directory?('wp-content/plugins/wordless').should eq true
27
- File.directory?('wp-content/themes/myapp').should eq true
28
- File.exists?('wp-content/themes/myapp/index.php').should eq true
37
+ File.exists?('wp-content/index.php').should be_true
38
+ (File.exists?('wp-content/plugins/plugin.php') || File.directory?('wp-content/themes/theme')).should be_false
39
+ File.directory?('wp-content/plugins/wordless').should be_true
40
+ File.directory?('wp-content/themes/myapp').should be_true
41
+ File.exists?('wp-content/themes/myapp/index.php').should be_true
29
42
  end
30
43
  end
31
-
44
+
32
45
  context "#install" do
33
46
  context "with a valid WordPress installation" do
34
47
  it "installs the Wordless plugin" do
35
48
  WordPressTools::CLI.start ['new']
36
49
  Dir.chdir 'wordpress'
37
50
  Wordless::CLI.start ['install']
38
- File.directory?('wp-content/plugins/wordless').should eq true
39
- end
51
+ File.directory?('wp-content/plugins/wordless').should be_true
52
+ end
40
53
  end
41
-
54
+
42
55
  context "without a valid WordPress installation" do
43
56
  it "fails to install the Wordless plugin" do
44
57
  content = capture(:stdout) { Wordless::CLI.start ['install'] }
@@ -46,7 +59,7 @@ describe Wordless::CLI do
46
59
  end
47
60
  end
48
61
  end
49
-
62
+
50
63
  context "#theme" do
51
64
  context "with a valid WordPress installation and the Wordless plugin" do
52
65
  before :each do
@@ -54,14 +67,14 @@ describe Wordless::CLI do
54
67
  Dir.chdir 'wordpress'
55
68
  Wordless::CLI.start ['install']
56
69
  end
57
-
70
+
58
71
  it "creates a Wordless theme" do
59
72
  Wordless::CLI.start ['theme', 'mytheme']
60
- File.directory?('wp-content/themes/mytheme').should eq true
61
- File.exists?('wp-content/themes/mytheme/index.php').should eq true
73
+ File.directory?('wp-content/themes/mytheme').should be_true
74
+ File.exists?('wp-content/themes/mytheme/index.php').should be_true
62
75
  end
63
76
  end
64
-
77
+
65
78
  context "without a valid WordPress installation" do
66
79
  it "fails to create a Wordless theme" do
67
80
  content = capture(:stdout) { Wordless::CLI.start ['theme', 'mytheme'] }
@@ -69,25 +82,97 @@ describe Wordless::CLI do
69
82
  end
70
83
  end
71
84
  end
72
-
85
+
73
86
  context "#compile" do
74
87
  context "with a valid Wordless installation" do
75
88
  before :each do
76
89
  Wordless::CLI.start ['new', 'myapp']
77
90
  end
78
-
91
+
79
92
  it "compiles static assets" do
80
93
  Wordless::CLI.start ['compile']
81
- File.exists?('wp-content/themes/myapp/assets/stylesheets/screen.css').should eq true
82
- File.exists?('wp-content/themes/myapp/assets/javascripts/application.js').should eq true
94
+ File.exists?('wp-content/themes/myapp/assets/stylesheets/screen.css').should be_true
95
+ File.exists?('wp-content/themes/myapp/assets/javascripts/application.js').should be_true
83
96
  end
84
97
  end
85
98
  end
86
-
87
- after :each do
88
- Dir.chdir(@original_wd)
89
- %w(tmp/wordpress tmp/myapp).each do |dir|
90
- FileUtils.rm_rf(dir) if File.directory? dir
99
+
100
+ context "#clean" do
101
+ before do
102
+ FileUtils.mkdir_p('myapp/wp-content/themes/myapp/assets/stylesheets')
103
+ FileUtils.mkdir_p('myapp/wp-content/themes/myapp/assets/javascripts')
104
+ Dir.chdir('myapp')
105
+ end
106
+
107
+ let(:default_css) { 'wp-content/themes/myapp/assets/stylesheets/screen.css' }
108
+ let(:default_js) { 'wp-content/themes/myapp/assets/javascripts/application.js' }
109
+
110
+ let(:first_css) { 'wp-content/themes/myapp/assets/stylesheets/foo.css' }
111
+ let(:second_css) { 'wp-content/themes/myapp/assets/stylesheets/bar.css' }
112
+ let(:first_js) { 'wp-content/themes/myapp/assets/javascripts/robin.js' }
113
+ let(:second_js) { 'wp-content/themes/myapp/assets/javascripts/galahad.js' }
114
+
115
+ it "should remove default default assets" do
116
+ FileUtils.touch(default_css)
117
+ FileUtils.touch(default_js)
118
+
119
+ Wordless::CLI.start ['clean']
120
+
121
+ File.exists?(default_css).should be_false
122
+ File.exists?(default_js).should be_false
123
+ end
124
+
125
+ it "should remove assets specified on config" do
126
+ Wordless::CLI.class_variable_set :@@config, {
127
+ :static_css => [ first_css, second_css ],
128
+ :static_js => [ first_js, second_js ]
129
+ }
130
+
131
+ [ first_css, second_css, first_js, second_js ].each do |file|
132
+ FileUtils.touch(file)
133
+ end
134
+
135
+ Wordless::CLI.start ['clean']
136
+
137
+ [ first_css, second_css, first_js, second_js ].each do |file|
138
+ File.exists?(file).should be_false
139
+ end
140
+ end
141
+ end
142
+
143
+ context "#deploy" do
144
+
145
+ let(:cli) { Wordless::CLI.new }
146
+ let(:file) { 'shrubbery.txt' }
147
+
148
+ before :each do
149
+ FileUtils.mkdir_p('myapp') and Dir.chdir('myapp')
150
+ FileUtils.touch('wp-config.php')
151
+ Wordless::CLI.class_variable_set :@@config, {
152
+ :deploy_command => "touch #{file}"
153
+ }
154
+ end
155
+
156
+ it "should deploy via the deploy command" do
157
+ cli.deploy
158
+ File.exists?(file).should be_true
159
+ end
160
+
161
+ it "should compile and clean if refresh option is passed" do
162
+ cli.should_receive(:compile).and_return(true)
163
+ cli.should_receive(:clean).and_return(true)
164
+ cli.stub(:options).and_return({ 'refresh' => true })
165
+ cli.deploy
166
+ end
167
+
168
+ context "if a custom deploy is passed" do
169
+ let(:file) { 'knights.txt' }
170
+
171
+ it "should launch the custom deploy command" do
172
+ cli.stub(:options).and_return({ 'command' => "touch #{file}" })
173
+ cli.deploy
174
+ File.exists?(file).should be_true
175
+ end
91
176
  end
92
177
  end
93
- end
178
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,33 +2,11 @@ require 'wordless/cli'
2
2
  require 'fakeweb'
3
3
  require 'thor'
4
4
 
5
- # Set shell to basic
6
- # $0 = "thor"
7
- # $thor_runner = true
8
- # ARGV.clear
9
- # Thor::Base.shell = Thor::Shell::Basic
10
-
11
5
  RSpec.configure do |config|
12
6
  FakeWeb.allow_net_connect = false
13
-
14
- $stdout = StringIO.new
15
-
16
- # Stub Wordless::CLI#wordless_repo to avoid hitting the network when testing Wordless installation
17
- # FIXME - Need to be able to selectively stub this
18
- # config.before(:each, :stub_wordless_install => true) do
19
- # module Wordless
20
- # class CLI
21
- # no_tasks do
22
- # def wordless_repo
23
- # File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'wordless_stub'))
24
- # end
25
- # end
26
- # end
27
- # end
28
- # end
29
-
30
7
  FileUtils.mkdir('tmp') unless File.directory? 'tmp'
31
-
8
+
9
+ # utility to log commands output or errors
32
10
  def capture(stream)
33
11
  begin
34
12
  stream = stream.to_s
data/wordless.gemspec CHANGED
@@ -2,16 +2,17 @@
2
2
  require File.expand_path('../lib/wordless/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Étienne Després"]
5
+ gem.authors = ["Étienne Després", "Ju Liu"]
6
6
  gem.email = ["etienne@molotov.ca"]
7
7
  gem.description = %q{Command line tool to manage Wordless themes.}
8
8
  gem.summary = %q{Manage Wordless themes.}
9
9
  gem.homepage = "http://github.com/etienne/wordless_gem"
10
10
 
11
- gem.add_dependency "thor"
11
+ gem.add_dependency "thor", "~> 0.16.0"
12
12
  gem.add_dependency "wordpress_tools", '~> 0.0.1'
13
+ gem.add_dependency "activesupport", '~> 3.2.0'
13
14
 
14
- gem.add_development_dependency 'rspec'
15
+ gem.add_development_dependency 'rspec', "~> 2.11.0"
15
16
  gem.add_development_dependency 'fakeweb'
16
17
 
17
18
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,30 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Étienne Després
9
+ - Ju Liu
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-04-07 00:00:00.000000000 Z
13
+ date: 2012-11-22 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: thor
16
- requirement: &70234166003760 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
- - - ! '>='
20
+ - - ~>
20
21
  - !ruby/object:Gem::Version
21
- version: '0'
22
+ version: 0.16.0
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *70234166003760
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 0.16.0
25
31
  - !ruby/object:Gem::Dependency
26
32
  name: wordpress_tools
27
- requirement: &70234166002920 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
28
34
  none: false
29
35
  requirements:
30
36
  - - ~>
@@ -32,21 +38,47 @@ dependencies:
32
38
  version: 0.0.1
33
39
  type: :runtime
34
40
  prerelease: false
35
- version_requirements: *70234166002920
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 0.0.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: activesupport
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 3.2.0
36
63
  - !ruby/object:Gem::Dependency
37
64
  name: rspec
38
- requirement: &70234166002260 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
39
66
  none: false
40
67
  requirements:
41
- - - ! '>='
68
+ - - ~>
42
69
  - !ruby/object:Gem::Version
43
- version: '0'
70
+ version: 2.11.0
44
71
  type: :development
45
72
  prerelease: false
46
- version_requirements: *70234166002260
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 2.11.0
47
79
  - !ruby/object:Gem::Dependency
48
80
  name: fakeweb
49
- requirement: &70234166001480 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
50
82
  none: false
51
83
  requirements:
52
84
  - - ! '>='
@@ -54,7 +86,12 @@ dependencies:
54
86
  version: '0'
55
87
  type: :development
56
88
  prerelease: false
57
- version_requirements: *70234166001480
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
58
95
  description: Command line tool to manage Wordless themes.
59
96
  email:
60
97
  - etienne@molotov.ca
@@ -104,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
141
  version: '0'
105
142
  requirements: []
106
143
  rubyforge_project:
107
- rubygems_version: 1.8.17
144
+ rubygems_version: 1.8.23
108
145
  signing_key:
109
146
  specification_version: 3
110
147
  summary: Manage Wordless themes.