cyborg 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/cyborg +9 -3
- data/lib/cyborg.rb +1 -1
- data/lib/cyborg/command.rb +25 -1
- data/lib/cyborg/command/help.rb +24 -9
- data/lib/cyborg/command/scaffold.rb +3 -2
- data/lib/cyborg/helpers/asset_helpers.rb +2 -0
- data/lib/cyborg/plugin.rb +10 -1
- data/lib/cyborg/plugin/assets/asset.rb +16 -2
- data/lib/cyborg/plugin/assets/javascripts.rb +4 -1
- data/lib/cyborg/plugin/assets/stylesheets.rb +4 -7
- data/lib/cyborg/version.rb +1 -1
- metadata +2 -3
- data/lib/cyborg/command/compress.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23a5939aaf1016d48d5ac825c571505364784030
|
4
|
+
data.tar.gz: b9cfd458100f2a917f20de79a72071efbae59a57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 524dc65ec162fed441ce0b0394673bcc403296ccf95317c11c32ceacbc9b8cf7bb6deca01470ac433acacca49c11e3eff6f640836cb4c0521af2f1cf9b8fb160
|
7
|
+
data.tar.gz: c584f04f4038aa2b2796a3c93c7d3262585245308ff6cb7cea155cf4b73c9b2e3127d2cc85aef06423fa0799571332890ca752432b773bef18e42cc41106f4c7
|
data/bin/cyborg
CHANGED
@@ -40,18 +40,24 @@ OptionParser.new do |opts|
|
|
40
40
|
end
|
41
41
|
|
42
42
|
if %w(b w s build watch server).include? options[:command]
|
43
|
-
opts.on("-j", "--js", "Build javascripts") do |val|
|
43
|
+
opts.on("-j", "--js", "Build javascripts.") do |val|
|
44
44
|
options[:select_assets] = true
|
45
45
|
options[:js] = true
|
46
46
|
end
|
47
|
-
opts.on("-c", "--css", "Build css") do |val|
|
47
|
+
opts.on("-c", "--css", "Build css.") do |val|
|
48
48
|
options[:select_assets] = true
|
49
49
|
options[:css] = true
|
50
50
|
end
|
51
|
-
opts.on("-s", "--svg", "Build
|
51
|
+
opts.on("-s", "--svg", "Build svgs.") do |val|
|
52
52
|
options[:select_assets] = true
|
53
53
|
options[:svg] = true
|
54
54
|
end
|
55
|
+
opts.on("-m", "--maps", "Enable sourcemaps for javascript and stylesheets.") do |val|
|
56
|
+
options[:maps] = true
|
57
|
+
end
|
58
|
+
opts.on("-p", "--production", "Build assets as with production mode.") do |val|
|
59
|
+
options[:production] = true
|
60
|
+
end
|
55
61
|
end
|
56
62
|
|
57
63
|
opts.on("-v", "--version", "Print version") do |version|
|
data/lib/cyborg.rb
CHANGED
data/lib/cyborg/command.rb
CHANGED
@@ -7,6 +7,7 @@ module Cyborg
|
|
7
7
|
extend self
|
8
8
|
|
9
9
|
def run(options)
|
10
|
+
@production = options[:production]
|
10
11
|
|
11
12
|
case options[:command]
|
12
13
|
when 'new', 'n'
|
@@ -17,11 +18,34 @@ module Cyborg
|
|
17
18
|
from_root { dispatch(:watch, options) }
|
18
19
|
when 'server', 's'
|
19
20
|
from_root { dispatch(:server, options) }
|
21
|
+
when 'gem:build'
|
22
|
+
from_root { gem_build }
|
23
|
+
when 'gem:install'
|
24
|
+
from_root { gem_build }
|
20
25
|
else
|
21
26
|
puts "Command `#{options[:command]}` not recognized"
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
30
|
+
def production?
|
31
|
+
@production == true
|
32
|
+
end
|
33
|
+
|
34
|
+
def gem_build
|
35
|
+
dispatch(:build, production: true)
|
36
|
+
system "bundle exec rake build"
|
37
|
+
end
|
38
|
+
|
39
|
+
def gem_install
|
40
|
+
dispatch(:build, production: true)
|
41
|
+
system "bundle exec rake install"
|
42
|
+
end
|
43
|
+
|
44
|
+
def gem_release
|
45
|
+
dispatch(:build, production: true)
|
46
|
+
system "bundle exec rake release"
|
47
|
+
end
|
48
|
+
|
25
49
|
# Handles running threaded commands
|
26
50
|
#
|
27
51
|
def dispatch(command, *args)
|
@@ -32,7 +56,7 @@ module Cyborg
|
|
32
56
|
|
33
57
|
# Build assets
|
34
58
|
def build(options={})
|
35
|
-
puts 'Building…'
|
59
|
+
puts Cyborg.production? ? 'Building for production…' : 'Building…'
|
36
60
|
require File.join(Dir.pwd, Cyborg.rails_path('config/application'))
|
37
61
|
@threads.concat Cyborg.plugin.build(options)
|
38
62
|
end
|
data/lib/cyborg/command/help.rb
CHANGED
@@ -6,28 +6,31 @@ module Cyborg
|
|
6
6
|
if command.nil?
|
7
7
|
<<-HERE
|
8
8
|
Commands:
|
9
|
-
#{command_list.map{|c| commands(c
|
9
|
+
#{command_list.map{|c| commands(c) }.join("\n ")}
|
10
10
|
|
11
11
|
For help with a specific command, run `cyborg help command`
|
12
12
|
|
13
13
|
Options:
|
14
14
|
HERE
|
15
|
-
elsif commands(command
|
16
|
-
"\nUsage:\n cyborg #{commands(command
|
15
|
+
elsif commands(command)
|
16
|
+
"\nUsage:\n cyborg #{commands(command)}\n\nOptions:\n"
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
def command_list
|
21
|
-
%w(new build watch server help)
|
21
|
+
%w(new build watch server help gem:build gem:install gem:release)
|
22
22
|
end
|
23
23
|
|
24
24
|
def commands(command)
|
25
25
|
case command
|
26
|
-
when
|
27
|
-
when
|
28
|
-
when
|
29
|
-
when
|
30
|
-
when
|
26
|
+
when 'new', 'n'; new
|
27
|
+
when 'build', 'b'; build
|
28
|
+
when 'watch', 'w'; watch
|
29
|
+
when 'server', 's'; server
|
30
|
+
when 'help', 'h'; help
|
31
|
+
when 'gem:build'; gem_build
|
32
|
+
when 'gem:install'; gem_install
|
33
|
+
when 'gem:release'; gem_release
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
@@ -50,5 +53,17 @@ Options:
|
|
50
53
|
def help
|
51
54
|
"help [command] # Show help for a specific command"
|
52
55
|
end
|
56
|
+
|
57
|
+
def gem_build
|
58
|
+
"gem:build # Build assets for production and build gem"
|
59
|
+
end
|
60
|
+
|
61
|
+
def gem_install
|
62
|
+
"gem:install # Build assets for production, build, and install gem"
|
63
|
+
end
|
64
|
+
|
65
|
+
def gem_release
|
66
|
+
"gem:release # Build assets for production, build, and release gem to rubygems.org"
|
67
|
+
end
|
53
68
|
end
|
54
69
|
end
|
@@ -268,10 +268,11 @@ Gem::Specification.new do |spec|
|
|
268
268
|
spec.description = "Description of your gem (usually longer)."
|
269
269
|
spec.license = "#{spec.license}"
|
270
270
|
|
271
|
-
spec.files = Dir["{app,
|
271
|
+
spec.files = Dir["{app,lib}/**/*", "LICENSE.txt", "README.md"]
|
272
|
+
spec.files.concat Dir["public/**/*#\{#{@module_name}::VERSION\}*"]
|
272
273
|
spec.require_paths = ["lib"]
|
273
274
|
|
274
|
-
spec.add_dependency "rails", "~>
|
275
|
+
spec.add_dependency "rails", "~> 4.2.6"
|
275
276
|
spec.add_runtime_dependency "megatron"
|
276
277
|
|
277
278
|
spec.add_development_dependency "bundler", "~> 1.12"
|
@@ -7,6 +7,7 @@ module Cyborg
|
|
7
7
|
tags = ''
|
8
8
|
|
9
9
|
stylesheet_url(args).each do |url|
|
10
|
+
url += '.gz' if Cyborg.production?
|
10
11
|
tags += stylesheet_link_tag(url, options)
|
11
12
|
end
|
12
13
|
|
@@ -19,6 +20,7 @@ module Cyborg
|
|
19
20
|
|
20
21
|
puts "searching for: #{javascript_url(args)}"
|
21
22
|
javascript_url(args).each do |url|
|
23
|
+
url += '.gz' if Cyborg.production?
|
22
24
|
tags += javascript_include_tag(url, options)
|
23
25
|
end
|
24
26
|
|
data/lib/cyborg/plugin.rb
CHANGED
@@ -7,6 +7,7 @@ module Cyborg
|
|
7
7
|
@name = options.delete(:name)
|
8
8
|
@module_name = parent_module.name
|
9
9
|
@gem = Gem.loaded_specs[@name]
|
10
|
+
@maps = false
|
10
11
|
config(options)
|
11
12
|
expand_asset_paths
|
12
13
|
|
@@ -60,12 +61,19 @@ module Cyborg
|
|
60
61
|
assets
|
61
62
|
end
|
62
63
|
|
64
|
+
def maps?
|
65
|
+
@maps == true
|
66
|
+
end
|
67
|
+
|
63
68
|
def svgs?
|
64
69
|
@svgs.icons.nil?
|
65
70
|
end
|
66
71
|
|
67
72
|
def build(options={})
|
68
|
-
|
73
|
+
@maps = options[:maps] || Cyborg.production?
|
74
|
+
root = File.join(destination, asset_root)
|
75
|
+
FileUtils.rm_rf(root) if Cyborg.production?
|
76
|
+
FileUtils.mkdir_p(root)
|
69
77
|
threads = []
|
70
78
|
assets(options).each do |asset|
|
71
79
|
threads << Thread.new { asset.build }
|
@@ -75,6 +83,7 @@ module Cyborg
|
|
75
83
|
end
|
76
84
|
|
77
85
|
def watch(options)
|
86
|
+
@maps = options[:maps] || Cyborg.production?
|
78
87
|
assets(options).map(&:watch)
|
79
88
|
end
|
80
89
|
|
@@ -47,8 +47,6 @@ module Cyborg
|
|
47
47
|
# Determine if an NPM module is installed by checking paths with `npm ls`
|
48
48
|
# Returns path to binary if installed
|
49
49
|
def find_node_module(cmd)
|
50
|
-
|
51
|
-
system "$(npm bin)/#{cmd}"
|
52
50
|
response = Open3.capture3("npm ls #{cmd}")
|
53
51
|
|
54
52
|
# Look in local `./node_modules` path.
|
@@ -110,6 +108,22 @@ module Cyborg
|
|
110
108
|
list
|
111
109
|
end
|
112
110
|
|
111
|
+
def compress(file)
|
112
|
+
return unless Cyborg.production?
|
113
|
+
mtime = File.mtime(file)
|
114
|
+
gz_file = "#{file}.gz"
|
115
|
+
return if File.exist?(gz_file) && File.mtime(gz_file) >= mtime
|
116
|
+
|
117
|
+
File.open(gz_file, "wb") do |dest|
|
118
|
+
gz = Zlib::GzipWriter.new(dest, Zlib::BEST_COMPRESSION)
|
119
|
+
gz.mtime = mtime.to_i
|
120
|
+
IO.copy_stream(open(file), gz)
|
121
|
+
gz.close
|
122
|
+
end
|
123
|
+
|
124
|
+
File.utime(mtime, mtime, gz_file)
|
125
|
+
end
|
126
|
+
|
113
127
|
end
|
114
128
|
end
|
115
129
|
end
|
@@ -13,7 +13,10 @@ module Cyborg
|
|
13
13
|
if Open3.capture3("npm ls browserify-incremental")[1].empty?
|
14
14
|
find_files.each do |file|
|
15
15
|
dest = destination(file).sub(/\.js$/,'')
|
16
|
-
|
16
|
+
cmd = "browserifyinc --cachefile #{Cyborg.rails_path("tmp/cache/assets/.browserify-cache.json")} #{file} -t babelify --standalone #{plugin.module_name} -o #{dest}.js -d"
|
17
|
+
cmd += " -p [ minifyify --map #{url(file).sub(/\.js$/,'')}.map.json --output #{dest}.map.json ]" if plugin.maps? || Cyborg.production?
|
18
|
+
system cmd
|
19
|
+
compress(destination(file))
|
17
20
|
puts build_msg(file)
|
18
21
|
end
|
19
22
|
else
|
@@ -28,16 +28,12 @@ module Cyborg
|
|
28
28
|
|
29
29
|
def build_css(file)
|
30
30
|
system "cp #{file} #{destination(file)}"
|
31
|
+
compress(destination(file))
|
31
32
|
end
|
32
33
|
|
33
34
|
def build_sass(file)
|
34
|
-
style = 'nested'
|
35
|
-
sourcemap = 'auto'
|
36
|
-
|
37
|
-
if Cyborg.production?
|
38
|
-
style = "compressed"
|
39
|
-
sourcemap = 'false'
|
40
|
-
end
|
35
|
+
style = Cyborg.production? ? "compressed" : 'nested'
|
36
|
+
sourcemap = plugin.maps? ? 'auto' : 'false'
|
41
37
|
|
42
38
|
dest = destination(file)
|
43
39
|
|
@@ -45,6 +41,7 @@ module Cyborg
|
|
45
41
|
|
46
42
|
dest = destination(file)
|
47
43
|
npm_command "postcss --use autoprefixer #{dest} -o #{dest}"
|
44
|
+
compress(dest)
|
48
45
|
end
|
49
46
|
|
50
47
|
|
data/lib/cyborg/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyborg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass
|
@@ -155,7 +155,6 @@ files:
|
|
155
155
|
- lib/cyborg.rb
|
156
156
|
- lib/cyborg/assets.rb
|
157
157
|
- lib/cyborg/command.rb
|
158
|
-
- lib/cyborg/command/compress.rb
|
159
158
|
- lib/cyborg/command/help.rb
|
160
159
|
- lib/cyborg/command/npm.rb
|
161
160
|
- lib/cyborg/command/scaffold.rb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Cyborg
|
2
|
-
module GZIP
|
3
|
-
ZIP_TYPES = /\.(?:css|html|js|otf|svg|txt|xml)$/
|
4
|
-
|
5
|
-
def compress(glob)
|
6
|
-
Dir["#{Cyborg.config[:paths][:output]}/#{glob}"].each do |f|
|
7
|
-
next unless f =~ ZIP_TYPES
|
8
|
-
|
9
|
-
mtime = File.mtime(f)
|
10
|
-
gz_file = "#{f}.gz"
|
11
|
-
next if File.exist?(gz_file) && File.mtime(gz_file) >= mtime
|
12
|
-
|
13
|
-
File.open(gz_file, "wb") do |dest|
|
14
|
-
gz = Zlib::GzipWriter.new(dest, Zlib::BEST_COMPRESSION)
|
15
|
-
gz.mtime = mtime.to_i
|
16
|
-
IO.copy_stream(open(f), gz)
|
17
|
-
gz.close
|
18
|
-
end
|
19
|
-
|
20
|
-
File.utime(mtime, mtime, gz_file)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|