bower-rails 0.8.3 → 0.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2aaf9a0d471ed511ce2f9d98a433117cb9f70595
4
- data.tar.gz: d9c3bf796251d8e2aba1bce1fb9afcf49b542245
3
+ metadata.gz: 065bcccfc41af7421a73a3dbc925806269a0c1e3
4
+ data.tar.gz: a2b254f45c3532b226c226a446abb73ca95afd63
5
5
  SHA512:
6
- metadata.gz: 9b37bf6cb706d84d02e5a958383a593c127fd9cea2029f526b42f639ae28a5c431eb7446b7eabfacec15447c78c9047915c23419b44f471bceec8fa9fa16e023
7
- data.tar.gz: 9bb77af61131dde588d5719ceb8b93450f473eef14890b314dc0c81fc87dcda3f37822dcd2fa64cc1ba1fb3dcdde9aaaff86016686a197922f6e986304c0a4c2
6
+ metadata.gz: dc683b0bd9d8094ad23bb3328a60335bca99d1ff58568817bb9b76b485c4a485efb05e45d7ce7330bea94515aca55d1f784c467a6a0d136b51e690bcb8b7706b
7
+ data.tar.gz: 2be8d8141f6c6b4c1682051ea80216cb36ea954ee63d71033236448e9628294e4b2b654acba6535c579b05261c7cd7b1bf8735bd43c6a3893b6960b9fce7a446
data/README.md CHANGED
@@ -4,11 +4,11 @@ bower-rails
4
4
  [![Gem Version](http://img.shields.io/gem/v/bower-rails.svg)][gem]
5
5
  [![Code Climate](http://img.shields.io/codeclimate/github/42dev/bower-rails.svg)][codeclimate]
6
6
  [![Dependency Status](http://img.shields.io/gemnasium/SergeyKishenin/bower-rails.svg)][gemnasium]
7
- [![Build Status](http://img.shields.io/travis/mbj/concord/master.svg)][travis]
7
+ [![Build Status](https://travis-ci.org/42dev/bower-rails.svg?branch=master)][travis]
8
8
  [![Coverage Status](https://coveralls.io/repos/42dev/bower-rails/badge.png)][coveralls]
9
9
 
10
10
  [gem]: https://rubygems.org/gems/bower-rails
11
- [travis]: https://travis-ci.org/mbj/concord
11
+ [travis]: https://travis-ci.org/42dev/bower-rails
12
12
  [gemnasium]: https://gemnasium.com/SergeyKishenin/bower-rails
13
13
  [codeclimate]: https://codeclimate.com/github/42dev/bower-rails
14
14
  [coveralls]: https://coveralls.io/r/42dev/bower-rails
@@ -157,6 +157,30 @@ results in the following bower.json file:
157
157
  ```
158
158
  NOTE: Available dependency groups are `:dependencies` (default) and `:dev_dependencies`. Others are not allowed according to the Rails convention.
159
159
 
160
+ ## Bower Resolutions
161
+
162
+ To specify a [bower resolution][] use `resolution` DSL method in your Bowerfile:
163
+
164
+ ```ruby
165
+ resolution "angular", "1.2.22"
166
+ ```
167
+
168
+ That will produce `bower.json` like:
169
+
170
+ ``` javascript
171
+ {
172
+ "name" : "dsl-generated dependencies",
173
+ "dependencies" : {
174
+ "angular" : "1.2.22"
175
+ },
176
+ "resolutions": {
177
+ "angular": "1.2.22"
178
+ }
179
+ }
180
+ ```
181
+
182
+ [#bower resolution]: http://jaketrent.com/post/bower-resolutions/
183
+
160
184
  ##Configuration
161
185
 
162
186
  Change options in your `config/initializers/bower_rails.rb`:
@@ -17,37 +17,10 @@ module BowerRails
17
17
  @root_path = root_path
18
18
  @bower_dependencies_list = []
19
19
  @dependencies = {}
20
+ @resolutions = {}
20
21
  @assets_path ||= "assets"
21
22
  end
22
23
 
23
- def eval_file(file)
24
- instance_eval(File.open(file, "rb") { |f| f.read }, file.to_s)
25
- end
26
-
27
- def directories
28
- @dependencies.keys
29
- end
30
-
31
- def group(name, options = {}, &block)
32
- options[:assets_path] ||= @assets_path
33
-
34
- assert_asset_path options[:assets_path]
35
- assert_group_name name
36
-
37
- @current_group = add_group name, options
38
- yield if block_given?
39
- end
40
-
41
- def dependency_group(name, options = {}, &block)
42
-
43
- assert_dependency_group_name name
44
- add_dependency_group name
45
-
46
- yield if block_given?
47
-
48
- remove_dependency_group!
49
- end
50
-
51
24
  def asset(name, *args)
52
25
  group = @current_group || default_group
53
26
  options = Hash === args.last ? args.pop.dup : {}
@@ -71,28 +44,22 @@ module BowerRails
71
44
  @dependencies[normalized_group_path][current_dependency_group_normalized][name] = version
72
45
  end
73
46
 
74
- def write_bower_json
75
- @dependencies.each do |dir, data|
76
- FileUtils.mkdir_p dir unless File.directory? dir
77
- File.open(File.join(dir, "bower.json"), "w") do |f|
78
- f.write(dependencies_to_json(data))
79
- end
80
- end
47
+ def dependency_group(name, options = {}, &block)
48
+
49
+ assert_dependency_group_name name
50
+ add_dependency_group name
51
+
52
+ yield if block_given?
53
+
54
+ remove_dependency_group!
81
55
  end
82
56
 
83
- def generate_dotbowerrc
84
- contents = JSON.parse(File.read(File.join(root_path, '.bowerrc'))) rescue {}
85
- contents["directory"] = "bower_components"
86
- JSON.pretty_generate(contents)
57
+ def directories
58
+ @dependencies.keys
87
59
  end
88
60
 
89
- def write_dotbowerrc
90
- groups.map do |group|
91
- normalized_group_path = normalize_location_path(group.first, group_assets_path(group))
92
- File.open(File.join(normalized_group_path, ".bowerrc"), "w") do |f|
93
- f.write(generate_dotbowerrc)
94
- end
95
- end
61
+ def eval_file(file)
62
+ instance_eval(File.open(file, "rb") { |f| f.read }, file.to_s)
96
63
  end
97
64
 
98
65
  def final_assets_path
@@ -101,31 +68,56 @@ module BowerRails
101
68
  end.uniq
102
69
  end
103
70
 
71
+ def generate_dotbowerrc
72
+ contents = JSON.parse(File.read(File.join(root_path, '.bowerrc'))) rescue {}
73
+ contents["directory"] = "bower_components"
74
+ JSON.pretty_generate(contents)
75
+ end
76
+
104
77
  def group_assets_path group
105
78
  group.last[:assets_path]
106
79
  end
107
80
 
108
- private
81
+ def group(name, options = {}, &block)
82
+ options[:assets_path] ||= @assets_path
109
83
 
110
- # Returns name for the current dependency from the stack
111
- #
112
- def current_dependency_group
113
- @dependency_groups.last || DEFAULT_DEPENDENCY_GROUP.to_sym
84
+ assert_asset_path options[:assets_path]
85
+ assert_group_name name
86
+
87
+ @current_group = add_group name, options
88
+ yield if block_given?
114
89
  end
115
90
 
116
- # Returns normalized current dependency group name
117
- #
118
- def current_dependency_group_normalized
119
- normalize_dependency_group_name current_dependency_group
91
+ def resolution(name, version)
92
+ @resolutions[name] = version
120
93
  end
121
94
 
122
- # Implementing ActiveSupport::Inflector camelize(:lower)
123
- #
124
- def normalize_dependency_group_name(name)
125
- segments = name.to_s.dup.downcase.split(/_/)
126
- [segments.shift, *segments.map{ |word| word.capitalize }].join('').to_sym
95
+ def resolutions_with_root
96
+ { :resolutions => @resolutions }
127
97
  end
128
98
 
99
+ def write_bower_json
100
+ @dependencies.each do |dir, data|
101
+
102
+ FileUtils.mkdir_p dir unless File.directory? dir
103
+ File.open(File.join(dir, "bower.json"), "w") do |f|
104
+ data.merge!(resolutions_with_root)
105
+ f.write(dependencies_to_json(data))
106
+ end
107
+ end
108
+ end
109
+
110
+ def write_dotbowerrc
111
+ groups.map do |group|
112
+ normalized_group_path = normalize_location_path(group.first, group_assets_path(group))
113
+ File.open(File.join(normalized_group_path, ".bowerrc"), "w") do |f|
114
+ f.write(generate_dotbowerrc)
115
+ end
116
+ end
117
+ end
118
+
119
+ private
120
+
129
121
  # Stores the dependency group name in the stack
130
122
  #
131
123
  def add_dependency_group(dependency_group)
@@ -134,32 +126,10 @@ module BowerRails
134
126
  dependency_group
135
127
  end
136
128
 
137
- # Removes the dependency group name in the stack
138
- #
139
- def remove_dependency_group!
140
- @dependency_groups.pop
141
- end
142
-
143
129
  def add_group(*group)
144
130
  @groups = (groups << group) and return group
145
131
  end
146
132
 
147
- def groups
148
- @groups ||= [default_group]
149
- end
150
-
151
- def default_group
152
- [:vendor, { :assets_path => @assets_path }]
153
- end
154
-
155
- # Attempts to parse data from @dependencies to JSON
156
- #
157
- def dependencies_to_json(data)
158
- JSON.pretty_generate({
159
- :name => "dsl-generated dependencies"
160
- }.merge(data))
161
- end
162
-
163
133
  def assert_dependency_group_name(name)
164
134
  unless [:dependencies, :devDependencies].include?(normalize_dependency_group_name(name))
165
135
  raise ArgumentError, "Dependency group should be either dependencies or dev_dependencies, provided: #{name}"
@@ -181,8 +151,49 @@ module BowerRails
181
151
  raise ArgumentError, "Group name should be :lib or :vendor only" unless [:lib, :vendor].include?(name)
182
152
  end
183
153
 
154
+ # Returns name for the current dependency from the stack
155
+ #
156
+ def current_dependency_group
157
+ @dependency_groups.last || DEFAULT_DEPENDENCY_GROUP.to_sym
158
+ end
159
+
160
+ # Returns normalized current dependency group name
161
+ #
162
+ def current_dependency_group_normalized
163
+ normalize_dependency_group_name current_dependency_group
164
+ end
165
+
166
+ def default_group
167
+ [:vendor, { :assets_path => @assets_path }]
168
+ end
169
+
170
+ # Attempts to parse data from @dependencies to JSON
171
+ #
172
+ def dependencies_to_json(data)
173
+ JSON.pretty_generate({
174
+ :name => "dsl-generated dependencies"
175
+ }.merge(data))
176
+ end
177
+
178
+ def groups
179
+ @groups ||= [default_group]
180
+ end
181
+
182
+ # Implementing ActiveSupport::Inflector camelize(:lower)
183
+ #
184
+ def normalize_dependency_group_name(name)
185
+ segments = name.to_s.dup.downcase.split(/_/)
186
+ [segments.shift, *segments.map{ |word| word.capitalize }].join('').to_sym
187
+ end
188
+
184
189
  def normalize_location_path(loc, assets_path)
185
190
  File.join(root_path, loc.to_s, assets_path)
186
191
  end
192
+
193
+ # Removes the dependency group name in the stack
194
+ #
195
+ def remove_dependency_group!
196
+ @dependency_groups.pop
197
+ end
187
198
  end
188
199
  end
@@ -120,7 +120,7 @@ module BowerRails
120
120
  Dir['bower_components/**/*.css'].each do |filename|
121
121
  contents = File.read(filename) if FileTest.file?(filename)
122
122
  # http://www.w3.org/TR/CSS2/syndata.html#uri
123
- url_regex = /url\(\s*['"]?(?![a-z]+:)([^'"\)]*)['"]?\s*\)/
123
+ url_regex = /url\((?!\#)\s*['"]?(?![a-z]+:)([^'"\)]*)['"]?\s*\)/
124
124
 
125
125
  # Resolve paths in CSS file if it contains a url
126
126
  if contents =~ url_regex
@@ -23,7 +23,6 @@ module BowerRails
23
23
  end
24
24
 
25
25
  rake_tasks do
26
- require "tasks/helpers/before_hook.rb"
27
26
  load "tasks/bower.rake"
28
27
  end
29
28
  end
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module BowerRails
3
- VERSION = "0.8.3"
3
+ VERSION = "0.9.0"
4
4
  end
@@ -10,4 +10,7 @@ BowerRails.configure do |bower_rails|
10
10
 
11
11
  # Invokes rake bower:clean before precompilation. Defaults to false
12
12
  # bower_rails.clean_before_precompile = true
13
- end
13
+
14
+ # Invokes rake bower:install:deployment instead rake bower:install. Defaults to false
15
+ # bower_rails.use_bower_install_deployment = true
16
+ end
data/lib/tasks/bower.rake CHANGED
@@ -1,3 +1,4 @@
1
+ require 'tasks/helpers/before_hook'
1
2
  require 'bower-rails/performer'
2
3
 
3
4
  include BeforeHook
@@ -78,7 +79,7 @@ namespace :bower do
78
79
  end
79
80
  end
80
81
 
81
- before 'assets:precompile' do
82
+ before_rake_task 'assets:precompile' do
82
83
  BowerRails.tasks.map do |task|
83
84
  Rake::Task[task].invoke
84
85
  end
@@ -1,7 +1,7 @@
1
1
  module BeforeHook
2
- # The `before` hook for rake tasks.
2
+ # The `before` hook for rake tasks.
3
3
  # The code was taken from https://github.com/guillermo/rake-hooks/blob/master/lib/rake/hooks.rb#L2
4
- def before(*task_names, &new_task)
4
+ def before_rake_task(*task_names, &new_task)
5
5
  task_names.each do |task_name|
6
6
  old_task = Rake.application.instance_variable_get('@tasks').delete(task_name.to_s)
7
7
  return unless old_task
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bower-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Harrison