torba 0.5.1 → 0.6.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 +4 -4
- data/.gitignore +0 -1
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/lib/torba.rb +9 -1
- data/lib/torba/css_url_to_erb_asset_path.rb +5 -1
- data/lib/torba/manifest.rb +1 -1
- data/lib/torba/package.rb +12 -8
- data/test/acceptance_test.rb +50 -64
- data/test/css_url_to_erb_asset_path_test.rb +5 -0
- data/test/fixtures/home_path/01/trumbowyg/icons-2x.png +0 -0
- data/test/fixtures/home_path/01/trumbowyg/icons.png +0 -0
- data/test/fixtures/home_path/01/trumbowyg/trumbowyg.css.erb +471 -0
- data/test/fixtures/home_path/01/trumbowyg/trumbowyg.js +1124 -0
- data/test/fixtures/home_path/02/lo_dash/lodash.js +2793 -0
- data/test/fixtures/home_path/04/bourbon/_border-image.scss +59 -0
- data/test/fixtures/home_path/04/bourbon/_font-source-declaration.scss +43 -0
- data/test/fixtures/home_path/04/bourbon/_retina-image.scss +25 -0
- data/test/fixtures/torbafiles/01_gh_release.rb +8 -0
- data/test/fixtures/torbafiles/01_targz.rb +7 -0
- data/test/fixtures/torbafiles/01_zip.rb +7 -0
- data/test/fixtures/torbafiles/02_npm.rb +1 -0
- data/test/fixtures/torbafiles/03_image_asset_not_specified.rb +7 -0
- data/test/fixtures/torbafiles/04_not_existed_assets.rb +5 -0
- data/test/package_test.rb +10 -0
- data/test/test_helper.rb +68 -7
- data/test/torba_test.rb +13 -0
- data/torba.gemspec +1 -1
- metadata +32 -2
@@ -0,0 +1,59 @@
|
|
1
|
+
@mixin border-image($borders...) {
|
2
|
+
$webkit-borders: ();
|
3
|
+
$spec-borders: ();
|
4
|
+
|
5
|
+
@each $border in $borders {
|
6
|
+
$webkit-border: ();
|
7
|
+
$spec-border: ();
|
8
|
+
$border-type: type-of($border);
|
9
|
+
|
10
|
+
@if $border-type == string or list {
|
11
|
+
$border-str: if($border-type == list, nth($border, 1), $border);
|
12
|
+
|
13
|
+
$url-str: str-slice($border-str, 1, 3);
|
14
|
+
$gradient-type: str-slice($border-str, 1, 6);
|
15
|
+
|
16
|
+
@if $url-str == "url" {
|
17
|
+
$webkit-border: $border;
|
18
|
+
$spec-border: $border;
|
19
|
+
}
|
20
|
+
|
21
|
+
@else if $gradient-type == "linear" {
|
22
|
+
$gradients: _linear-gradient-parser("#{$border}");
|
23
|
+
$webkit-border: map-get($gradients, webkit-image);
|
24
|
+
$spec-border: map-get($gradients, spec-image);
|
25
|
+
}
|
26
|
+
|
27
|
+
@else if $gradient-type == "radial" {
|
28
|
+
$gradients: _radial-gradient-parser("#{$border}");
|
29
|
+
$webkit-border: map-get($gradients, webkit-image);
|
30
|
+
$spec-border: map-get($gradients, spec-image);
|
31
|
+
}
|
32
|
+
|
33
|
+
@else {
|
34
|
+
$webkit-border: $border;
|
35
|
+
$spec-border: $border;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
@else {
|
40
|
+
$webkit-border: $border;
|
41
|
+
$spec-border: $border;
|
42
|
+
}
|
43
|
+
|
44
|
+
$webkit-borders: append($webkit-borders, $webkit-border, comma);
|
45
|
+
$spec-borders: append($spec-borders, $spec-border, comma);
|
46
|
+
}
|
47
|
+
|
48
|
+
-webkit-border-image: $webkit-borders;
|
49
|
+
border-image: $spec-borders;
|
50
|
+
border-style: solid;
|
51
|
+
}
|
52
|
+
|
53
|
+
//Examples:
|
54
|
+
// @include border-image(url("image.png"));
|
55
|
+
// @include border-image(url("image.png") 20 stretch);
|
56
|
+
// @include border-image(linear-gradient(45deg, orange, yellow));
|
57
|
+
// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
|
58
|
+
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
|
59
|
+
// @include border-image(radial-gradient(top, cover, orange, yellow, orange));
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// Used for creating the source string for fonts using @font-face
|
2
|
+
// Reference: http://goo.gl/Ru1bKP
|
3
|
+
|
4
|
+
@function font-url-prefixer($asset-pipeline) {
|
5
|
+
@if $asset-pipeline == true {
|
6
|
+
@return font-url;
|
7
|
+
} @else {
|
8
|
+
@return url;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
@function font-source-declaration(
|
13
|
+
$font-family,
|
14
|
+
$file-path,
|
15
|
+
$asset-pipeline,
|
16
|
+
$file-formats,
|
17
|
+
$font-url) {
|
18
|
+
|
19
|
+
$src: ();
|
20
|
+
|
21
|
+
$formats-map: (
|
22
|
+
eot: "#{$file-path}.eot?#iefix" format("embedded-opentype"),
|
23
|
+
woff2: "#{$file-path}.woff2" format("woff2"),
|
24
|
+
woff: "#{$file-path}.woff" format("woff"),
|
25
|
+
ttf: "#{$file-path}.ttf" format("truetype"),
|
26
|
+
svg: "#{$file-path}.svg##{$font-family}" format("svg")
|
27
|
+
);
|
28
|
+
|
29
|
+
@each $key, $values in $formats-map {
|
30
|
+
@if contains($file-formats, $key) {
|
31
|
+
$file-path: nth($values, 1);
|
32
|
+
$font-format: nth($values, 2);
|
33
|
+
|
34
|
+
@if $asset-pipeline == true {
|
35
|
+
$src: append($src, font-url($file-path) $font-format, comma);
|
36
|
+
} @else {
|
37
|
+
$src: append($src, url($file-path) $font-format, comma);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
@return $src;
|
43
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $asset-pipeline: $asset-pipeline) {
|
2
|
+
@if $asset-pipeline {
|
3
|
+
background-image: image-url("#{$filename}.#{$extension}");
|
4
|
+
} @else {
|
5
|
+
background-image: url("#{$filename}.#{$extension}");
|
6
|
+
}
|
7
|
+
|
8
|
+
@include hidpi {
|
9
|
+
@if $asset-pipeline {
|
10
|
+
@if $retina-filename {
|
11
|
+
background-image: image-url("#{$retina-filename}.#{$extension}");
|
12
|
+
} @else {
|
13
|
+
background-image: image-url("#{$filename}#{$retina-suffix}.#{$extension}");
|
14
|
+
}
|
15
|
+
} @else {
|
16
|
+
@if $retina-filename {
|
17
|
+
background-image: url("#{$retina-filename}.#{$extension}");
|
18
|
+
} @else {
|
19
|
+
background-image: url("#{$filename}#{$retina-suffix}.#{$extension}");
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
background-size: $background-size;
|
24
|
+
}
|
25
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
npm "lo_dash", package: "lodash", version: "0.1.0", import: ["lodash.js"]
|
data/test/package_test.rb
CHANGED
@@ -38,5 +38,15 @@ module Torba
|
|
38
38
|
|
39
39
|
assert_exists File.join(package.load_path, "package", "hello.css")
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_package_css_with_urls_pointing_to_nonexisting_assets
|
43
|
+
fixture "hello.css", "/*body {\nbackground-image: url(image.png)\n}*/"
|
44
|
+
source = Torba::Test::RemoteSource.new(source_dir)
|
45
|
+
package = Package.new("package", source, import: ["hello.css"])
|
46
|
+
|
47
|
+
package.build
|
48
|
+
|
49
|
+
assert_exists File.join(package.load_path, "package", "hello.css")
|
50
|
+
end
|
41
51
|
end
|
42
52
|
end
|
data/test/test_helper.rb
CHANGED
@@ -6,23 +6,34 @@ require "minitest/autorun"
|
|
6
6
|
require "mocha/mini_test"
|
7
7
|
require "tmpdir"
|
8
8
|
require "fileutils"
|
9
|
+
require "open3"
|
9
10
|
|
10
11
|
module Torba
|
11
12
|
module Test
|
12
13
|
module TempHome
|
14
|
+
attr_reader :torba_tmp_dir
|
15
|
+
|
16
|
+
def self.persistent_tmp_dir
|
17
|
+
@persistent_tmp_dir ||= File.realpath(Dir.mktmpdir("torba"))
|
18
|
+
end
|
19
|
+
|
13
20
|
def before_setup
|
14
|
-
Torba.home_path = @
|
21
|
+
Torba.home_path = @torba_tmp_dir = File.realpath(Dir.mktmpdir("torba"))
|
15
22
|
super
|
16
23
|
end
|
17
24
|
|
18
25
|
def after_teardown
|
19
|
-
FileUtils.rm_rf(
|
26
|
+
FileUtils.rm_rf(torba_tmp_dir)
|
20
27
|
Torba.home_path = nil
|
21
28
|
super
|
22
29
|
end
|
30
|
+
|
31
|
+
Minitest.after_run do
|
32
|
+
FileUtils.rm_rf(persistent_tmp_dir)
|
33
|
+
end
|
23
34
|
end
|
24
35
|
|
25
|
-
module
|
36
|
+
module FileSystem
|
26
37
|
def assert_exists(file_path)
|
27
38
|
assert File.exists?(file_path)
|
28
39
|
end
|
@@ -30,13 +41,64 @@ module Torba
|
|
30
41
|
def refute_exists(file_path)
|
31
42
|
refute File.exists?(file_path)
|
32
43
|
end
|
33
|
-
end
|
34
44
|
|
35
|
-
module Touch
|
36
45
|
def touch(path)
|
37
46
|
FileUtils.mkdir_p(File.dirname(path))
|
38
47
|
FileUtils.touch(path)
|
39
48
|
end
|
49
|
+
|
50
|
+
def path_to_packaged(name, home = torba_tmp_dir)
|
51
|
+
path = Dir.glob("#{home}/*").grep(Regexp.new(name)).first
|
52
|
+
assert path, "Couldn't find packaged #{name.inspect} in #{home.inspect}"
|
53
|
+
path
|
54
|
+
end
|
55
|
+
|
56
|
+
def read_without_newline(path)
|
57
|
+
content = File.read(path)
|
58
|
+
content.strip
|
59
|
+
rescue ArgumentError # ignore binary files
|
60
|
+
content
|
61
|
+
end
|
62
|
+
|
63
|
+
def compare_dirs(expected, actual)
|
64
|
+
expected_paths = Dir.glob("#{expected}/**/*").map{ |path| path.sub(expected, "")}
|
65
|
+
|
66
|
+
expected_paths.each do |path|
|
67
|
+
actual_file = File.join(actual, path)
|
68
|
+
assert_exists actual_file
|
69
|
+
|
70
|
+
unless File.directory?(actual_file)
|
71
|
+
expected_file = File.join(expected, path)
|
72
|
+
assert_equal read_without_newline(expected_file), read_without_newline(actual_file), "#{expected_file.inspect} should be equal to #{actual_file.inspect}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
actual_paths = Dir.glob("#{actual}/**/*").map{ |path| path.sub(actual, "")}
|
77
|
+
|
78
|
+
paths_diff = actual_paths - expected_paths
|
79
|
+
assert_empty paths_diff, "#{expected.inspect} contains extra paths #{paths_diff.inspect}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
module Exec
|
84
|
+
def torba(torba_cmd, options = {})
|
85
|
+
env = {"TORBA_HOME_PATH" => torba_tmp_dir, "TORBA_CACHE_PATH" => TempHome.persistent_tmp_dir}
|
86
|
+
|
87
|
+
if (torbafile = options[:torbafile])
|
88
|
+
env.merge!("TORBA_FILE" => "test/fixtures/torbafiles/#{torbafile}")
|
89
|
+
end
|
90
|
+
|
91
|
+
if (home_path = options[:home_path])
|
92
|
+
env.merge!("TORBA_HOME_PATH" => home_path)
|
93
|
+
end
|
94
|
+
|
95
|
+
if (cache_path = options[:cache_path])
|
96
|
+
env.merge!("TORBA_CACHE_PATH" => cache_path)
|
97
|
+
end
|
98
|
+
|
99
|
+
cmd = "ruby bin/torba #{torba_cmd}"
|
100
|
+
Open3.capture3(env, cmd)
|
101
|
+
end
|
40
102
|
end
|
41
103
|
|
42
104
|
class RemoteSource
|
@@ -57,6 +119,5 @@ end
|
|
57
119
|
|
58
120
|
class Minitest::Test
|
59
121
|
include Torba::Test::TempHome
|
60
|
-
include Torba::Test::
|
61
|
-
include Torba::Test::Touch
|
122
|
+
include Torba::Test::FileSystem
|
62
123
|
end
|
data/test/torba_test.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class TorbaTest < Minitest::Test
|
4
|
+
def test_home_path
|
5
|
+
Torba.home_path = "/new/home/path"
|
6
|
+
assert_equal "/new/home/path", Torba.home_path
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_cache_path
|
10
|
+
Torba.cache_path = "/new/cache/path"
|
11
|
+
assert_equal "/new/cache/path", Torba.cache_path
|
12
|
+
end
|
13
|
+
end
|
data/torba.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrii Malyshko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -116,6 +116,20 @@ files:
|
|
116
116
|
- lib/torba/verify.rb
|
117
117
|
- test/acceptance_test.rb
|
118
118
|
- test/css_url_to_erb_asset_path_test.rb
|
119
|
+
- test/fixtures/home_path/01/trumbowyg/icons-2x.png
|
120
|
+
- test/fixtures/home_path/01/trumbowyg/icons.png
|
121
|
+
- test/fixtures/home_path/01/trumbowyg/trumbowyg.css.erb
|
122
|
+
- test/fixtures/home_path/01/trumbowyg/trumbowyg.js
|
123
|
+
- test/fixtures/home_path/02/lo_dash/lodash.js
|
124
|
+
- test/fixtures/home_path/04/bourbon/_border-image.scss
|
125
|
+
- test/fixtures/home_path/04/bourbon/_font-source-declaration.scss
|
126
|
+
- test/fixtures/home_path/04/bourbon/_retina-image.scss
|
127
|
+
- test/fixtures/torbafiles/01_gh_release.rb
|
128
|
+
- test/fixtures/torbafiles/01_targz.rb
|
129
|
+
- test/fixtures/torbafiles/01_zip.rb
|
130
|
+
- test/fixtures/torbafiles/02_npm.rb
|
131
|
+
- test/fixtures/torbafiles/03_image_asset_not_specified.rb
|
132
|
+
- test/fixtures/torbafiles/04_not_existed_assets.rb
|
119
133
|
- test/import_list_test.rb
|
120
134
|
- test/manifest_test.rb
|
121
135
|
- test/package/import_list_test.rb
|
@@ -129,6 +143,7 @@ files:
|
|
129
143
|
- test/remote_sources/targz_test.rb
|
130
144
|
- test/remote_sources/zip_test.rb
|
131
145
|
- test/test_helper.rb
|
146
|
+
- test/torba_test.rb
|
132
147
|
- torba.gemspec
|
133
148
|
homepage: https://github.com/torba-rb/torba
|
134
149
|
licenses:
|
@@ -157,6 +172,20 @@ summary: Bundler for Sprockets
|
|
157
172
|
test_files:
|
158
173
|
- test/acceptance_test.rb
|
159
174
|
- test/css_url_to_erb_asset_path_test.rb
|
175
|
+
- test/fixtures/home_path/01/trumbowyg/icons-2x.png
|
176
|
+
- test/fixtures/home_path/01/trumbowyg/icons.png
|
177
|
+
- test/fixtures/home_path/01/trumbowyg/trumbowyg.css.erb
|
178
|
+
- test/fixtures/home_path/01/trumbowyg/trumbowyg.js
|
179
|
+
- test/fixtures/home_path/02/lo_dash/lodash.js
|
180
|
+
- test/fixtures/home_path/04/bourbon/_border-image.scss
|
181
|
+
- test/fixtures/home_path/04/bourbon/_font-source-declaration.scss
|
182
|
+
- test/fixtures/home_path/04/bourbon/_retina-image.scss
|
183
|
+
- test/fixtures/torbafiles/01_gh_release.rb
|
184
|
+
- test/fixtures/torbafiles/01_targz.rb
|
185
|
+
- test/fixtures/torbafiles/01_zip.rb
|
186
|
+
- test/fixtures/torbafiles/02_npm.rb
|
187
|
+
- test/fixtures/torbafiles/03_image_asset_not_specified.rb
|
188
|
+
- test/fixtures/torbafiles/04_not_existed_assets.rb
|
160
189
|
- test/import_list_test.rb
|
161
190
|
- test/manifest_test.rb
|
162
191
|
- test/package/import_list_test.rb
|
@@ -170,4 +199,5 @@ test_files:
|
|
170
199
|
- test/remote_sources/targz_test.rb
|
171
200
|
- test/remote_sources/zip_test.rb
|
172
201
|
- test/test_helper.rb
|
202
|
+
- test/torba_test.rb
|
173
203
|
has_rdoc:
|