cyborg 0.0.1
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/.gitignore +12 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +2 -0
- data/bin/cyborg +70 -0
- data/cyborg.gemspec +32 -0
- data/lib/cyborg.rb +125 -0
- data/lib/cyborg/assets.rb +8 -0
- data/lib/cyborg/command.rb +60 -0
- data/lib/cyborg/command/compress.rb +24 -0
- data/lib/cyborg/command/help.rb +50 -0
- data/lib/cyborg/command/npm.rb +77 -0
- data/lib/cyborg/command/scaffold.rb +281 -0
- data/lib/cyborg/helpers/asset_helpers.rb +32 -0
- data/lib/cyborg/helpers/layout_helpers.rb +28 -0
- data/lib/cyborg/middleware.rb +18 -0
- data/lib/cyborg/plugin.rb +152 -0
- data/lib/cyborg/plugin/assets/asset.rb +93 -0
- data/lib/cyborg/plugin/assets/javascripts.rb +21 -0
- data/lib/cyborg/plugin/assets/stylesheets.rb +54 -0
- data/lib/cyborg/plugin/assets/svgs.rb +35 -0
- data/lib/cyborg/version.rb +3 -0
- metadata +195 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
module Cyborg
|
2
|
+
module Helpers
|
3
|
+
module LayoutHelper
|
4
|
+
def layout(name, options={}, &block)
|
5
|
+
layout = options.delete(:layout) || 'application'
|
6
|
+
yield
|
7
|
+
render template: "layouts/#{name}/#{layout}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def javascripts(&block)
|
11
|
+
content_for :javascripts, &block
|
12
|
+
end
|
13
|
+
|
14
|
+
def stylesheets(&block)
|
15
|
+
content_for :stylesheets, &block
|
16
|
+
end
|
17
|
+
|
18
|
+
def main(options={}, &block)
|
19
|
+
content_for :main, &block
|
20
|
+
end
|
21
|
+
|
22
|
+
def sidebar(&block)
|
23
|
+
content_for :sidebar, &block
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rack/cors'
|
2
|
+
|
3
|
+
module Cyborg
|
4
|
+
class Application < Rails::Application
|
5
|
+
config.middleware.insert_before ActionDispatch::Static, Rack::Deflater
|
6
|
+
|
7
|
+
config.middleware.insert_before 0, "Rack::Cors", :debug => true, :logger => (-> { Rails.logger }) do
|
8
|
+
allow do
|
9
|
+
origins "*"
|
10
|
+
resource "*", {
|
11
|
+
:headers => :any,
|
12
|
+
:expose => ["Location"],
|
13
|
+
:methods => [:get, :post, :put, :patch, :delete, :options]
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
module Cyborg
|
2
|
+
class Plugin
|
3
|
+
attr_reader :module_name, :gem, :engine,
|
4
|
+
:stylesheets, :javascripts, :svgs, :destination
|
5
|
+
|
6
|
+
def initialize(options)
|
7
|
+
@name = options.delete(:name)
|
8
|
+
@module_name = parent_module.name
|
9
|
+
@gem = Gem.loaded_specs[@name]
|
10
|
+
config(options)
|
11
|
+
expand_asset_paths
|
12
|
+
|
13
|
+
# Store the gem path for access later when overriding root
|
14
|
+
parent_module.instance_variable_set(:@gem_path, root)
|
15
|
+
add_assets
|
16
|
+
|
17
|
+
@engine = create_engine if defined?(Rails)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_engine
|
21
|
+
# Create a new Rails::Engine
|
22
|
+
return parent_module.const_set('Engine', Class.new(Rails::Engine) do
|
23
|
+
def get_plugin_path
|
24
|
+
parent = Object.const_get(self.class.to_s.split('::').first)
|
25
|
+
path = parent.instance_variable_get("@gem_path")
|
26
|
+
Pathname.new path
|
27
|
+
end
|
28
|
+
|
29
|
+
def config
|
30
|
+
@config ||= Rails::Engine::Configuration.new(get_plugin_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
initializer "#{name.to_s.downcase}.static_assets" do |app|
|
34
|
+
app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
|
35
|
+
end
|
36
|
+
end)
|
37
|
+
end
|
38
|
+
|
39
|
+
def parent_module
|
40
|
+
Object.const_get(self.class.to_s.split('::').first)
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_assets
|
44
|
+
@javascripts = Assets::Javascripts.new(self, paths[:javascripts])
|
45
|
+
@stylesheets = Assets::Stylesheets.new(self, paths[:stylesheets])
|
46
|
+
@svgs = Assets::Svgs.new(self, paths[:svgs])
|
47
|
+
end
|
48
|
+
|
49
|
+
def assets
|
50
|
+
[@svgs, @stylesheets, @javascripts]
|
51
|
+
end
|
52
|
+
|
53
|
+
def build
|
54
|
+
Command.from_root {
|
55
|
+
FileUtils.mkdir_p(File.join(destination, asset_root))
|
56
|
+
}
|
57
|
+
threads = []
|
58
|
+
assets.each do |asset|
|
59
|
+
threads << Thread.new { asset.build }
|
60
|
+
end
|
61
|
+
|
62
|
+
threads
|
63
|
+
end
|
64
|
+
|
65
|
+
def watch
|
66
|
+
assets.map(&:watch)
|
67
|
+
end
|
68
|
+
|
69
|
+
def config(options)
|
70
|
+
options = {
|
71
|
+
production_asset_root: "/assets/#{@name}",
|
72
|
+
asset_root: "/assets/#{@name}",
|
73
|
+
destination: "public/",
|
74
|
+
root: @gem.full_gem_path,
|
75
|
+
version: @gem.version.to_s,
|
76
|
+
paths: {
|
77
|
+
stylesheets: "app/assets/stylesheets/#{@name}",
|
78
|
+
javascripts: "app/assets/javascripts/#{@name}",
|
79
|
+
svgs: "app/assets/svgs/#{@name}",
|
80
|
+
}
|
81
|
+
}.merge(options)
|
82
|
+
|
83
|
+
options.each do |k,v|
|
84
|
+
set_instance(k.to_s,v)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
def expand_asset_paths
|
90
|
+
@paths.each do |type, path|
|
91
|
+
@paths[type] = File.join(root, path)
|
92
|
+
end
|
93
|
+
@destination = File.join(root, @destination)
|
94
|
+
end
|
95
|
+
|
96
|
+
def asset_root
|
97
|
+
if Cyborg.production?
|
98
|
+
plugin.production_asset_root
|
99
|
+
else
|
100
|
+
plugin.asset_root
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
def asset_ext(klass)
|
107
|
+
klass.name.split('::').last.downcase
|
108
|
+
end
|
109
|
+
|
110
|
+
# Find files based on class type and
|
111
|
+
# return an array of Classes for each file
|
112
|
+
def add_files(klass)
|
113
|
+
ext = asset_ext klass
|
114
|
+
find_files(ext).map do |path|
|
115
|
+
klass.new(self, path)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def glob(asset_ext)
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
# Find files by class type and extension
|
124
|
+
def find_files(ext)
|
125
|
+
|
126
|
+
files = Dir[File.join(paths[ext.to_sym], asset_glob(ext))]
|
127
|
+
|
128
|
+
# Filter out partials
|
129
|
+
files.reject { |f| File.basename(f).start_with?('_') }
|
130
|
+
end
|
131
|
+
|
132
|
+
def asset_glob(type)
|
133
|
+
case type
|
134
|
+
when "sass"
|
135
|
+
"*.s[ca]ss"
|
136
|
+
else
|
137
|
+
"*.#{type}"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
# Convert configuration into instance variables
|
143
|
+
def set_instance(name, value)
|
144
|
+
instance_variable_set("@#{name}", value)
|
145
|
+
instance_eval(<<-EOS, __FILE__, __LINE__ + 1)
|
146
|
+
def #{name}
|
147
|
+
@#{name}
|
148
|
+
end
|
149
|
+
EOS
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Cyborg
|
2
|
+
module Assets
|
3
|
+
class AssetType
|
4
|
+
attr_reader :plugin, :base
|
5
|
+
|
6
|
+
def initialize(plugin, base)
|
7
|
+
@base = base
|
8
|
+
@plugin = plugin
|
9
|
+
end
|
10
|
+
|
11
|
+
def find_files
|
12
|
+
files = Dir[File.join(base, "*.#{ext}")]
|
13
|
+
|
14
|
+
# Filter out partials
|
15
|
+
files.reject { |f| File.basename(f).start_with?('_') }
|
16
|
+
end
|
17
|
+
|
18
|
+
def versioned(path)
|
19
|
+
File.basename(path).sub(/(\.\w+)$/, '-'+plugin.version+'\1')
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_msg(file)
|
23
|
+
"Built: #{destination(file).sub(plugin.root+'/','')}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Determine if an NPM module is installed by checking paths with `npm ls`
|
27
|
+
# Returns path to binary if installed
|
28
|
+
def find_node_module(cmd)
|
29
|
+
|
30
|
+
response = Open3.capture3("npm ls #{cmd}")
|
31
|
+
|
32
|
+
# Look in local `./node_modules` path.
|
33
|
+
# Be sure stderr is empty (the second argument returned by capture3)
|
34
|
+
if response[1].empty?
|
35
|
+
"$(npm bin)/#{cmd}"
|
36
|
+
|
37
|
+
# Check global module path
|
38
|
+
elsif Open3.capture3("npm ls -g #{cmd}")[1].empty?
|
39
|
+
cmd
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def npm_command(cmd)
|
44
|
+
cmd = cmd.split(' ')
|
45
|
+
path = find_node_module(cmd.shift)
|
46
|
+
if path
|
47
|
+
system "#{path} #{cmd.join(' ')}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def destination(path)
|
52
|
+
File.join(plugin.destination, plugin.asset_root, versioned(path))
|
53
|
+
end
|
54
|
+
|
55
|
+
def url(path)
|
56
|
+
File.join(plugin.asset_root, versioned(path))
|
57
|
+
end
|
58
|
+
|
59
|
+
def urls
|
60
|
+
find_files.map{ |file| url(file) }
|
61
|
+
end
|
62
|
+
|
63
|
+
def watch
|
64
|
+
puts "Watching for changes to #{base.sub(plugin.root+'/', '')}..."
|
65
|
+
|
66
|
+
Thread.new {
|
67
|
+
listener = Listen.to(base) do |modified, added, removed|
|
68
|
+
change(modified, added, removed)
|
69
|
+
end
|
70
|
+
|
71
|
+
listener.start # not blocking
|
72
|
+
sleep
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
def change(modified, added, removed)
|
77
|
+
puts "Added: #{file_event(added)}" unless added.empty?
|
78
|
+
puts "Removed: #{file_event(removed)}" unless removed.empty?
|
79
|
+
puts "Modified: #{file_event(modified)}" unless modified.empty?
|
80
|
+
|
81
|
+
build
|
82
|
+
end
|
83
|
+
|
84
|
+
def file_event(files)
|
85
|
+
list = files.map { |f| f.sub(base+'/', '') }.join(" \n")
|
86
|
+
list = " \n#{files}" if 1 < files.size
|
87
|
+
|
88
|
+
list
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Cyborg
|
2
|
+
module Assets
|
3
|
+
class Javascripts < AssetType
|
4
|
+
def ext
|
5
|
+
"js"
|
6
|
+
end
|
7
|
+
|
8
|
+
def build
|
9
|
+
if find_node_module "browserify"
|
10
|
+
find_files.each do |file|
|
11
|
+
dest = destination(file).sub(/\.js$/,'')
|
12
|
+
npm_command "browserify #{file} -t babelify --standalone #{plugin.module_name} -o #{dest}.js -d -p [ minifyify --map #{url(file)}.map.json --output #{dest}.map.json ]"
|
13
|
+
puts build_msg(file)
|
14
|
+
end
|
15
|
+
else
|
16
|
+
abort "JS BUILD FAILED: browserify NPM module not found.\n" << "Please add browserify to your package.json and run `npm install`"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Cyborg
|
2
|
+
module Assets
|
3
|
+
class Stylesheets < AssetType
|
4
|
+
|
5
|
+
def ext
|
6
|
+
"*[ca]ss"
|
7
|
+
end
|
8
|
+
|
9
|
+
def build(ext=nil)
|
10
|
+
files = find_files
|
11
|
+
files = files.reject {|f| !f.match(/\.#{ext}/) } if ext
|
12
|
+
|
13
|
+
files.each do |file|
|
14
|
+
|
15
|
+
if File.extname(file).match(/\.css/)
|
16
|
+
build_css(file)
|
17
|
+
elsif File.extname(file).match(/\.s[ca]ss/)
|
18
|
+
build_sass(file)
|
19
|
+
end
|
20
|
+
|
21
|
+
dest = destination(file)
|
22
|
+
npm_command "postcss --use autoprefixer #{dest} -o #{dest}"
|
23
|
+
|
24
|
+
puts build_msg(file)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def build_css(file)
|
29
|
+
system "cp #{file} #{destination(file)}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_sass(file)
|
33
|
+
style = 'nested'
|
34
|
+
sourcemap = 'auto'
|
35
|
+
|
36
|
+
if Cyborg.production?
|
37
|
+
style = "compressed"
|
38
|
+
sourcemap = 'false'
|
39
|
+
end
|
40
|
+
|
41
|
+
dest = destination(file)
|
42
|
+
|
43
|
+
system "sass #{file}:#{dest} --style #{style} --sourcemap=#{sourcemap}"
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
# Convert extension
|
48
|
+
def versioned(file)
|
49
|
+
super(file.sub(/(\.css)?\.s[ca]ss$/i,'.css'))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Cyborg
|
2
|
+
module Assets
|
3
|
+
class Svgs < AssetType
|
4
|
+
|
5
|
+
def initialize(plugin, path)
|
6
|
+
require 'esvg'
|
7
|
+
@plugin = plugin
|
8
|
+
@base = path
|
9
|
+
|
10
|
+
return if find_files.empty?
|
11
|
+
|
12
|
+
@svg = Esvg::SVG.new({
|
13
|
+
config_file: File.join(plugin.root, 'esvg.yml'),
|
14
|
+
path: path,
|
15
|
+
tmp_path: File.join(Cyborg.rails_path, 'tmp/cache/assets'),
|
16
|
+
js_path: File.join(plugin.paths[:javascripts], '_svg.js'),
|
17
|
+
optimize: true
|
18
|
+
})
|
19
|
+
end
|
20
|
+
|
21
|
+
def ext
|
22
|
+
"svg"
|
23
|
+
end
|
24
|
+
|
25
|
+
def build
|
26
|
+
return if find_files.empty?
|
27
|
+
|
28
|
+
@svg.read_files
|
29
|
+
if write_path = @svg.write
|
30
|
+
puts "Built: #{write_path.sub(plugin.root+'/','')}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cyborg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brandon Mathis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sass
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: esvg
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.8.10
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.8.10
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: listen
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: block_helpers
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.3.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: colorize
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rack-cors
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bundler
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.11'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.11'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rake
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '10.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '10.0'
|
139
|
+
description: Build style-guide plugins Rails (and humans).
|
140
|
+
email:
|
141
|
+
- brandon@imathis.com
|
142
|
+
executables:
|
143
|
+
- cyborg
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- ".gitignore"
|
148
|
+
- CODE_OF_CONDUCT.md
|
149
|
+
- Gemfile
|
150
|
+
- LICENSE.txt
|
151
|
+
- README.md
|
152
|
+
- Rakefile
|
153
|
+
- bin/cyborg
|
154
|
+
- cyborg.gemspec
|
155
|
+
- lib/cyborg.rb
|
156
|
+
- lib/cyborg/assets.rb
|
157
|
+
- lib/cyborg/command.rb
|
158
|
+
- lib/cyborg/command/compress.rb
|
159
|
+
- lib/cyborg/command/help.rb
|
160
|
+
- lib/cyborg/command/npm.rb
|
161
|
+
- lib/cyborg/command/scaffold.rb
|
162
|
+
- lib/cyborg/helpers/asset_helpers.rb
|
163
|
+
- lib/cyborg/helpers/layout_helpers.rb
|
164
|
+
- lib/cyborg/middleware.rb
|
165
|
+
- lib/cyborg/plugin.rb
|
166
|
+
- lib/cyborg/plugin/assets/asset.rb
|
167
|
+
- lib/cyborg/plugin/assets/javascripts.rb
|
168
|
+
- lib/cyborg/plugin/assets/stylesheets.rb
|
169
|
+
- lib/cyborg/plugin/assets/svgs.rb
|
170
|
+
- lib/cyborg/version.rb
|
171
|
+
homepage: https://github.com/compose-ui/cyborg
|
172
|
+
licenses:
|
173
|
+
- MIT
|
174
|
+
metadata: {}
|
175
|
+
post_install_message:
|
176
|
+
rdoc_options: []
|
177
|
+
require_paths:
|
178
|
+
- lib
|
179
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - ">="
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
requirements: []
|
190
|
+
rubyforge_project:
|
191
|
+
rubygems_version: 2.5.1
|
192
|
+
signing_key:
|
193
|
+
specification_version: 4
|
194
|
+
summary: Build style-guide plugins Rails (and humans).
|
195
|
+
test_files: []
|