assetify 2.0.1 → 3.0.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 +7 -0
- data/README.md +69 -57
- data/Rakefile +1 -50
- data/bin/assetify +4 -8
- data/lib/assetify.rb +11 -11
- data/lib/assetify/asset.rb +47 -64
- data/lib/assetify/asset/pathfix.rb +17 -19
- data/lib/assetify/asset/pkg.rb +16 -16
- data/lib/assetify/assetfile.rb +11 -10
- data/lib/assetify/cli.rb +47 -15
- data/lib/assetify/cli/colored.rb +20 -22
- data/lib/assetify/cli/term.rb +6 -4
- data/lib/assetify/constants.rb +4 -5
- data/lib/assetify/dsl.rb +35 -35
- data/lib/assetify/extensions/string.rb +6 -8
- data/lib/assetify/gui.rb +4 -4
- data/lib/assetify/gui/server.rb +2 -3
- data/lib/assetify/helpers.rb +15 -17
- data/lib/assetify/version.rb +1 -1
- metadata +110 -126
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b4005c1682c1cff55d0313f562b681e700c8cecb
|
4
|
+
data.tar.gz: f29115ecf527d63aef20aa751658b259e1d2c99b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b1aacdb842207167e97ff3601348b08a6a8980dcc19adc6de3e70fe007e7dff0e32ca1928cfd98ca495b161fdf0c8b6782363666a919f13c59cce3643eda4d0b
|
7
|
+
data.tar.gz: 8250e7adc718a62f4d87092782a248a8e57767620fa922dfafbf52d7eb25c9d312b25811cf3c6c28ba0e31ff147d89972837a9bdd9f419d75274224a05556398
|
data/README.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
|
2
|
+
```
|
3
|
+
░█▀▀█ █▀▀ █▀▀ █▀▀ ▀▀█▀▀ ░▀░ █▀▀ █░░█
|
4
|
+
▒█▄▄█ ▀▀█ ▀▀█ █▀▀ ░▒█░░ ▀█▀ █▀▀ █▄▄█
|
5
|
+
▒█░▒█ ▀▀▀ ▀▀▀ ▀▀▀ ░▒█░░ ▀▀▀ ▀░░ ▄▄▄█
|
6
|
+
```
|
7
|
+
|
8
|
+
[](http://badge.fury.io/rb/assetify)
|
9
|
+
[](https://codeclimate.com/github/nofxx/assetify)
|
10
|
+
[](https://coveralls.io/r/nofxx/assetify?branch=master)
|
11
|
+
[](https://gemnasium.com/nofxx/assetify)
|
12
|
+
[](https://travis-ci.org/nofxx/assetify)
|
13
|
+
|
14
|
+
|
1
15
|
Assetify
|
2
16
|
========
|
3
17
|
|
@@ -29,36 +43,36 @@ Assetfile
|
|
29
43
|
Like a `Gemfile`, but with fewer chars. Only one actually.
|
30
44
|
|
31
45
|
|
32
|
-
Behold the
|
46
|
+
Behold the `a`
|
33
47
|
--------------
|
34
48
|
|
35
|
-
a
|
36
|
-
a
|
37
|
-
a
|
49
|
+
a 'tipsy', 'http://...tipsy.js'
|
50
|
+
a 'tipsy', 'http://...tipsy.css'
|
51
|
+
a 'video', 'http://...video.mpeg'
|
38
52
|
|
39
53
|
|
40
|
-
There's also an alias
|
54
|
+
There's also an alias `asset` for `a`, if you enjoy typing:
|
41
55
|
|
42
56
|
|
43
|
-
asset
|
57
|
+
asset 'tipsy', 'http://...tipsy.js'
|
44
58
|
|
45
59
|
|
46
60
|
|
47
61
|
You can choose the filetype (or extension) before too:
|
48
62
|
|
49
|
-
type
|
63
|
+
type 'name', 'url', <'version'> or <:options>
|
50
64
|
|
51
|
-
js
|
52
|
-
js
|
65
|
+
js 'jquery', 'http://code.jquery.com/jquery-{VERSION}.min.js', '1.6'
|
66
|
+
js 'tipsy', 'https://github.com/jaz303/tipsy/.../jquery.tipsy.js'
|
53
67
|
|
54
68
|
|
55
69
|
Stylesheets:
|
56
70
|
|
57
|
-
css
|
71
|
+
css 'tipsy', 'https://github.com/jaz303/tipsy/.../jquery.tipsy.css'
|
58
72
|
|
59
73
|
Any file:
|
60
74
|
|
61
|
-
mp3
|
75
|
+
mp3 'alert', 'http://link/to/audio'
|
62
76
|
|
63
77
|
|
64
78
|
Now just run `assetify` to make sure everything is installed/up-to-date.
|
@@ -69,20 +83,20 @@ Groups
|
|
69
83
|
|
70
84
|
Use groups/namespaces to group related assets together:
|
71
85
|
|
72
|
-
group
|
73
|
-
js
|
74
|
-
js
|
86
|
+
group 'forms' do
|
87
|
+
js 'validator', url
|
88
|
+
js 'textmask', url
|
75
89
|
end
|
76
90
|
|
77
91
|
|
78
|
-
This will install as
|
92
|
+
This will install as `vendor/assets/javascripts/forms/validator.js`
|
79
93
|
|
80
94
|
You can nest groups too:
|
81
95
|
|
82
|
-
group
|
83
|
-
js
|
84
|
-
group
|
85
|
-
js
|
96
|
+
group 'forms' do
|
97
|
+
js 'validator', url
|
98
|
+
group 'extra' do
|
99
|
+
js 'another', url
|
86
100
|
end
|
87
101
|
end
|
88
102
|
|
@@ -92,27 +106,26 @@ Pkgs
|
|
92
106
|
|
93
107
|
Big projects makes you download tons of files for some .min files and css.
|
94
108
|
|
95
|
-
pkg
|
96
|
-
js
|
97
|
-
css
|
109
|
+
pkg 'fancy', 'http://to.tgz.or.zip' do
|
110
|
+
js 'cool', 'internal/js/cool.js'
|
111
|
+
css 'cool', 'internal/css/cool.css'
|
98
112
|
end
|
99
113
|
|
100
|
-
This downloads and
|
101
|
-
Files will be written with the namespace
|
114
|
+
This downloads and "cherry picks" the files.
|
115
|
+
Files will be written with the namespace `fancy`:
|
102
116
|
|
103
117
|
/javascripts/fancy/cool.js
|
104
118
|
|
105
|
-
You can pass :
|
119
|
+
You can pass `shallow: true` to avoid the namespace:
|
106
120
|
|
107
|
-
pkg
|
121
|
+
pkg 'fancy', 'http://to.tgz.or.zip', shallow: true do
|
108
122
|
|
109
123
|
Results in:
|
110
124
|
|
111
125
|
/javascript/cool.js
|
112
126
|
|
113
127
|
|
114
|
-
Also, please check out the note about
|
115
|
-
|
128
|
+
Also, please check out the note about links inside pkgs below.
|
116
129
|
|
117
130
|
|
118
131
|
Dir
|
@@ -121,15 +134,15 @@ ___
|
|
121
134
|
You can resource a full directory of files, too. Very useful when
|
122
135
|
dealing with pkgs:
|
123
136
|
|
124
|
-
pkg
|
125
|
-
js
|
126
|
-
dir
|
137
|
+
pkg 'complexfw', 'link' do
|
138
|
+
js 'complex.min.js'
|
139
|
+
dir 'images/', to: 'images/complexfw'
|
127
140
|
# Another option, treat`em all as filetype:
|
128
|
-
dir
|
141
|
+
dir 'src/', as: :js
|
129
142
|
end
|
130
143
|
|
131
|
-
All files inside images will be copied to
|
132
|
-
all files in
|
144
|
+
All files inside images will be copied to `images/complexfw` and
|
145
|
+
all files in `src` to `javascripts` (or whatever else jspath is).
|
133
146
|
|
134
147
|
|
135
148
|
Note: Have in mind that the "link" inside dir/packages *is a regex*
|
@@ -151,10 +164,10 @@ And every path corrected to use the pipeline.
|
|
151
164
|
|
152
165
|
Jquery Mobile example:
|
153
166
|
|
154
|
-
pkg :mobile,
|
155
|
-
js
|
156
|
-
css
|
157
|
-
dir
|
167
|
+
pkg :mobile, 'http://code.jquery.com....zip', shallow: true do
|
168
|
+
js 'mobile', 'mobile.js'
|
169
|
+
css 'mobile', 'mobile.css', as: :sass
|
170
|
+
dir 'images/*'
|
158
171
|
end
|
159
172
|
|
160
173
|
You just need:
|
@@ -163,9 +176,8 @@ You just need:
|
|
163
176
|
|
164
177
|
On application.css and application.js.
|
165
178
|
|
166
|
-
Images will be in
|
167
|
-
mobile.css corrected to
|
168
|
-
choose erb.
|
179
|
+
Images will be in `vendor/assets/mobile/*`, and the paths inside
|
180
|
+
mobile.css corrected to `image-url(mobile/*)`, or `<%%>` if it's erb.
|
169
181
|
|
170
182
|
This means you can have any third party library in the format
|
171
183
|
you like, always up-to-date. Easy to copy and customize parts
|
@@ -177,12 +189,12 @@ foo2bar
|
|
177
189
|
|
178
190
|
You can convert your assets to coffescript, sass or scss:
|
179
191
|
|
180
|
-
js
|
181
|
-
css
|
182
|
-
css
|
192
|
+
js 'fulib', 'http....', as: :coffee
|
193
|
+
css '1140', 'http....', as: :sass
|
194
|
+
css '1140', 'http....', as: :scss
|
183
195
|
|
184
196
|
Note: You do need aditional stuff for this.
|
185
|
-
Gem
|
197
|
+
Gem `sass` and/or node's `js2coffee` (install via npm).
|
186
198
|
|
187
199
|
|
188
200
|
minimagick
|
@@ -191,10 +203,10 @@ minimagick
|
|
191
203
|
Preprocess images is also possible:
|
192
204
|
|
193
205
|
|
194
|
-
png
|
206
|
+
png 'logo', 'http....', as: :jpg, quality: 75
|
195
207
|
|
196
208
|
|
197
|
-
Note: Need to install
|
209
|
+
Note: Need to install `imagemagick` and `minimagick` gem for this.
|
198
210
|
|
199
211
|
Versions
|
200
212
|
--------
|
@@ -210,10 +222,10 @@ Other
|
|
210
222
|
Set a different location per file:
|
211
223
|
|
212
224
|
|
213
|
-
js
|
225
|
+
js 'other', 'http://lib.../other.js', to: 'different/path'
|
214
226
|
|
215
227
|
Filename will be: ./different/path/other.js
|
216
|
-
This works for namespaces too,
|
228
|
+
This works for namespaces too, use `ns` instead of `to`.
|
217
229
|
|
218
230
|
|
219
231
|
|
@@ -223,15 +235,15 @@ Options
|
|
223
235
|
Change some default settings:
|
224
236
|
|
225
237
|
newname true || false
|
226
|
-
javascripts
|
227
|
-
stylesheets
|
228
|
-
images
|
238
|
+
javascripts 'public/javascripts'
|
239
|
+
stylesheets 'public/stylesheets'
|
240
|
+
images 'public/images'
|
229
241
|
|
230
242
|
If newname is set to true (default) the file will be renamed. Ex:
|
231
243
|
|
232
|
-
js
|
244
|
+
js 'validator', 'http//.../jquery.validator.min.js'
|
233
245
|
|
234
|
-
Filename will be:
|
246
|
+
Filename will be: `validator.js`
|
235
247
|
|
236
248
|
|
237
249
|
|
@@ -265,6 +277,6 @@ Contributing
|
|
265
277
|
Copyright
|
266
278
|
---------
|
267
279
|
|
268
|
-
Copyright (c) 2011 Marcos Piccinini.
|
269
|
-
further details.
|
270
|
-
|
280
|
+
Copyright (c) 2011 Marcos Piccinini.
|
281
|
+
See LICENSE.txt for further details.
|
282
|
+
ASCII Art by [FSymbols](http://fsymbols.com/generators/tarty)
|
data/Rakefile
CHANGED
@@ -1,50 +1 @@
|
|
1
|
-
|
2
|
-
require 'bundler'
|
3
|
-
Bundler.setup
|
4
|
-
|
5
|
-
#require "rake"
|
6
|
-
# require "rdoc/task"
|
7
|
-
# require "rspec"
|
8
|
-
# require "rspec/core/rake_task"
|
9
|
-
|
10
|
-
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
11
|
-
require "assetify/version"
|
12
|
-
|
13
|
-
task :gem => :build
|
14
|
-
task :build do
|
15
|
-
system "gem build assetify.gemspec"
|
16
|
-
end
|
17
|
-
|
18
|
-
task :install => :build do
|
19
|
-
system "sudo gem install assetify-#{Assetify::VERSION}.gem"
|
20
|
-
end
|
21
|
-
|
22
|
-
task :release => :build do
|
23
|
-
system "git tag -a v#{Assetify::VERSION} -m 'Tagging #{Assetify::VERSION}'"
|
24
|
-
system "git push --tags"
|
25
|
-
system "gem push assetify-#{Assetify::VERSION}.gem"
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
# require 'rspec/core'
|
30
|
-
# require 'rspec/core/rake_task'
|
31
|
-
# RSpec::Core::RakeTask.new(:spec) do |spec|
|
32
|
-
# spec.pattern = FileList['spec/**/*_spec.rb']
|
33
|
-
# end
|
34
|
-
|
35
|
-
# RSpec::Core::RakeTask.new(:rcov) do |spec|
|
36
|
-
# spec.pattern = 'spec/**/*_spec.rb'
|
37
|
-
# spec.rcov = true
|
38
|
-
# end
|
39
|
-
|
40
|
-
# task :default => :spec
|
41
|
-
|
42
|
-
# require 'rdoc/task'
|
43
|
-
# RDoc::Task.new do |rdoc|
|
44
|
-
# version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
-
|
46
|
-
# rdoc.rdoc_dir = 'rdoc'
|
47
|
-
# rdoc.title = "assetify #{version}"
|
48
|
-
# rdoc.rdoc_files.include('README*')
|
49
|
-
# rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
-
# end
|
1
|
+
require 'bundler/gem_tasks'
|
data/bin/assetify
CHANGED
@@ -5,10 +5,10 @@ require 'optparse'
|
|
5
5
|
require 'assetify'
|
6
6
|
|
7
7
|
opt = OptionParser.new do |o|
|
8
|
-
|
8
|
+
o.banner = <<BANNER
|
9
9
|
This is Assetify! What we`re going to do?
|
10
10
|
|
11
|
-
Usage: #{File.basename($
|
11
|
+
Usage: #{File.basename($PROGRAM_NAME)} command [args]
|
12
12
|
|
13
13
|
Commands:
|
14
14
|
|
@@ -22,13 +22,11 @@ Options:
|
|
22
22
|
|
23
23
|
BANNER
|
24
24
|
|
25
|
-
|
26
|
-
o.on('-
|
27
|
-
o.on('-d', "Verbose (Debug)") { Assetify::Opt[:debug] = true }
|
25
|
+
o.on('-h', 'Show help') { puts o; exit }
|
26
|
+
o.on('-d', 'Verbose (Debug)') { Assetify::Opt[:debug] = true }
|
28
27
|
o.parse!
|
29
28
|
end
|
30
29
|
|
31
|
-
|
32
30
|
begin
|
33
31
|
Assetify.work!(ARGV)
|
34
32
|
rescue Interrupt => e
|
@@ -36,5 +34,3 @@ rescue Interrupt => e
|
|
36
34
|
puts e.backtrace.join("\n")
|
37
35
|
exit 1
|
38
36
|
end
|
39
|
-
|
40
|
-
|
data/lib/assetify.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# Options/Constants
|
2
|
-
require
|
2
|
+
require 'assetify/constants'
|
3
3
|
|
4
4
|
# Ruby Extensions
|
5
|
-
require
|
5
|
+
require 'assetify/extensions/string'
|
6
6
|
|
7
7
|
# Core
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
8
|
+
require 'assetify/helpers'
|
9
|
+
require 'assetify/assetfile'
|
10
|
+
require 'assetify/asset'
|
11
|
+
require 'assetify/dsl'
|
12
12
|
|
13
13
|
# Text Interface
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
14
|
+
require 'assetify/cli/term'
|
15
|
+
require 'assetify/cli/colored'
|
16
|
+
require 'assetify/cli'
|
17
17
|
|
18
18
|
# Web Interface
|
19
|
-
require
|
20
|
-
require
|
19
|
+
require 'assetify/gui/server'
|
20
|
+
require 'assetify/gui'
|
data/lib/assetify/asset.rb
CHANGED
@@ -1,28 +1,33 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require 'net/http'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'assetify/asset/pkg'
|
4
|
+
require 'assetify/asset/pathfix'
|
5
5
|
|
6
6
|
module Assetify
|
7
|
-
|
7
|
+
#
|
8
|
+
# What's an Asset?
|
9
|
+
#
|
8
10
|
class Asset
|
9
11
|
include Helpers
|
10
12
|
attr_accessor :type, :name, :url, :ns, :pkg, :ver, :ext, :as
|
11
13
|
|
12
|
-
def initialize(type, name, url, ver = nil, params={})
|
13
|
-
raise
|
14
|
-
raise
|
15
|
-
raise
|
16
|
-
@type
|
14
|
+
def initialize(type, name, url, ver = nil, params = {})
|
15
|
+
raise 'NoType' unless type
|
16
|
+
raise 'NoName' unless name
|
17
|
+
raise 'NoURL' unless url
|
18
|
+
@type = type
|
19
|
+
@name = name.to_s
|
17
20
|
@url = (@ver = ver) ? url.gsub(/{VERSION}/, @ver) : url
|
18
21
|
if @name =~ /\./
|
19
|
-
@name, @ext = name.split(
|
22
|
+
@name, @ext = name.split('.')
|
20
23
|
else
|
21
24
|
@ext = @type == :img ? find_ext_for(url) : @type
|
22
25
|
end
|
23
26
|
|
24
|
-
@pkg
|
25
|
-
@
|
27
|
+
@pkg = params[:pkg]
|
28
|
+
@as = params[:as]
|
29
|
+
@ns = params[:ns]
|
30
|
+
@to = params[:to] || ''
|
26
31
|
end
|
27
32
|
|
28
33
|
def filename
|
@@ -32,14 +37,14 @@ module Assetify
|
|
32
37
|
@filename
|
33
38
|
end
|
34
39
|
|
35
|
-
def find_ext_for
|
36
|
-
file.split(
|
40
|
+
def find_ext_for(file)
|
41
|
+
file.split('.').last[0, 3]
|
37
42
|
end
|
38
43
|
|
39
44
|
#
|
40
45
|
# Find correct path to put me
|
41
46
|
#
|
42
|
-
def find_path_for
|
47
|
+
def find_path_for(txt)
|
43
48
|
case txt
|
44
49
|
when /js/ then :javascripts
|
45
50
|
when /css|style/ then :stylesheets
|
@@ -49,12 +54,12 @@ module Assetify
|
|
49
54
|
|
50
55
|
def path
|
51
56
|
args = if @to.empty?
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
57
|
+
tpath = Opt[find_path_for(type)]
|
58
|
+
raise "Don`t know where to put #{type} files..." unless tpath
|
59
|
+
[tpath, @ns ? @ns.to_s : '']
|
60
|
+
else
|
61
|
+
[Dir.pwd, @to]
|
62
|
+
end
|
58
63
|
@path = File.join(args)
|
59
64
|
end
|
60
65
|
|
@@ -63,7 +68,7 @@ module Assetify
|
|
63
68
|
end
|
64
69
|
|
65
70
|
def file_exists?
|
66
|
-
File.
|
71
|
+
File.exist? fullpath
|
67
72
|
end
|
68
73
|
|
69
74
|
def data
|
@@ -77,6 +82,17 @@ module Assetify
|
|
77
82
|
@data
|
78
83
|
end
|
79
84
|
|
85
|
+
def read_data
|
86
|
+
@data = File.read(fullpath)
|
87
|
+
end
|
88
|
+
|
89
|
+
#
|
90
|
+
# Prints info about the asset (TODO: move this to cli...)
|
91
|
+
#
|
92
|
+
def header
|
93
|
+
"-> #{name}.#{type}"
|
94
|
+
end
|
95
|
+
|
80
96
|
#
|
81
97
|
# Asset version
|
82
98
|
#
|
@@ -86,50 +102,20 @@ module Assetify
|
|
86
102
|
end
|
87
103
|
|
88
104
|
def print_version
|
89
|
-
return
|
105
|
+
return '' unless ver
|
106
|
+
# chop to only first 10 chars if it's big hash
|
90
107
|
ver_str = ver.size > 10 ? ver[0..10] : ver[0]
|
91
108
|
"v#{ver_str}"
|
92
109
|
end
|
93
110
|
|
94
|
-
#
|
95
|
-
# Prints info about the asset (TODO: move this to cli...)
|
96
|
-
#
|
97
|
-
def header
|
98
|
-
LINE.p "-> #{name}.#{type}"
|
99
|
-
end
|
100
|
-
|
101
|
-
def check!
|
102
|
-
header
|
103
|
-
if file_exists? # Return if file is on path
|
104
|
-
@data = File.read(fullpath)
|
105
|
-
LINE.f "#{print_version}Installed"
|
106
|
-
else
|
107
|
-
LINE.f "Not Found", :red
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
111
|
#
|
112
112
|
# Write down asset to disk
|
113
113
|
#
|
114
|
-
def install!(
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
end
|
120
|
-
begin
|
121
|
-
# Creates a thread to insert dots while downloading
|
122
|
-
points = Thread.new { loop do; LINE.p "."; sleep 1; end }
|
123
|
-
|
124
|
-
write data
|
125
|
-
LINE.f "#{print_version}ok"
|
126
|
-
rescue => e
|
127
|
-
LINE.f :FAIL, :red
|
128
|
-
p "Fail: #{e} #{e.backtrace}"
|
129
|
-
ensure
|
130
|
-
points.kill
|
131
|
-
end
|
132
|
-
|
114
|
+
def install!(_force = false)
|
115
|
+
write data
|
116
|
+
rescue => e
|
117
|
+
LINE.f :FAIL, :red
|
118
|
+
p "Fail: #{e} #{e.backtrace}"
|
133
119
|
end
|
134
120
|
|
135
121
|
class << self
|
@@ -140,15 +126,12 @@ module Assetify
|
|
140
126
|
@all ||= Assetfile.read
|
141
127
|
end
|
142
128
|
|
143
|
-
def filter
|
129
|
+
def filter(params)
|
144
130
|
all.select do |a|
|
145
131
|
blob = "#{a.name}#{a.pkg.name if a.pkg}"
|
146
132
|
blob.include? params
|
147
133
|
end
|
148
134
|
end
|
149
|
-
|
150
135
|
end
|
151
|
-
|
152
136
|
end
|
153
|
-
|
154
137
|
end
|