wordless 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3da29df733fc405d1627fb449aa30b9fc9caf92b
4
+ data.tar.gz: 9c5bfd9561d5738dc776c89fc20e81a6687f4905
5
+ SHA512:
6
+ metadata.gz: d649552b3e245354cfd89d4e985929fe055bd457ec10be01091137b0006a0aa65fd8212a0578319dc2e2b7adfa544b57e8b65c0c49e4ad956fcee55d8caf1ce2
7
+ data.tar.gz: d3e7a3c362182c41b3ba2d7b7772be481e689daf7cc4627eee79a85e5b93c5304c8a804745433059d525ab10a06983a37106ffe735d50cb7d21454ea2104bfb5
data/.gitignore CHANGED
@@ -1,19 +1,2 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- .rvmrc
7
1
  .DS_Store
8
- InstalledFiles
9
- _yardoc
10
- coverage
11
- doc/
12
- lib/bundler/man
13
- pkg
14
- rdoc
15
- spec/reports
16
- test/tmp
17
- test/version_tmp
18
- tmp
19
2
  spec/fixtures/wordless
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ install: bundle install
6
+ before_script:
7
+ - ./setup_tests.sh
8
+ - gem install therubyracer
9
+ - sudo apt-get update -qq
10
+ - sudo apt-get install -qq php5-cli
data/Gemfile.lock CHANGED
@@ -1,37 +1,72 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wordless (0.2.2)
5
- activesupport (~> 3.2.0)
6
- thor (~> 0.16.0)
7
- wordpress_tools (~> 0.0.1)
4
+ wordless (0.4.0)
5
+ activesupport
6
+ coffee-script
7
+ compass
8
+ sprockets
9
+ thor
10
+ wordpress_tools (~> 0.0.2)
11
+ yui-compressor
8
12
 
9
13
  GEM
10
14
  remote: https://rubygems.org/
11
15
  specs:
12
- activesupport (3.2.8)
13
- i18n (~> 0.6)
14
- multi_json (~> 1.0)
15
- diff-lcs (1.1.3)
16
+ activesupport (4.0.0)
17
+ i18n (~> 0.6, >= 0.6.4)
18
+ minitest (~> 4.2)
19
+ multi_json (~> 1.3)
20
+ thread_safe (~> 0.1)
21
+ tzinfo (~> 0.3.37)
22
+ atomic (1.1.13)
23
+ chunky_png (1.2.8)
24
+ coffee-script (2.2.0)
25
+ coffee-script-source
26
+ execjs
27
+ coffee-script-source (1.6.3)
28
+ compass (0.12.2)
29
+ chunky_png (~> 1.2)
30
+ fssm (>= 0.2.7)
31
+ sass (~> 3.1)
32
+ diff-lcs (1.2.4)
33
+ execjs (2.0.1)
16
34
  fakeweb (1.3.0)
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)
28
- wordpress_tools (0.0.1)
35
+ fssm (0.2.10)
36
+ hike (1.2.3)
37
+ i18n (0.6.5)
38
+ minitest (4.7.5)
39
+ multi_json (1.7.9)
40
+ rack (1.5.2)
41
+ rake (10.1.0)
42
+ rspec (2.14.1)
43
+ rspec-core (~> 2.14.0)
44
+ rspec-expectations (~> 2.14.0)
45
+ rspec-mocks (~> 2.14.0)
46
+ rspec-core (2.14.5)
47
+ rspec-expectations (2.14.2)
48
+ diff-lcs (>= 1.1.3, < 2.0)
49
+ rspec-mocks (2.14.3)
50
+ sass (3.2.10)
51
+ sprockets (2.10.0)
52
+ hike (~> 1.2)
53
+ multi_json (~> 1.0)
54
+ rack (~> 1.0)
55
+ tilt (~> 1.1, != 1.3.0)
56
+ thor (0.18.1)
57
+ thread_safe (0.1.2)
58
+ atomic
59
+ tilt (1.4.1)
60
+ tzinfo (0.3.37)
61
+ wordpress_tools (0.0.2)
62
+ rake
29
63
  thor
64
+ yui-compressor (0.11.0)
30
65
 
31
66
  PLATFORMS
32
67
  ruby
33
68
 
34
69
  DEPENDENCIES
35
70
  fakeweb
36
- rspec (~> 2.11.0)
71
+ rspec
37
72
  wordless!
@@ -1,6 +1,14 @@
1
1
  # Wordless
