bundler-bower 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +95 -13
- data/lib/bundler/bower.rb +2 -2
- data/lib/bundler/bower/bundler_installer.rb +10 -4
- data/lib/bundler/bower/rake.rb +52 -1
- data/lib/bundler/bower/version.rb +1 -1
- data/spec/bundler/bower/integration_spec.rb +22 -3
- data/spec/bundler/bower/rake_spec.rb +54 -0
- data/spec/dummy_bower_json/Bowerfile +1 -0
- data/spec/dummy_bower_json/Gemfile +4 -0
- data/spec/dummy_bower_json/bower.json +8 -0
- data/spec/dummy_bowerfile/Bowerfile +2 -0
- data/spec/dummy_bowerfile/Gemfile +4 -0
- data/spec/spec_helper.rb +1 -0
- metadata +13 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dab3062b273a3559721269ab8a2040de70845b62
|
4
|
+
data.tar.gz: 6fdafce4ee50981b672e248f393a0b083cb315c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca0e3e5c8a39656cb37e2909840a45aae104b55691f880513241bdb09d8a9f4bf005e2ecb369caee39f6d29085e4bc4fcd05d2875465487f4789eca6e3fd8d86
|
7
|
+
data.tar.gz: 3a620311a687aadefa967187e2262c969a33bc1bb6ecfc044f34646cd9f914d032f3bcbc694bd78f72e31a1963c1e6bb7ca8d29a53b3fcefe99f3de442bd8720
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -11,8 +11,9 @@ Bower support for bundler. You can use assets from bower directly in `Gemfile`
|
|
11
11
|
|
12
12
|
### Requirements
|
13
13
|
|
14
|
-
*
|
15
|
-
*
|
14
|
+
* [node](http://nodejs.org)
|
15
|
+
* [bower](https://github.com/bower/bower) (>= 0.10.0) installed with npm
|
16
|
+
* ruby >= 1.9
|
16
17
|
|
17
18
|
## Installation
|
18
19
|
|
@@ -37,39 +38,116 @@ Add to your Gemfile require method.
|
|
37
38
|
source 'https://rubygems.org'
|
38
39
|
require 'bundler/bower'
|
39
40
|
|
40
|
-
|
41
|
+
# ...
|
42
|
+
```
|
43
|
+
|
44
|
+
You can use DSL from [bower-rails](https://github.com/42dev/bower-rails). Click [here](https://github.com/42dev/bower-rails#ruby-dsl-configuration) for details.
|
45
|
+
|
46
|
+
### Usage with Gemfile
|
47
|
+
|
48
|
+
You can use `asset` method directly in your Gemfile.
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
# Gemfile
|
52
|
+
source 'https://rubygems.org'
|
53
|
+
require 'bundler/bower'
|
54
|
+
|
55
|
+
gem 'rails'
|
56
|
+
asset 'backbone', '0.9'
|
57
|
+
```
|
58
|
+
|
59
|
+
### Usage with Bowerfile
|
60
|
+
|
61
|
+
You can use `Bowerfile` from [bower-rails](https://github.com/42dev/bower-rails). This file should be in the same directory as the `Gemfile`.
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
# Gemfile
|
65
|
+
source 'https://rubygems.org'
|
66
|
+
require 'bundler/bower'
|
67
|
+
|
68
|
+
gem 'rails'
|
69
|
+
```
|
70
|
+
|
71
|
+
And `Bowerfile`
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
# Bowerfile
|
75
|
+
|
76
|
+
asset 'backbone', '0.9'
|
77
|
+
```
|
41
78
|
|
42
|
-
|
43
|
-
|
79
|
+
### Usage with bower.json
|
80
|
+
|
81
|
+
You can use `bower.json` from [bower-rails](https://github.com/42dev/bower-rails). This file should be in the same directory as the `Gemfile`.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
# Gemfile
|
85
|
+
source 'https://rubygems.org'
|
86
|
+
require 'bundler/bower'
|
87
|
+
|
88
|
+
gem 'rails'
|
44
89
|
```
|
45
90
|
|
46
|
-
|
91
|
+
And `bower.json`
|
47
92
|
|
48
|
-
|
93
|
+
```ruby
|
94
|
+
# bower.json
|
95
|
+
{
|
96
|
+
"vendor": {
|
97
|
+
"name": "bower-rails generated vendor assets",
|
98
|
+
"dependencies": {
|
99
|
+
"backbone" : "0.9"
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
```
|
104
|
+
|
105
|
+
## Install dependencies
|
106
|
+
|
107
|
+
Just execute `bundle install`.
|
49
108
|
|
50
109
|
```
|
51
110
|
Using rake (10.1.0)
|
52
111
|
Using bundler (1.3.5)
|
53
112
|
bower backbone#0.9 cached git://github.com/jashkenas/backbone.git#0.9.10
|
54
113
|
bower backbone#0.9 validate 0.9.10 against git://github.com/jashkenas/backbone.git#0.9
|
55
|
-
bower moment#* cached git://github.com/timrwood/moment.git#2.4.0
|
56
|
-
bower moment#* validate 2.4.0 against git://github.com/timrwood/moment.git#*
|
57
|
-
bower moment#* install moment#2.4.0
|
58
114
|
bower backbone#0.9 install backbone#0.9.10
|
59
115
|
|
60
|
-
moment#2.4.0 bower_components/moment
|
61
|
-
|
62
116
|
backbone#0.9.10 bower_components/backbone
|
63
117
|
bower check-new Checking for new versions of the project dependencies..
|
64
118
|
dsl-generated dependencies /home/lite/work/bundler-bower/spec/dummy/vendor/assets
|
65
119
|
├── backbone#0.9.10 (latest is 1.1.0)
|
66
|
-
└── moment#2.4.0
|
67
120
|
Your bundle is complete!
|
68
121
|
Use `bundle show [gemname]` to see where a bundled gem is installed.
|
69
122
|
```
|
70
123
|
|
71
124
|
When you execute `bundle` or `bundle install` bundler-bower will execute `bower install`. But when you execute `bundle update` bundler-bower will execute `bower update`. When bundler quits you can find your assets in `vendor/assets/bower_components`. Of course you can change this directory by `assets_path` method.
|
72
125
|
|
126
|
+
## Configure asset pipeline
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
# config/application.rb
|
130
|
+
|
131
|
+
# include Bower components in compiled assets
|
132
|
+
config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components')
|
133
|
+
```
|
134
|
+
|
135
|
+
Update your `application.js` file
|
136
|
+
|
137
|
+
```
|
138
|
+
// app/assets/javascripts/application.js
|
139
|
+
//
|
140
|
+
// Bower packages
|
141
|
+
//= require backbone/backbone
|
142
|
+
//
|
143
|
+
// Other components
|
144
|
+
//= require jquery
|
145
|
+
//= require jquery_ujs
|
146
|
+
// ...
|
147
|
+
```
|
148
|
+
|
149
|
+
ENJOY!
|
150
|
+
|
73
151
|
## Contributing
|
74
152
|
|
75
153
|
1. Fork it
|
@@ -77,3 +155,7 @@ When you execute `bundle` or `bundle install` bundler-bower will execute `bower
|
|
77
155
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
78
156
|
4. Push to the branch (`git push origin my-new-feature`)
|
79
157
|
5. Create new Pull Request
|
158
|
+
|
159
|
+
|
160
|
+
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/LTe/bundler-bower/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
161
|
+
|
data/lib/bundler/bower.rb
CHANGED
@@ -6,5 +6,5 @@ require "bundler/bower/fake_dsl/bower-rails"
|
|
6
6
|
require "bundler/bower/bundler_installer"
|
7
7
|
|
8
8
|
Bundler::Dsl.send(:include, Bundler::Bower::FakeDsl::Bundler)
|
9
|
-
BowerRails::Dsl.send(:
|
10
|
-
Bundler::Installer.send(:
|
9
|
+
BowerRails::Dsl.send(:include, Bundler::Bower::FakeDsl::BowerRails)
|
10
|
+
Bundler::Installer.send(:include, Bundler::Bower::BundlerInstaller)
|
@@ -3,10 +3,16 @@ require 'bundler/bower/rake'
|
|
3
3
|
module Bundler
|
4
4
|
module Bower
|
5
5
|
module BundlerInstaller
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
def self.included(base)
|
7
|
+
base.class_eval do
|
8
|
+
alias :old_run :run
|
9
|
+
|
10
|
+
def run(options)
|
11
|
+
result = old_run(options)
|
12
|
+
Bundler::Bower::Rake.new(options).perform
|
13
|
+
result
|
14
|
+
end
|
15
|
+
end
|
10
16
|
end
|
11
17
|
end
|
12
18
|
end
|
data/lib/bundler/bower/rake.rb
CHANGED
@@ -4,12 +4,27 @@ require 'bower-rails'
|
|
4
4
|
module Bundler
|
5
5
|
module Bower
|
6
6
|
class Rake
|
7
|
+
DEPENDENCY_FILES = %w{bower.json Bowerfile Gemfile}.freeze
|
8
|
+
|
7
9
|
def initialize(options)
|
8
10
|
@options = options
|
9
11
|
end
|
10
12
|
|
13
|
+
def dependency_file
|
14
|
+
entries = Dir.entries(Dir.pwd)
|
15
|
+
DEPENDENCY_FILES.detect { |file| entries.include?(file) }
|
16
|
+
end
|
17
|
+
|
11
18
|
def perform
|
12
|
-
|
19
|
+
case dependency_file
|
20
|
+
when "Gemfile" then perform_dsl("Gemfile")
|
21
|
+
when "Bowerfile" then perform_dsl("Bowerfile")
|
22
|
+
when "bower.json" then perform_json
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def perform_dsl(file)
|
27
|
+
dsl = BowerRails::Dsl.evalute(file)
|
13
28
|
|
14
29
|
dsl.write_bower_json
|
15
30
|
dsl.write_dotbowerrc
|
@@ -22,6 +37,42 @@ module Bundler
|
|
22
37
|
end
|
23
38
|
end
|
24
39
|
|
40
|
+
def perform_json(remove_components = true)
|
41
|
+
bower_root = Dir.pwd
|
42
|
+
json = JSON.parse(File.read(File.join(bower_root, "bower.json")))
|
43
|
+
dot_bowerrc = JSON.parse(File.read(File.join(bower_root, '.bowerrc'))) rescue {}
|
44
|
+
|
45
|
+
dot_bowerrc["directory"] = "bower_components"
|
46
|
+
|
47
|
+
if (json.keys - ['lib', 'vendor']).empty?
|
48
|
+
folders = json.keys
|
49
|
+
else
|
50
|
+
raise "Assuming a standard bower package but cannot find the required 'name' key" unless !!json['name']
|
51
|
+
folders = ['vendor']
|
52
|
+
end
|
53
|
+
|
54
|
+
folders.each do |dir|
|
55
|
+
puts "\nInstalling dependencies into #{dir}"
|
56
|
+
data = json[dir]
|
57
|
+
data = json if data.nil?
|
58
|
+
|
59
|
+
dir = File.join(bower_root, dir, "assets")
|
60
|
+
FileUtils.mkdir_p dir unless File.directory? dir
|
61
|
+
|
62
|
+
Dir.chdir(dir) do
|
63
|
+
FileUtils.rm_rf("bower_components") if remove_components
|
64
|
+
File.open("bower.json", "w") { |f| f.write(data.to_json) }
|
65
|
+
File.open(".bowerrc", "w") { |f| f.write(JSON.pretty_generate(dot_bowerrc)) }
|
66
|
+
|
67
|
+
system(command)
|
68
|
+
system('bower list')
|
69
|
+
|
70
|
+
FileUtils.rm("bower.json")
|
71
|
+
FileUtils.rm(".bowerrc")
|
72
|
+
end if data && !data["dependencies"].empty?
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
25
76
|
def update?
|
26
77
|
@options["update"]
|
27
78
|
end
|
@@ -1,13 +1,32 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Integration test" do
|
4
|
-
let(:directory) { File.join(File.dirname(__FILE__), "../../dummy") }
|
5
4
|
let(:test_node) { TestNode.new(:gemfile => "#{directory}/Gemfile", :type => "install") }
|
6
5
|
|
7
6
|
before { Dir.chdir(directory) { test_node.spawn } }
|
8
7
|
after { FileUtils.rm_rf("#{ directory}/vendor") }
|
9
8
|
|
10
|
-
|
11
|
-
File.
|
9
|
+
describe "Gemfile" do
|
10
|
+
let(:directory) { File.join(File.dirname(__FILE__), "../../dummy") }
|
11
|
+
|
12
|
+
it "download backbone" do
|
13
|
+
File.exist?("#{directory}/vendor/assets/bower_components/backbone/backbone.js").should be_true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "Bowerfile" do
|
18
|
+
let(:directory) { File.join(File.dirname(__FILE__), "../../dummy_bowerfile") }
|
19
|
+
|
20
|
+
it "download backbone" do
|
21
|
+
File.exist?("#{directory}/vendor/assets/bower_components/backbone/backbone.js").should be_true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "bower.json" do
|
26
|
+
let(:directory) { File.join(File.dirname(__FILE__), "../../dummy_bower_json") }
|
27
|
+
|
28
|
+
it "download backbone" do
|
29
|
+
File.exist?("#{directory}/vendor/assets/bower_components/backbone/backbone.js").should be_true
|
30
|
+
end
|
12
31
|
end
|
13
32
|
end
|
@@ -5,6 +5,60 @@ module Bundler::Bower
|
|
5
5
|
let(:options) { {} }
|
6
6
|
subject { Rake.new(options) }
|
7
7
|
|
8
|
+
describe "recognize dependency file" do
|
9
|
+
before { stub(Dir).entries(any_args) { files } }
|
10
|
+
|
11
|
+
context "only Gemfile" do
|
12
|
+
let(:files) { ["Gemfile", "other-file" ].shuffle }
|
13
|
+
|
14
|
+
it "returns Gemfile as dependency file" do
|
15
|
+
subject.dependency_file.should == "Gemfile"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "Bowerfile and Gemfile" do
|
20
|
+
let(:files) { ["Gemfile", "Bowerfile", "other-file" ].shuffle }
|
21
|
+
|
22
|
+
it "returns Bowerfile" do
|
23
|
+
subject.dependency_file.should == "Bowerfile"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "bower.json, Bowerfile and Gemfile" do
|
28
|
+
let(:files) { ["Gemfile", "Bowerfile", "bower.json", "other-file" ].shuffle }
|
29
|
+
|
30
|
+
it "returns bower.json" do
|
31
|
+
subject.dependency_file.should == "bower.json"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "stategy for DSL and .json format" do
|
37
|
+
describe "for DSL" do
|
38
|
+
["Gemfile", "Bowerfile"].each do |file|
|
39
|
+
describe file do
|
40
|
+
before { stub(subject).dependency_file { file } }
|
41
|
+
|
42
|
+
it "execute DSL strategy for #{file}" do
|
43
|
+
mock(subject).perform_dsl(file)
|
44
|
+
subject.perform
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "for .json file" do
|
51
|
+
describe "bower.json" do
|
52
|
+
before { stub(subject).dependency_file { "bower.json" } }
|
53
|
+
|
54
|
+
it "execute standard strategy for bower.json" do
|
55
|
+
mock(subject).perform_json
|
56
|
+
subject.perform
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
8
62
|
describe "during bundle (install)" do
|
9
63
|
describe "#update?" do
|
10
64
|
it "returns false" do
|
@@ -0,0 +1 @@
|
|
1
|
+
asset 'moment'
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler-bower
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Niełacny
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bower-rails
|
@@ -75,6 +75,11 @@ files:
|
|
75
75
|
- spec/bundler/bower/integration_spec.rb
|
76
76
|
- spec/bundler/bower/rake_spec.rb
|
77
77
|
- spec/dummy/Gemfile
|
78
|
+
- spec/dummy_bower_json/Bowerfile
|
79
|
+
- spec/dummy_bower_json/Gemfile
|
80
|
+
- spec/dummy_bower_json/bower.json
|
81
|
+
- spec/dummy_bowerfile/Bowerfile
|
82
|
+
- spec/dummy_bowerfile/Gemfile
|
78
83
|
- spec/spec_helper.rb
|
79
84
|
- spec/support/test_node.rb
|
80
85
|
homepage: https://github.com/LTe/bundler-bower
|
@@ -97,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
102
|
version: '0'
|
98
103
|
requirements: []
|
99
104
|
rubyforge_project:
|
100
|
-
rubygems_version: 2.
|
105
|
+
rubygems_version: 2.1.11
|
101
106
|
signing_key:
|
102
107
|
specification_version: 4
|
103
108
|
summary: integration bundler with bower
|
@@ -105,5 +110,10 @@ test_files:
|
|
105
110
|
- spec/bundler/bower/integration_spec.rb
|
106
111
|
- spec/bundler/bower/rake_spec.rb
|
107
112
|
- spec/dummy/Gemfile
|
113
|
+
- spec/dummy_bower_json/Bowerfile
|
114
|
+
- spec/dummy_bower_json/Gemfile
|
115
|
+
- spec/dummy_bower_json/bower.json
|
116
|
+
- spec/dummy_bowerfile/Bowerfile
|
117
|
+
- spec/dummy_bowerfile/Gemfile
|
108
118
|
- spec/spec_helper.rb
|
109
119
|
- spec/support/test_node.rb
|