cyborg 0.0.9 → 0.1.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/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
|