2
2
 
3
- A command line tool to help manage your [Wordless](http://welaika.github.com/wordless/)-based WordPress sites.
3
+ A command line tool to help manage your [Wordless](http://welaika.github.com/wordless/)-based WordPress sites.
4
+
5
+ ## Premise
6
+
7
+ This is a ruby-gem, so we expect you have already installed _ruby_; if it isn't
8
+ the case, probably you'll like to take a look to [RVM](http://rvm.io).
9
+
10
+ Wordless can't recognize if you are inside a wordpress' dirtree if you won't
11
+ be in the root dir; so use it from the root dir. Easy peasy.
4
12
 
5
13
  ## Installation
6
14
 
@@ -8,27 +16,59 @@ A command line tool to help manage your [Wordless](http://welaika.github.com/wor
8
16
 
9
17
  ## Usage
10
18
 
19
+ wordless help
20
+
21
+ Tasks:
22
+ wordless clean # Clean static assets
23
+ wordless compile # Compile static assets
24
+ wordless deploy # Deploy your WordPress site using the deploy_command defined in your Wordfile
25
+ wordless help [TASK] # Describe available tasks or one specific task
26
+ wordless install # Install the Wordless plugin into an existing WordPress installation
27
+ wordless new [NAME] # Download WordPress in specified directory, install the Wordless plugin and create a Wordless theme
28
+ wordless theme [NAME] # Create a new Wordless theme NAME
29
+
30
+ #### new
31
+
11
32
  Create a new Wordless-enabled WordPress site in directory `mysite`. This downloads the latest stable release of WordPress (you can also specify a locale):
12
33
 
13
34
  wordless new mysite
35
+
36
+ or
37
+
14
38
  wordless new mysite --locale=fr_FR
15
39
 
40
+ #### install
41
+
16
42
  If you already have WordPress installed, you can install the Wordless plugin (this currently installs from the master branch on GitHub):
17
43
 
18
44
  wordless install
19
45
 
46
+ #### theme
47
+
20
48
  Once Wordless is installed, you can create a new Wordless theme:
21
49
 
22
50
  wordless theme mytheme
23
51
 
52
+ Note: don't try at home to use `wordless theme .`: it won't work! So call it within
53
+ the `wp-content/themes` dir and pass a theme name as argument.
54
+
55
+ #### compile
56
+
57
+ Note: if you have no idea why the need to compile assets, you should read the
58
+ Wordless' README.
59
+
24
60
  Compile your site's static assets:
25
61
 
26
62
  wordless compile
27
63
 
64
+ #### clean
65
+
28
66
  Clean your compiled static assets:
29
67
 
30
68
  wordless clean
31
69
 
70
+ #### deploy
71
+
32
72
  Deploy your wordless installation using the `deploy_command` specified in your Wordfile:
33
73
 
34
74
  wordless deploy
@@ -37,13 +77,9 @@ You can also use the refresh option `-r` to compile your assets before deploying
37
77
 
38
78
  wordless deploy -r
39
79
 
40
- Get some help:
41
-
42
- wordless help
43
-
44
80
  ## Configuration
45
81
 
46
- You can create a Wordfile to customize the behaviour of wordless:
82
+ You can, **optionally**, create a `Wordfile` to customize the behaviour of wordless:
47
83
 
48
84
  ```yaml
49
85
  wordless_repo: 'git://github.com/welaika/wordless.git'
@@ -53,7 +89,7 @@ static_css:
53
89
  static_js:
54
90
  - 'wp-content/themes/mytheme/assets/javascripts/application.js'
55
91
  - 'wp-content/themes/mytheme/assets/javascripts/mobile.js'
56
- deploy_command: 'wordmove push -du'
92
+ deploy_command: 'wordmove push -t'
57
93
  ```
58
94
 
59
95
  ## Caveats
@@ -63,21 +99,7 @@ deploy_command: 'wordmove push -du'
63
99
 
64
100
  ## Running specs
65
101
 
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
102
+ bundle install && ./setup_tests && rspec
81
103
 
82
104
  ## Contributing
83
105
 
@@ -87,3 +109,4 @@ Go back to the wordless_gem directory and have fun:
87
109
  4. Commit your changes (`git commit -am 'Added some feature'`)
88
110
  5. Push to the branch (`git push origin my-new-feature`)
89
111
  6. Create new Pull Request
112
+
data/Rakefile CHANGED
@@ -1,2 +1,7 @@
1
1
  #!/usr/bin/env rake
2
+
2
3
  require "bundler/gem_tasks"
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ task :default => :spec
data/lib/wordless/cli.rb CHANGED
@@ -1,123 +1,52 @@
1
1
  require 'thor'
2
2
  require 'yaml'
3
3
  require 'net/http'
4
- require 'rbconfig'
5
4
  require 'tempfile'
6
- require 'wordpress_tools/cli'
7
- require 'wordless/cli_helper'
8
5
  require 'active_support/all'
6
+ require 'wordless/wordless_cli'
9
7
 
10
8
  module Wordless
11
9
  class CLI < Thor
12
10
  include Thor::Actions
13
- include Wordless::CLIHelper
14
-
15
- @@lib_dir = File.expand_path(File.dirname(__FILE__))
16
- @@config = if File.exists?('Wordfile')
17
- YAML::load(File.open('Wordfile')).symbolize_keys
18
- else
19
- {}
20
- end
21
11
 
22
12
  no_tasks do
23
- def wordless_repo
24
- @@config[:wordless_repo] || 'git://github.com/welaika/wordless.git'
13
+ def wordless_cli
14
+ Wordless::WordlessCLI.new(options, self)
25
15
  end
26
16
  end
27
17
 
28
18
  desc "new [NAME]", "Download WordPress in specified directory, install the Wordless plugin and create a Wordless theme"
29
19
  method_option :locale, :aliases => "-l", :desc => "WordPress locale (default is en_US)"
30
20
  def new(name)
31
- WordPressTools::CLI.new.invoke('new', [name], :bare => true, :locale => options['locale'])
32
- Dir.chdir(name)
33
- install
34
- theme(name)
21
+ wordless_cli.start(name)
35
22
  end
36
23
 
37
24
  desc "install", "Install the Wordless plugin into an existing WordPress installation"
38
25
  def install
39
- unless git_installed?
40
- error "Git is not available. Please install git."
41
- return
42
- end
43
-
44
- unless File.directory? 'wp-content/plugins'
45
- error "Directory 'wp-content/plugins' not found. Make sure you're at the root level of a WordPress installation."
46
- return
47
- end
48
-
49
- if add_git_repo wordless_repo, 'wp-content/plugins/wordless'
50
- success "Installed Wordless plugin."
51
- else
52
- error "There was an error installing the Wordless plugin."
53
- end
26
+ wordless_cli.install
54
27
  end
55
28
 
56
29
  desc "theme [NAME]", "Create a new Wordless theme NAME"
57
30
  def theme(name)
58
- unless File.directory? 'wp-content/themes'
59
- error "Directory 'wp-content/themes' not found. Make sure you're at the root level of a WordPress installation."
60
- return
61
- end
62
-
63
- # Run PHP helper script
64
- if system "php #{File.join(@@lib_dir, 'theme_builder.php')} #{name}"
65
- success "Created a new Wordless theme in 'wp-content/themes/#{name}'."
66
- else
67
- error "Couldn't create Wordless theme."
68
- return
69
- end
31
+ wordless_cli.theme(name)
70
32
  end
71
33
 
72
34
  desc "compile", "Compile static assets"
73
35
  def compile
74
- if system "php #{File.join(@@lib_dir, 'compile_assets.php')}"
75
- success "Compiled static assets."
76
- else
77
- error "Couldn't compile static assets."
78
- end
36
+ wordless_cli.compile
79
37
  end
80
38
 
81
39
  desc "clean", "Clean static assets"
82
40
  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
41
+ wordless_cli.clean
99
42
  end
100
43
 
101
44
  desc "deploy", "Deploy your WordPress site using the deploy_command defined in your Wordfile"
102
45
  method_option :refresh, :aliases => "-r", :desc => "Compile static assets before deploying and clean them afterwards"
103
46
  method_option :command, :aliases => "-c", :desc => "Use a custom deploy command"
104
47
  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']
48
+ wordless_cli.deploy
121
49
  end
122
50
  end
123
51
  end
52
+
@@ -1,3 +1,3 @@
1
1
  module Wordless
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -0,0 +1,122 @@
1
+ require 'wordpress_tools/cli'
2
+
3
+ module Wordless
4
+ class WordlessCLI
5
+ include WordPressTools::CLIHelper
6
+ attr_reader :options, :thor
7
+
8
+ def lib_dir
9
+ @@lib_dir ||= File.expand_path(File.dirname(__FILE__))
10
+ end
11
+
12
+ def config
13
+ @@config ||= (
14
+ if File.exists?('Wordfile')
15
+ YAML::load(File.open('Wordfile')).symbolize_keys
16
+ else
17
+ {}
18
+ end
19
+ )
20
+ end
21
+
22
+ [ :say, :run ].each do |sym|
23
+ define_method sym do |*args|
24
+ thor.send(sym, *args)
25
+ end
26
+ end
27
+
28
+ def initialize(options = {}, thor = nil)
29
+ @options = options
30
+ @thor = thor
31
+ end
32
+
33
+ def start(name)
34
+ WordPressTools::CLI.new.invoke('new', [name], :bare => true, :locale => options['locale'])
35
+ Dir.chdir(name)
36
+ install
37
+ theme(name)
38
+ end
39
+
40
+ def install
41
+ unless git_installed?
42
+ error "Git is not available. Please install git."
43
+ end
44
+
45
+ unless File.directory? 'wp-content/plugins'
46
+ error "Directory 'wp-content/plugins' not found. Make sure you're at the root level of a WordPress installation."
47
+ end
48
+
49
+ if run_command "git clone #{wordless_repo} wp-content/plugins/wordless"
50
+ success "Installed Wordless plugin."
51
+ else
52
+ error "There was an error installing the Wordless plugin."
53
+ end
54
+ end
55
+
56
+ def theme(name)
57
+ if File.directory? 'wp-content/themes'
58
+ # Run PHP helper script
59
+ if system "php #{File.join(lib_dir, 'theme_builder.php')} #{name}"
60
+ success "Created a new Wordless theme in 'wp-content/themes/#{name}'."
61
+ else
62
+ error "Couldn't create Wordless theme."
63
+ end
64
+ else
65
+ error "Directory 'wp-content/themes' not found. Make sure you're at the root level of a WordPress installation."
66
+ end
67
+ end
68
+
69
+ def compile
70
+ if system "php #{File.join(lib_dir, 'compile_assets.php')}"
71
+ success "Compiled static assets."
72
+ else
73
+ error "Couldn't compile static assets."
74
+ end
75
+ end
76
+
77
+ def clean
78
+ if File.directory? 'wp-content/themes'
79
+ static_css = Array(config[:static_css] || Dir['wp-content/themes/*/assets/stylesheets/screen.css'])
80
+ static_js = Array(config[:static_js] || Dir['wp-content/themes/*/assets/javascripts/application.js'])
81
+
82
+ (static_css + static_js).each do |file|
83
+ FileUtils.rm_f(file) if File.exists?(file)
84
+ end
85
+
86
+ success "Cleaned static assets."
87
+ else
88
+ error "Directory 'wp-content/themes' not found. Make sure you're at the root level of a WordPress installation."
89
+ end
90
+ end
91
+
92
+ def deploy
93
+ unless File.exists? 'wp-config.php'
94
+ error "WordPress not found. Make sure you're at the root level of a WordPress installation."
95
+ end
96
+
97
+ compile if options['refresh']
98
+
99
+ deploy_command = options['command'].presence || config[:deploy_command]
100
+
101
+ if deploy_command
102
+ system "#{deploy_command}"
103
+ else
104
+ error "deploy_command not set. Make sure it is included in your Wordfile."
105
+ end
106
+
107
+ clean if options['refresh']
108
+ end
109
+
110
+ private
111
+
112
+ def wordless_repo
113
+ config[:wordless_repo] || 'git://github.com/welaika/wordless.git'
114
+ end
115
+
116
+ def add_git_repo(repo, destination)
117
+ run_command "git clone #{repo} #{destination}"
118
+ end
119
+
120
+ end
121
+ end
122
+
data/setup_tests.sh ADDED
@@ -0,0 +1,32 @@
1
+ #! /bin/bash
2
+
3
+ set -e
4
+
5
+ FIXTURE_PATH="spec/fixtures/wordless"
6
+ WORDLESS_REPO="git://github.com/welaika/wordless.git"
7
+ WORDLESS_PREFERENCES="wordless/theme_builder/vanilla_theme/config/initializers/wordless_preferences.php"
8
+
9
+ function log {
10
+ echo;
11
+ echo "== [ $1 ] ==";
12
+ }
13
+
14
+ rm -rf $FIXTURE_PATH
15
+
16
+ log "Cloning wordless repo"
17
+ git clone --branch=master $WORDLESS_REPO $FIXTURE_PATH && cd $FIXTURE_PATH
18
+
19
+ log "Customizing ruby and compass paths"
20
+ echo "# BEGIN: wordless_preferences.php"
21
+ cp -f ../wordless_preferences.php $WORDLESS_PREFERENCES
22
+ perl -p -i -e "s|<RUBY_PATH>|$(which ruby)|" $WORDLESS_PREFERENCES
23
+ perl -p -i -e "s|<COMPASS_PATH>|$(which compass)|" $WORDLESS_PREFERENCES
24
+ cat $WORDLESS_PREFERENCES
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!"
data/spec/cli_spec.rb CHANGED
@@ -1,32 +1,24 @@
1
+ require 'thor'
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Wordless::CLI do
4
5
 
5
- before :all do
6
- wp_api_response = <<-eof
7
- upgrade
8
- http://wordpress.org/download/
9
- http://wordpress.org/wordpress-3.3.1.zip
10
- 3.3.1
11
- en_US
12
- 5.2.4
13
- 5.0
14
- eof
15
- FakeWeb.register_uri(:get, %r|http://api.wordpress.org/core/version-check/1.5/.*|, :body => wp_api_response)
16
- FakeWeb.register_uri(:get, "http://wordpress.org/wordpress-3.3.1.zip", :body => File.expand_path('spec/fixtures/wordpress_stub.zip'))
6
+ let(:config) do
7
+ { :wordless_repo => File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'wordless')) }
17
8
  end
18
9
 
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
- }
10
+ before do
11
+ Wordless::WordlessCLI.class_variable_set(:@@config, config)
12
+ end
13
+
14
+ before do
23
15
  @original_wd = Dir.pwd
24
16
  Dir.chdir('tmp')
25
17
  end
26
18
 
27
- after :each do
19
+ after do
28
20
  Dir.chdir(@original_wd)
29
- %w(tmp/wordpress tmp/myapp).each do |dir|
21
+ Dir["tmp/*"].each do |dir|
30
22
  FileUtils.rm_rf(dir) if File.directory? dir
31
23
  end
32
24
  end
@@ -85,14 +77,21 @@ describe Wordless::CLI do
85
77
 
86
78
  context "#compile" do
87
79
  context "with a valid Wordless installation" do
80
+ let(:compiled_css) { 'wp-content/themes/myapp/assets/stylesheets/screen.css' }
81
+ let(:compiled_js) { 'wp-content/themes/myapp/assets/javascripts/application.js' }
82
+
88
83
  before :each do
89
84
  Wordless::CLI.start ['new', 'myapp']
90
85
  end
91
86
 
92
87
  it "compiles static assets" do
93
88
  Wordless::CLI.start ['compile']
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
89
+
90
+ File.exists?(compiled_css).should be_true
91
+ File.exists?(compiled_js).should be_true
92
+
93
+ File.readlines(compiled_css).grep(/html{line-height:1}/).should_not be_empty
94
+ File.readlines(compiled_js).grep(/return "Yep, it works!";/).should_not be_empty
96
95
  end
97
96
  end
98
97
  end
@@ -123,7 +122,7 @@ describe Wordless::CLI do
123
122
  end
124
123
 
125
124
  it "should remove assets specified on config" do
126
- Wordless::CLI.class_variable_set :@@config, {
125
+ Wordless::WordlessCLI.class_variable_set :@@config, {
127
126
  :static_css => [ first_css, second_css ],
128
127
  :static_js => [ first_js, second_js ]
129
128
  }
@@ -144,11 +143,16 @@ describe Wordless::CLI do
144
143
 
145
144
  let(:cli) { Wordless::CLI.new }
146
145
  let(:file) { 'shrubbery.txt' }
146
+ let(:wordless_cli) { Wordless::WordlessCLI.new({}, Thor.new) }
147
147
 
148
- before :each do
148
+ before do
149
149
  FileUtils.mkdir_p('myapp') and Dir.chdir('myapp')
150
150
  FileUtils.touch('wp-config.php')
151
- Wordless::CLI.class_variable_set :@@config, {
151
+ end
152
+
153
+ before do
154
+ cli.stub(:wordless_cli).and_return(wordless_cli)
155
+ Wordless::WordlessCLI.class_variable_set :@@config, {
152
156
  :deploy_command => "touch #{file}"
153
157
  }
154
158
  end
@@ -159,9 +163,10 @@ describe Wordless::CLI do
159
163
  end
160
164
 
161
165
  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 })
166
+ wordless_cli.should_receive(:compile).and_return(true)
167
+ wordless_cli.should_receive(:clean).and_return(true)
168
+ wordless_cli.stub(:options).and_return({ 'refresh' => true })
169
+
165
170
  cli.deploy
166
171
  end
167
172
 
@@ -169,7 +174,7 @@ describe Wordless::CLI do
169
174
  let(:file) { 'knights.txt' }
170
175
 
171
176
  it "should launch the custom deploy command" do
172
- cli.stub(:options).and_return({ 'command' => "touch #{file}" })
177
+ wordless_cli.stub(:options).and_return({ 'command' => "touch #{file}" })
173
178
  cli.deploy
174
179
  File.exists?(file).should be_true
175
180
  end
@@ -0,0 +1,5 @@
1
+ <?php
2
+
3
+ Wordless::set_preference("assets.preprocessors", array("SprocketsPreprocessor", "CompassPreprocessor"));
4
+ Wordless::set_preference("css.compass_path", "<COMPASS_PATH>");
5
+ Wordless::set_preference("js.ruby_path", "<RUBY_PATH>");
data/spec/spec_helper.rb CHANGED
@@ -2,9 +2,31 @@ require 'wordless/cli'
2
2
  require 'fakeweb'
3
3
  require 'thor'
4
4
 
5
+ module WordPressTools
6
+ module CLIHelper
7
+ def exit; end
8
+ def info(message); end
9
+ def success(message); end
10
+ end
11
+ end
12
+
5
13
  RSpec.configure do |config|
6
- FakeWeb.allow_net_connect = false
7
- FileUtils.mkdir('tmp') unless File.directory? 'tmp'
14
+
15
+ config.before(:all) do
16
+ FileUtils.mkdir('tmp') unless File.directory? 'tmp'
17
+ FakeWeb.allow_net_connect = false
18
+ WP_API_RESPONSE = <<-eof
19
+ upgrade
20
+ http://wordpress.org/download/
21
+ http://wordpress.org/wordpress-3.6.zip
22
+ 3.6
23
+ en_US
24
+ 5.2.4
25
+ 5.0
26
+ eof
27
+ FakeWeb.register_uri(:get, %r|http://api.wordpress.org/core/version-check/1.5/.*|, :body => WP_API_RESPONSE)
28
+ FakeWeb.register_uri(:get, "http://wordpress.org/wordpress-3.6.zip", :body => File.expand_path('spec/fixtures/wordpress_stub.zip'))
29
+ end
8
30
 
9
31
  # utility to log commands output or errors
10
32
  def capture(stream)
@@ -16,6 +38,7 @@ RSpec.configure do |config|
16
38
  ensure
17
39
  eval("$#{stream} = #{stream.upcase}")
18
40
  end
41
+
19
42
  result
20
43
  end
21
44
  end
data/wordless.gemspec CHANGED
@@ -1,24 +1,28 @@
1
- # -*- encoding: utf-8 -*-
2
1
  require File.expand_path('../lib/wordless/version', __FILE__)
3
2
 
4
3
  Gem::Specification.new do |gem|
5
4
  gem.authors = ["Étienne Després", "Ju Liu"]
6
- gem.email = ["etienne@molotov.ca"]
5
+ gem.email = ["etienne@molotov.ca", "ju.liu@welaika.com"]
7
6
  gem.description = %q{Command line tool to manage Wordless themes.}
8
7
  gem.summary = %q{Manage Wordless themes.}
9
- gem.homepage = "http://github.com/etienne/wordless_gem"
10
-
11
- gem.add_dependency "thor", "~> 0.16.0"
12
- gem.add_dependency "wordpress_tools", '~> 0.0.1'
13
- gem.add_dependency "activesupport", '~> 3.2.0'
14
-
15
- gem.add_development_dependency 'rspec', "~> 2.11.0"
16
- gem.add_development_dependency 'fakeweb'
17
-
8
+ gem.homepage = "http://github.com/welaika/wordless_gem"
9
+
18
10
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
11
  gem.files = `git ls-files`.split("\n")
20
12
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
13
  gem.name = "wordless"
22
14
  gem.require_paths = ["lib"]
23
15
  gem.version = Wordless::VERSION
16
+
17
+ gem.add_dependency "thor"
18
+ gem.add_dependency "sprockets"
19
+ gem.add_dependency "compass"
20
+ gem.add_dependency "coffee-script"
21
+ gem.add_dependency "yui-compressor"
22
+ gem.add_dependency "activesupport"
23
+ gem.add_dependency "wordpress_tools", '~> 0.0.2'
24
+
25
+ gem.add_development_dependency 'rspec'
26
+ gem.add_development_dependency 'fakeweb'
24
27
  end
28
+
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Étienne Després
@@ -10,91 +9,138 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-11-22 00:00:00.000000000 Z
12
+ date: 2013-08-31 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: thor
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
- version: 0.16.0
20
+ version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ~>
25
+ - - '>='
29
26
  - !ruby/object:Gem::Version
30
- version: 0.16.0
27
+ version: '0'
31
28
  - !ruby/object:Gem::Dependency
32
- name: wordpress_tools
29
+ name: sprockets
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ~>
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
- version: 0.0.1
34
+ version: '0'
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ~>
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: compass
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: coffee-script
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
45
68
  - !ruby/object:Gem::Version
46
- version: 0.0.1
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: yui-compressor
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
47
84
  - !ruby/object:Gem::Dependency
48
85
  name: activesupport
49
86
  requirement: !ruby/object:Gem::Requirement
50
- none: false
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: wordpress_tools
100
+ requirement: !ruby/object:Gem::Requirement
51
101
  requirements:
52
102
  - - ~>
53
103
  - !ruby/object:Gem::Version
54
- version: 3.2.0
104
+ version: 0.0.2
55
105
  type: :runtime
56
106
  prerelease: false
57
107
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
108
  requirements:
60
109
  - - ~>
61
110
  - !ruby/object:Gem::Version
62
- version: 3.2.0
111
+ version: 0.0.2
63
112
  - !ruby/object:Gem::Dependency
64
113
  name: rspec
65
114
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
115
  requirements:
68
- - - ~>
116
+ - - '>='
69
117
  - !ruby/object:Gem::Version
70
- version: 2.11.0
118
+ version: '0'
71
119
  type: :development
72
120
  prerelease: false
73
121
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
122
  requirements:
76
- - - ~>
123
+ - - '>='
77
124
  - !ruby/object:Gem::Version
78
- version: 2.11.0
125
+ version: '0'
79
126
  - !ruby/object:Gem::Dependency
80
127
  name: fakeweb
81
128
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
129
  requirements:
84
- - - ! '>='
130
+ - - '>='
85
131
  - !ruby/object:Gem::Version
86
132
  version: '0'
87
133
  type: :development
88
134
  prerelease: false
89
135
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
136
  requirements:
92
- - - ! '>='
137
+ - - '>='
93
138
  - !ruby/object:Gem::Version
94
139
  version: '0'
95
140
  description: Command line tool to manage Wordless themes.
96
141
  email:
97
142
  - etienne@molotov.ca
143
+ - ju.liu@welaika.com
98
144
  executables:
99
145
  - wordless
100
146
  extensions: []
@@ -102,52 +148,53 @@ extra_rdoc_files: []
102
148
  files:
103
149
  - .gitignore
104
150
  - .rspec
151
+ - .travis.yml
105
152
  - Gemfile
106
153
  - Gemfile.lock
107
154
  - LICENSE
108
- - README.md
155
+ - README.mdown
109
156
  - Rakefile
110
157
  - bin/wordless
111
158
  - lib/wordless.rb
112
159
  - lib/wordless/cli.rb
113
- - lib/wordless/cli_helper.rb
114
160
  - lib/wordless/compile_assets.php
115
161
  - lib/wordless/theme_builder.php
116
162
  - lib/wordless/version.rb
117
163
  - lib/wordless/wordless_bridge.php
118
- - spec/cli_helper_spec.rb
164
+ - lib/wordless/wordless_cli.rb
165
+ - setup_tests.sh
119
166
  - spec/cli_spec.rb
167
+ - spec/fixtures/wordless_preferences.php
120
168
  - spec/fixtures/wordpress_stub.zip
121
169
  - spec/fixtures/zipped_file.zip
122
170
  - spec/spec_helper.rb
123
171
  - wordless.gemspec
124
- homepage: http://github.com/etienne/wordless_gem
172
+ homepage: http://github.com/welaika/wordless_gem
125
173
  licenses: []
174
+ metadata: {}
126
175
  post_install_message:
127
176
  rdoc_options: []
128
177
  require_paths:
129
178
  - lib
130
179
  required_ruby_version: !ruby/object:Gem::Requirement
131
- none: false
132
180
  requirements:
133
- - - ! '>='
181
+ - - '>='
134
182
  - !ruby/object:Gem::Version
135
183
  version: '0'
136
184
  required_rubygems_version: !ruby/object:Gem::Requirement
137
- none: false
138
185
  requirements:
139
- - - ! '>='
186
+ - - '>='
140
187
  - !ruby/object:Gem::Version
141
188
  version: '0'
142
189
  requirements: []
143
190
  rubyforge_project:
144
- rubygems_version: 1.8.23
191
+ rubygems_version: 2.0.3
145
192
  signing_key:
146
- specification_version: 3
193
+ specification_version: 4
147
194
  summary: Manage Wordless themes.
148
195
  test_files:
149
- - spec/cli_helper_spec.rb
150
196
  - spec/cli_spec.rb
197
+ - spec/fixtures/wordless_preferences.php
151
198
  - spec/fixtures/wordpress_stub.zip
152
199
  - spec/fixtures/zipped_file.zip
153
200
  - spec/spec_helper.rb
@@ -1,42 +0,0 @@
1
- require 'open-uri'
2
-
3
- module Wordless
4
- module CLIHelper
5
- def error(message)
6
- say message, :red
7
- end
8
-
9
- def success(message)
10
- say message, :green
11
- end
12
-
13
- def warning(message)
14
- say message, :yellow
15
- end
16
-
17
- def download(url, destination)
18
- begin
19
- f = open(destination, "wb")
20
- f.write(open(url).read) ? true : false
21
- rescue
22
- false
23
- ensure
24
- f.close
25
- end
26
- end
27
-
28
- def unzip(file, destination)
29
- run "unzip #{file} -d #{destination}", :verbose => false, :capture => true
30
- end
31
-
32
- def git_installed?
33
- # http://stackoverflow.com/questions/4597490/platform-independent-way-of-detecting-if-git-is-installed
34
- void = RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw/ ? 'NUL' : '/dev/null'
35
- system "git --version >>#{void} 2>&1"
36
- end
37
-
38
- def add_git_repo(repo, destination)
39
- run "git clone #{repo} #{destination}", :verbose => false, :capture => true
40
- end
41
- end
42
- end
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Wordless::CLIHelper do
4
-
5
- before :each do
6
- @cli = Wordless::CLI.new
7
- end
8
-
9
- context "::download" do
10
- before(:each) do
11
- @tempfile = Tempfile.new("download_test")
12
- @valid_url = "http://www.example.com/test"
13
- FakeWeb.register_uri(:get, @valid_url, :body => "Download test")
14
- end
15
-
16
- it "downloads a file to the specified location" do
17
- @cli.download(@valid_url, @tempfile.path)
18
- open(@tempfile.path).read.should == "Download test"
19
- end
20
-
21
- it "returns true on success" do
22
- @cli.download(@valid_url, @tempfile.path).should be_true
23
- end
24
-
25
- it "returns false on failure" do
26
- @cli.download("http://an.invalid.url", @tempfile.path).should be_false
27
- end
28
-
29
- after(:each) do
30
- @tempfile.close!
31
- end
32
- end
33
-
34
- context "::unzip" do
35
- it "unzips a file" do
36
- @cli.unzip(File.expand_path('spec/fixtures/zipped_file.zip'), 'tmp/unzip')
37
- File.exists?('tmp/unzip/zipped_file').should be_true
38
- end
39
-
40
- after(:each) do
41
- FileUtils.rm_rf('tmp/unzip') if File.directory? 'tmp/unzip'
42
- end
43
- end
44
-
45
- context "::error" do
46
- it "displays an error" do
47
- $stdout.should_receive(:puts).with("\e[31mI am an error\e[0m")
48
- @cli.error("I am an error")
49
- end
50
- end
51
-
52
- context "::success" do
53
- it "displays a success message" do
54
- $stdout.should_receive(:puts).with("\e[32mI am a success message\e[0m")
55
- @cli.success("I am a success message")
56
- end
57
- end
58
-
59
- context "::warning" do
60
- it "displays a warning" do
61
- $stdout.should_receive(:puts).with("\e[33mI am a warning\e[0m")
62
- @cli.warning("I am a warning")
63
- end
64
- end
65
- end