bower_vendor 0.0.4 → 0.0.5
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 +4 -4
- data/README.md +55 -2
- data/config/bower_vendor.yml +20 -0
- data/lib/bower_vendor.rb +2 -1
- data/lib/bower_vendor/base.rb +10 -8
- data/lib/bower_vendor/clean.rb +11 -0
- data/lib/bower_vendor/copy.rb +55 -32
- data/lib/bower_vendor/version.rb +1 -1
- data/lib/tasks/{vendor.rake → bower_vendor.rake} +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 762474c4e7c499fcf2909f643ee0ec6e799e69fc
|
4
|
+
data.tar.gz: 201cf15a263a2dfe38206305ca8f2665fadb0386
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d894aceae7ae02bdb74d920b773dd6b53b9c524c6b748403a60bf188534e0867b198e702b4ee369d8c7a5b9cbb0b865d57111edf5705ab277e769115d7e9b436
|
7
|
+
data.tar.gz: c942e7408a84f3d9d206d59abbcb271670e130bc2d07f34d27d7f0123c9cb9999989264a41b5012699d6d87275cc7db092c0ca7594da07b572e2590346362fff
|
data/README.md
CHANGED
@@ -1,8 +1,24 @@
|
|
1
1
|
# BowerVendor
|
2
2
|
|
3
|
-
|
3
|
+
Simple rake tasks to manage vendor assets for rails application
|
4
4
|
using bower. This gem is inspired by bower-rails.
|
5
5
|
|
6
|
+
Reason for the existence of this gem is to have improved assets control, which is lacking
|
7
|
+
in bower-rails. This gem not only fetches assets using bower, but also contains logic to
|
8
|
+
maintain actually used assets in "vendor/asests" so that they can be committed safely into
|
9
|
+
repository.
|
10
|
+
|
11
|
+
This has various benefits
|
12
|
+
- Removes bower dependency from deploy
|
13
|
+
* Safe-guarding deplpy from unavailability of bower central repository
|
14
|
+
* Faster deploy
|
15
|
+
* no need to have node/bower/etc. installed in deployed machine
|
16
|
+
- Versioned assets, allowing safer upgrading of them (and safe rollback to old versions)
|
17
|
+
* This allows that not all parts of the application (or engines) are requierd to be upgraded
|
18
|
+
to latest vendor asset versions at once
|
19
|
+
- Assets are available always
|
20
|
+
* Just clone repository and it's ready to use
|
21
|
+
|
6
22
|
# Install
|
7
23
|
|
8
24
|
Gemfile
|
@@ -16,16 +32,53 @@ gem 'bower_vendor'
|
|
16
32
|
|
17
33
|
vendor.yml
|
18
34
|
```ruby
|
35
|
+
jquery:
|
36
|
+
version: 2.1.3
|
37
|
+
assets:
|
38
|
+
- dist/jquery.js
|
39
|
+
jquery-ujs:
|
40
|
+
version: 1.0.3
|
41
|
+
assets:
|
42
|
+
- src/rails.js
|
43
|
+
lodash:
|
44
|
+
version: 3.0.0
|
45
|
+
assets:
|
46
|
+
- lodash.js
|
19
47
|
angular:
|
20
48
|
version: 1.3.15
|
21
|
-
|
49
|
+
assets:
|
22
50
|
- angular.js
|
51
|
+
bootstrap-sass:
|
52
|
+
version: 3.3.4
|
53
|
+
assets:
|
54
|
+
- assets/javascripts/bootstrap-sprockets.js
|
55
|
+
# copy into "bootstrap" subdir in destination
|
56
|
+
- bootstrap:
|
57
|
+
- assets/javascripts/*.js
|
58
|
+
- assets/stylesheets/_bootstrap.scss
|
59
|
+
- assets/stylesheets/_bootstrap-sprockets.scss
|
60
|
+
- bootstrap:
|
61
|
+
- assets/stylesheets/bootstrap/*.scss
|
62
|
+
# copy into "bootstrap/mixins" subdir in destination
|
63
|
+
- mixins:
|
64
|
+
- assets/stylesheets/bootstrap/mixins/*.scss
|
65
|
+
# "*" matches all files
|
66
|
+
- assets/fonts/bootstrap/*
|
23
67
|
```
|
24
68
|
|
25
69
|
2) Install assets
|
26
70
|
|
27
71
|
```bash
|
72
|
+
bundle exec rake vendor:clean
|
28
73
|
bundle exec rake vendor:all
|
29
74
|
```
|
30
75
|
|
31
76
|
Assets will be copied into vendor/assets
|
77
|
+
|
78
|
+
|
79
|
+
# TODO
|
80
|
+
|
81
|
+
- Support other more asset types
|
82
|
+
* curently only js and css are supported
|
83
|
+
* should support also fonts, etc.
|
84
|
+
- Support more complex paths for assets
|
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
base_dir: vendor/assets
|
3
|
+
dst_dirs:
|
4
|
+
# javascripts
|
5
|
+
js: javascripts
|
6
|
+
es6: javascripts
|
7
|
+
next: javascripts
|
8
|
+
# stylesheets
|
9
|
+
css: stylesheets
|
10
|
+
scss: stylesheets
|
11
|
+
# fonts
|
12
|
+
eot: fonts
|
13
|
+
ttf: fonts
|
14
|
+
woff: fonts
|
15
|
+
woff2: fonts
|
16
|
+
# images
|
17
|
+
jpg: images
|
18
|
+
jpeg: images
|
19
|
+
png: images
|
20
|
+
svg: images
|
data/lib/bower_vendor.rb
CHANGED
@@ -4,6 +4,7 @@ require 'json'
|
|
4
4
|
|
5
5
|
require "bower_vendor/version"
|
6
6
|
require "bower_vendor/base"
|
7
|
+
require "bower_vendor/clean"
|
7
8
|
require "bower_vendor/copy"
|
8
9
|
require "bower_vendor/fetch"
|
9
10
|
require "bower_vendor/setup"
|
@@ -19,6 +20,6 @@ module BowerVendor
|
|
19
20
|
|
20
21
|
def self.load_tasks
|
21
22
|
dir = File.join(root_dir, 'lib/tasks')
|
22
|
-
load "#{dir}/
|
23
|
+
load "#{dir}/bower_vendor.rake"
|
23
24
|
end
|
24
25
|
end
|
data/lib/bower_vendor/base.rb
CHANGED
@@ -8,14 +8,16 @@ module BowerVendor
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def config
|
11
|
-
|
12
|
-
@config ||=
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
@config ||= load_config('config/bower_vendor.yml')
|
12
|
+
@config ||= load_config(File.join(BowerVendor.root_dir, 'config/bower_vendor.yml'))
|
13
|
+
end
|
14
|
+
|
15
|
+
def load_config(file)
|
16
|
+
if File.exist?(file)
|
17
|
+
YAML.load_file(file)
|
18
|
+
else
|
19
|
+
nil
|
20
|
+
end
|
19
21
|
end
|
20
22
|
|
21
23
|
def base_src_dir
|
data/lib/bower_vendor/copy.rb
CHANGED
@@ -5,20 +5,20 @@ module BowerVendor
|
|
5
5
|
|
6
6
|
vendors.each do |asset_key, asset_data|
|
7
7
|
src_dir = "#{base_src_dir}/#{asset_key}"
|
8
|
-
|
8
|
+
msg 0, "processing: #{src_dir}"
|
9
9
|
|
10
|
-
run_scripts(asset_key, asset_data)
|
11
|
-
|
10
|
+
run_scripts(asset_key, asset_data, 1)
|
11
|
+
copy_assets(asset_key, asset_data, 1)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def run_scripts(asset_key, asset_data)
|
15
|
+
def run_scripts(asset_key, asset_data, level)
|
16
16
|
scripts = (asset_data['build'] || [])
|
17
17
|
if !scripts.empty?
|
18
|
-
|
18
|
+
msg level, "building..."
|
19
19
|
scripts.each do |cmd|
|
20
20
|
full_cmd ="cd #{src_dir} && #{cmd}"
|
21
|
-
|
21
|
+
msg level + 1, full_cmd
|
22
22
|
pid = fork do
|
23
23
|
exec full_cmd
|
24
24
|
end
|
@@ -27,47 +27,70 @@ module BowerVendor
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
src_path = orig_path.gsub("{{VERSION}}", version)
|
35
|
-
has_version = orig_path != src_path
|
36
|
-
src_file = src_path.split('/').last
|
37
|
-
ext = src_file.split('.').last
|
38
|
-
dst_file = src_file
|
39
|
-
unless has_version
|
40
|
-
# dst_file = src_file.gsub("\.#{ext}", "-#{version}.#{ext}")
|
41
|
-
end
|
30
|
+
def copy_assets(asset_key, asset_data, level)
|
31
|
+
msg level, "copying: #{asset_key}..."
|
32
|
+
copy_asset(asset_key, asset_data, asset_data['assets'], '', level + 1)
|
33
|
+
end
|
42
34
|
|
43
|
-
|
35
|
+
def copy_asset(asset_key, asset_data, assets, target_path = '', level)
|
36
|
+
assets.each do |asset|
|
37
|
+
if asset.is_a? Hash
|
38
|
+
sub_asset = asset.keys.first
|
39
|
+
sub_target_path = target_path.empty? ? sub_asset : target_path + '/' + sub_asset
|
40
|
+
copy_asset(asset_key, asset_data, asset[sub_asset], sub_target_path, level + 1)
|
41
|
+
else
|
42
|
+
msg level, asset
|
44
43
|
|
45
|
-
|
46
|
-
|
44
|
+
version = asset_data['version']
|
45
|
+
src_path = asset.gsub("{{VERSION}}", version)
|
47
46
|
|
48
|
-
|
49
|
-
|
47
|
+
base_src_dir = "#{work_dir}/bower_components"
|
48
|
+
src = "#{base_src_dir}/#{asset_key}/#{src_path}"
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
if !Dir.exist? dst_dir
|
56
|
-
FileUtils.mkdir_p dst_dir
|
50
|
+
Dir[src].sort!.each do |src_path|
|
51
|
+
copy_src_file asset_key, asset_data, asset, src_path, target_path, level + 1
|
52
|
+
end
|
57
53
|
end
|
58
|
-
FileUtils.cp full_src_file, full_dst_file
|
59
54
|
end
|
60
55
|
end
|
61
56
|
|
57
|
+
def copy_src_file(asset_key, asset_data, orig_path, full_src_file, target_path, level)
|
58
|
+
if !File.exist? full_src_file
|
59
|
+
raise "NOT_FOUND: #{full_src_file}"
|
60
|
+
end
|
61
|
+
|
62
|
+
version = asset_data['version']
|
63
|
+
src_file = full_src_file.split('/').last
|
64
|
+
ext = src_file.split('.').last
|
65
|
+
dst_file = src_file
|
66
|
+
|
67
|
+
base_dst_dir = dst_dirs[ext]
|
68
|
+
raise "NOT_FOUND_EXT: #{ext}" unless base_dst_dir
|
69
|
+
|
70
|
+
dst_dir = "#{base_dst_dir}/#{asset_key}-#{version}"
|
71
|
+
dst_dir = "#{dst_dir}/#{target_path}" unless target_path.empty?
|
72
|
+
full_dst_file = "#{dst_dir}/#{dst_file}"
|
73
|
+
|
74
|
+
msg level, "#{full_src_file} => #{full_dst_file}"
|
75
|
+
if !Dir.exist? dst_dir
|
76
|
+
FileUtils.mkdir_p dst_dir
|
77
|
+
end
|
78
|
+
FileUtils.cp full_src_file, full_dst_file
|
79
|
+
end
|
80
|
+
|
62
81
|
def dst_dirs
|
63
82
|
@dst_dirs ||= setup_dst_dirs
|
64
83
|
end
|
65
84
|
|
66
85
|
def setup_dst_dirs
|
67
|
-
base_dir = config[
|
68
|
-
config[
|
86
|
+
base_dir = config['base_dir']
|
87
|
+
config['dst_dirs'].map do |k, v|
|
69
88
|
[k, "#{base_dir}/#{v}"]
|
70
89
|
end.to_h
|
71
90
|
end
|
91
|
+
|
92
|
+
def msg(level, msg)
|
93
|
+
puts "#{' ' * level}#{msg}"
|
94
|
+
end
|
72
95
|
end
|
73
96
|
end
|
data/lib/bower_vendor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bower_vendor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -81,15 +81,17 @@ files:
|
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
83
83
|
- bower_vendor.gemspec
|
84
|
+
- config/bower_vendor.yml
|
84
85
|
- lib/bower_vendor.rb
|
85
86
|
- lib/bower_vendor/base.rb
|
87
|
+
- lib/bower_vendor/clean.rb
|
86
88
|
- lib/bower_vendor/copy.rb
|
87
89
|
- lib/bower_vendor/fetch.rb
|
88
90
|
- lib/bower_vendor/railtie.rb
|
89
91
|
- lib/bower_vendor/setup.rb
|
90
92
|
- lib/bower_vendor/version.rb
|
93
|
+
- lib/tasks/bower_vendor.rake
|
91
94
|
- lib/tasks/console.rake
|
92
|
-
- lib/tasks/vendor.rake
|
93
95
|
homepage: https://github.com/kikonen/bower_vendor
|
94
96
|
licenses:
|
95
97
|
- MIT
|