linner 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/LICENSE +22 -0
- data/README.md +16 -1
- data/lib/linner.rb +12 -14
- data/lib/linner/asset.rb +5 -17
- data/lib/linner/command.rb +5 -5
- data/lib/linner/compressor.rb +2 -3
- data/lib/linner/environment.rb +13 -14
- data/lib/linner/{sort.rb → helper.rb} +17 -2
- data/lib/linner/notifier.rb +14 -13
- data/lib/linner/template.rb +22 -16
- data/lib/linner/templates/config.yml +2 -4
- data/lib/linner/version.rb +1 -1
- data/lib/linner/wrapper.rb +7 -11
- data/linner.gemspec +2 -1
- data/spec/fixtures/app.js +1 -0
- data/spec/fixtures/config.yml +0 -0
- data/spec/linner/asset_spec.rb +8 -0
- data/spec/linner/environment_spec.rb +31 -0
- data/spec/linner/helper_spec.rb +28 -0
- data/spec/linner/template_spec.rb +26 -0
- data/spec/linner/wrapper_spec.rb +22 -0
- data/spec/spec_helper.rb +11 -0
- data/vendor/config.default.yml +38 -0
- metadata +45 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96597b56da64c0335227695b713d6ca663a93192
|
4
|
+
data.tar.gz: ac32c7dfd3bf23876cd8db939a4927a5b5fcf599
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4ffb6f987945e1aff80caf495e728a0013ac32cbfc200f86f4cbe65223f7a24b4ce3dfb23cd3f24240a95b963aead6829591f94fa7c7f91749e0edf6c3a3993
|
7
|
+
data.tar.gz: d105dcab73e1f4b26a55f588e5d2aecb990dd1a9367e5086a8f59bd92ccfcd1dd9e7db1804163bb49cc682c87690b298f2cb6fdc48c6325efdff6b494735a110
|
data/.rspec
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Saito
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,6 +1,21 @@
|
|
1
1
|
# Linner
|
2
2
|
|
3
|
-
HTML5
|
3
|
+
Linner is a full-featured HTML5 application assembler.
|
4
|
+
|
5
|
+
![Linner](http://d.pr/i/bWPA+)
|
6
|
+
|
7
|
+
* Fast!
|
8
|
+
* Supports `Sass` and `Coffee`.
|
9
|
+
* Supports OS X Lion and Mountaion Lion Notifications.
|
10
|
+
* Supports Modular Javascript, All your code will be wrap by `CMD`.
|
11
|
+
* Supports `concat` code by `config file` not `directive processor`.
|
12
|
+
* Supports `copy` code from `src` to `dist`.
|
13
|
+
* Supports Real-time `concat` by `$ linner watch`.
|
14
|
+
* Supports `compress` by `$ linner build`.
|
15
|
+
|
16
|
+
## Requirements
|
17
|
+
|
18
|
+
* Ruby 2.0
|
4
19
|
|
5
20
|
## Installation
|
6
21
|
|
data/lib/linner.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "linner/version"
|
2
2
|
require "linner/command"
|
3
3
|
require "linner/asset"
|
4
|
-
require "linner/
|
4
|
+
require "linner/helper"
|
5
5
|
require "linner/environment"
|
6
6
|
require "linner/wrapper"
|
7
7
|
require "linner/template"
|
@@ -16,12 +16,11 @@ module Linner
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def environment
|
19
|
-
@env ||=
|
19
|
+
@env ||= Environment.new root.join("config.yml")
|
20
20
|
end
|
21
21
|
|
22
|
-
def perform(
|
23
|
-
|
24
|
-
environment.files.values.each do |config|
|
22
|
+
def perform(compile: false)
|
23
|
+
environment.files.each do |config|
|
25
24
|
Thread.new {concat(config).each {|asset| asset.compress if compile; asset.write}}.join
|
26
25
|
Thread.new {copy(config)}.join
|
27
26
|
end
|
@@ -30,14 +29,13 @@ module Linner
|
|
30
29
|
private
|
31
30
|
def concat(config)
|
32
31
|
assets = []
|
33
|
-
concat
|
34
|
-
concat.each do |dist, regex|
|
32
|
+
config["concat"].each do |dist, regex|
|
35
33
|
Thread.new do
|
36
|
-
dist =
|
34
|
+
dist = Asset.new(File.join environment.public_folder, dist)
|
35
|
+
dist.content = ""
|
37
36
|
matches = Dir.glob(File.join root, regex).uniq
|
38
|
-
matches.
|
39
|
-
|
40
|
-
asset = Linner::Asset.new(m)
|
37
|
+
matches.sort_by_before_and_after(config["order"]["before"], config["order"]["after"]).each do |m|
|
38
|
+
asset = Asset.new(m)
|
41
39
|
content = asset.content
|
42
40
|
if asset.wrappable?
|
43
41
|
content = asset.wrap
|
@@ -51,13 +49,13 @@ module Linner
|
|
51
49
|
end
|
52
50
|
|
53
51
|
def copy(config)
|
54
|
-
config["copy"].
|
52
|
+
config["copy"].each do |dist, regex|
|
55
53
|
Thread.new do
|
56
54
|
matches = Dir.glob(File.join root, regex)
|
57
55
|
matches.each do |path|
|
58
|
-
asset =
|
56
|
+
asset = Asset.new(path)
|
59
57
|
asset.path = File.join(environment.public_folder, dist, asset.logical_path)
|
60
|
-
next if File.exist?
|
58
|
+
next if File.exist?(asset.path) and FileUtils.uptodate?(path, [asset.path])
|
61
59
|
asset.write
|
62
60
|
end
|
63
61
|
end.join
|
data/lib/linner/asset.rb
CHANGED
@@ -5,38 +5,26 @@ module Linner
|
|
5
5
|
|
6
6
|
def initialize(path)
|
7
7
|
@path = path
|
8
|
-
|
9
|
-
@content = ""
|
10
|
-
else
|
11
|
-
@content = Linner::Template.new(path).render
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def type
|
16
|
-
@type ||= if @path =~ /\.(js|coffee)$/
|
17
|
-
"script"
|
18
|
-
elsif @path =~ /\.(css|sass|scss)/
|
19
|
-
"style"
|
20
|
-
end
|
8
|
+
@content ||= File.exist?(path) ? Tilt.new(path).render : ""
|
21
9
|
end
|
22
10
|
|
23
11
|
def wrap
|
24
|
-
|
12
|
+
Wrapper.wrap(logical_path.chomp(File.extname logical_path), @content)
|
25
13
|
end
|
26
14
|
|
27
15
|
def wrappable?
|
28
|
-
!!(
|
16
|
+
!!(@path.include? Linner.root.join("app").to_path and Template.template_for_script?(@path))
|
29
17
|
end
|
30
18
|
|
31
19
|
def write
|
32
20
|
FileUtils.mkdir_p File.dirname(@path)
|
33
|
-
File.open @path, "w
|
21
|
+
File.open @path, "w" do |file|
|
34
22
|
file.write @content
|
35
23
|
end
|
36
24
|
end
|
37
25
|
|
38
26
|
def compress
|
39
|
-
@content =
|
27
|
+
@content = Compressor.compress(self)
|
40
28
|
end
|
41
29
|
|
42
30
|
def logical_path
|
data/lib/linner/command.rb
CHANGED
@@ -11,7 +11,7 @@ module Linner
|
|
11
11
|
|
12
12
|
desc "build", "build assets"
|
13
13
|
def build
|
14
|
-
|
14
|
+
Notifier.info do
|
15
15
|
Linner.perform compile: true
|
16
16
|
end
|
17
17
|
end
|
@@ -20,16 +20,16 @@ module Linner
|
|
20
20
|
def watch
|
21
21
|
proc = Proc.new do |modified, added, removed|
|
22
22
|
begin
|
23
|
-
|
23
|
+
Notifier.info{ Linner.perform }
|
24
24
|
rescue
|
25
|
-
|
25
|
+
Notifier.error $!
|
26
26
|
end
|
27
27
|
end
|
28
28
|
proc.call
|
29
29
|
listener = Listen.to "app/", "vendor/", "test/", filter: /\.(js|coffee|css|sass|scss)$/
|
30
30
|
listener.change &proc
|
31
31
|
trap :INT do
|
32
|
-
|
32
|
+
Notifier.exit
|
33
33
|
exit!
|
34
34
|
end
|
35
35
|
listener.start!
|
@@ -37,7 +37,7 @@ module Linner
|
|
37
37
|
|
38
38
|
desc "clean", "clean assets"
|
39
39
|
def clean
|
40
|
-
FileUtils.rm_rf
|
40
|
+
FileUtils.rm_rf Dir.glob("#{Linner.environment.public_folder}/*")
|
41
41
|
end
|
42
42
|
|
43
43
|
desc "new", "create the skeleton of project"
|
data/lib/linner/compressor.rb
CHANGED
@@ -5,10 +5,9 @@ module Linner
|
|
5
5
|
class Compressor
|
6
6
|
|
7
7
|
def self.compress(asset)
|
8
|
-
|
9
|
-
when "script"
|
8
|
+
if Template.template_for_script? asset.path
|
10
9
|
Uglifier.compile asset.content, comments: "none"
|
11
|
-
|
10
|
+
elsif Template.template_for_style? asset.path
|
12
11
|
YUI::CssCompressor.new.compress asset.content
|
13
12
|
end
|
14
13
|
end
|
data/lib/linner/environment.rb
CHANGED
@@ -4,26 +4,25 @@ module Linner
|
|
4
4
|
class Environment
|
5
5
|
|
6
6
|
def initialize(path)
|
7
|
-
@
|
7
|
+
@env ||= (YAML::load(File.read path) || Hash.new)
|
8
|
+
@convension = YAML::load File.read(File.join File.dirname(__FILE__), "../../vendor", "config.default.yml")
|
9
|
+
@env = @convension.rmerge!(@env)
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
+
%w(app test vendor public).each do |method|
|
13
|
+
define_method("#{method}_folder") do
|
14
|
+
Linner.root.join(@env["paths"][method]).expand_path.to_path
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def notifications
|
19
|
-
@config["notifications"] || false
|
18
|
+
%w(notification wrapper).each do |method|
|
19
|
+
define_method(method) do
|
20
|
+
@env[method]
|
21
|
+
end
|
20
22
|
end
|
21
23
|
|
22
|
-
def
|
23
|
-
|
24
|
-
before = file["order"].to_h["before"] || []
|
25
|
-
after = file["order"].to_h["after"] || []
|
26
|
-
[concat, before, after]
|
24
|
+
def files
|
25
|
+
@env["files"].values
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -1,7 +1,14 @@
|
|
1
1
|
module Linner
|
2
|
-
module
|
2
|
+
module HashRecursiveMerge
|
3
|
+
def rmerge!(other_hash)
|
4
|
+
merge!(other_hash) do |key, oldval, newval|
|
5
|
+
oldval.class == self.class ? oldval.rmerge!(newval) : newval
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
3
9
|
|
4
|
-
|
10
|
+
module Sort
|
11
|
+
def sort_by_before_and_after(before, after)
|
5
12
|
sort_by_before(self, before)
|
6
13
|
sort_by_after(self, after)
|
7
14
|
self
|
@@ -25,3 +32,11 @@ module Linner
|
|
25
32
|
end
|
26
33
|
end
|
27
34
|
end
|
35
|
+
|
36
|
+
class Hash
|
37
|
+
include Linner::HashRecursiveMerge
|
38
|
+
end
|
39
|
+
|
40
|
+
class Array
|
41
|
+
include Linner::Sort
|
42
|
+
end
|
data/lib/linner/notifier.rb
CHANGED
@@ -2,22 +2,23 @@ require "terminal-notifier"
|
|
2
2
|
|
3
3
|
module Linner
|
4
4
|
class Notifier
|
5
|
+
class << self
|
6
|
+
def info
|
7
|
+
time = Time.now
|
8
|
+
yield
|
9
|
+
puts "🍜 : Done in #{'%.3f' % (Time.now - time)}s."
|
10
|
+
end
|
5
11
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def self.error(message)
|
13
|
-
puts message = "👻 : #{message}!"
|
14
|
-
if Linner.environment.notifications && TerminalNotifier.available?
|
15
|
-
TerminalNotifier.notify message, :title => 'Linner'
|
12
|
+
def error(message)
|
13
|
+
puts message = "👻 : #{message}!"
|
14
|
+
if Linner.environment.notifications && TerminalNotifier.available?
|
15
|
+
TerminalNotifier.notify message, :title => 'Linner'
|
16
|
+
end
|
16
17
|
end
|
17
|
-
end
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
def exit
|
20
|
+
puts "\r🍵 : Let's take a break!"
|
21
|
+
end
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/lib/linner/template.rb
CHANGED
@@ -1,25 +1,31 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "tilt"
|
2
|
+
require "sass"
|
3
|
+
require "coffee_script"
|
4
|
+
|
5
|
+
module Tilt
|
6
|
+
class JavascriptTemplate < PlainTemplate
|
7
|
+
self.default_mime_type = 'application/javascript'
|
8
|
+
end
|
9
|
+
|
10
|
+
class CSSTemplate < PlainTemplate
|
11
|
+
self.default_mime_type = 'text/css'
|
12
|
+
end
|
13
|
+
|
14
|
+
Tilt.register Tilt::CSSTemplate, "css"
|
15
|
+
Tilt.register Tilt::JavascriptTemplate, "js"
|
16
|
+
end
|
4
17
|
|
5
18
|
module Linner
|
6
19
|
class Template
|
7
20
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def render
|
13
|
-
if supported_template? @path
|
14
|
-
Tilt.new(@path).render
|
15
|
-
else
|
16
|
-
File.read @path
|
21
|
+
class << self
|
22
|
+
def template_for_script?(path)
|
23
|
+
[Tilt::JavascriptTemplate, Tilt::CoffeeScriptTemplate].include? Tilt[path]
|
17
24
|
end
|
18
|
-
end
|
19
25
|
|
20
|
-
|
21
|
-
|
22
|
-
|
26
|
+
def template_for_style?(path)
|
27
|
+
[Tilt::CSSTemplate, Tilt::SassTemplate, Tilt::ScssTemplate].include? Tilt[path]
|
28
|
+
end
|
23
29
|
end
|
24
30
|
end
|
25
31
|
end
|
@@ -3,7 +3,7 @@ paths:
|
|
3
3
|
files:
|
4
4
|
scripts:
|
5
5
|
concat:
|
6
|
-
"scripts/app.js": "app
|
6
|
+
"scripts/app.js": "app/**/*.{js,coffee}"
|
7
7
|
"scripts/vendor.js": "vendor/**/*.{js,coffee}"
|
8
8
|
order:
|
9
9
|
before:
|
@@ -20,7 +20,5 @@ files:
|
|
20
20
|
copy:
|
21
21
|
"/": "app/views/**/*.{html,hbs}"
|
22
22
|
modules:
|
23
|
-
wrapper: "
|
24
|
-
conventions:
|
25
|
-
ignored: "_"
|
23
|
+
wrapper: "CMD"
|
26
24
|
notifications: true
|
data/lib/linner/version.rb
CHANGED
data/lib/linner/wrapper.rb
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
module Linner
|
2
2
|
class Wrapper
|
3
|
+
WRAPPER =
|
4
|
+
'window.require.define({"%s":' +
|
5
|
+
'function(exports, require, module){' +
|
6
|
+
'%s' +
|
7
|
+
";}});\n"
|
3
8
|
|
4
|
-
|
5
|
-
|
6
|
-
'window.require.define({"%s":' +
|
7
|
-
'function(exports, require, module){' +
|
8
|
-
'%s' +
|
9
|
-
";}});\n"
|
10
|
-
end
|
11
|
-
|
12
|
-
def wrap(name, content)
|
13
|
-
wrapper % [name, content]
|
14
|
-
end
|
9
|
+
def self.wrap(name, content)
|
10
|
+
WRAPPER % [name, content]
|
15
11
|
end
|
16
12
|
end
|
17
13
|
end
|
data/linner.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency "yui-compressor", "~> 0.9.6"
|
28
28
|
spec.add_dependency "terminal-notifier", "~> 1.4"
|
29
29
|
|
30
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
31
30
|
spec.add_development_dependency "rake"
|
31
|
+
spec.add_development_dependency "rspec", "~> 2.14"
|
32
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
32
33
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
console.log("app.js")
|
File without changes
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Environment do
|
4
|
+
before(:each) do
|
5
|
+
@env = Environment.new(root.join "config.yml")
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "convension" do
|
9
|
+
it "should equals default path folder" do
|
10
|
+
@env.app_folder.should == root.join("app").to_path
|
11
|
+
@env.test_folder.should == root.join("test").to_path
|
12
|
+
@env.vendor_folder.should == root.join("vendor").to_path
|
13
|
+
@env.public_folder.should == root.join("public").to_path
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should equals default config" do
|
17
|
+
@env.notification.should be_true
|
18
|
+
@env.wrapper.should == "CMD"
|
19
|
+
@env.files.should respond_to(:each)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should equals default before and after" do
|
23
|
+
@env.files.each do |file|
|
24
|
+
file["copy"].should respond_to(:each)
|
25
|
+
file["concat"].should respond_to(:each)
|
26
|
+
file["order"]["before"].should respond_to(:each)
|
27
|
+
file["order"]["after"].should respond_to(:each)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Array do
|
4
|
+
before(:each) do
|
5
|
+
@array = %w[app.js jquery.js bootstrap.css reset.css vendor.js]
|
6
|
+
end
|
7
|
+
|
8
|
+
describe :sort do
|
9
|
+
it "won't change when before and after are empty array" do
|
10
|
+
@array.sort_by_before_and_after([], []).should be_equal @array
|
11
|
+
end
|
12
|
+
|
13
|
+
it "will change by before items" do
|
14
|
+
@array.sort_by_before_and_after(["jquery.js", "vendor.js"], [])
|
15
|
+
@array.should =~ %w[jquery.js vendor.js app.js bootstrap.css reset.css]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "will change by after items" do
|
19
|
+
@array.sort_by_before_and_after([], ["reset.css", "bootstrap.css"])
|
20
|
+
@array.should =~ %w[app.js jquery.js vendor.js reset.css bootstrap.css]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "will change by before and after items" do
|
24
|
+
@array.sort_by_before_and_after(["jquery.js", "vendor.js"], ["reset.css", "bootstrap.css"])
|
25
|
+
@array.should =~ %w[jquery.js vendor.js app.js reset.css bootstrap.css]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Template do
|
4
|
+
|
5
|
+
describe :templates do
|
6
|
+
|
7
|
+
it "should be javascript tempalate" do
|
8
|
+
Tilt["app.js"].should == Tilt::JavascriptTemplate
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be css template" do
|
12
|
+
Tilt["app.css"].should == Tilt::CSSTemplate
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should tempalte for script" do
|
16
|
+
Template.template_for_script? "app.js".should be_true
|
17
|
+
Template.template_for_script? "app.coffee".should be_true
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should tempalte for style" do
|
21
|
+
Template.template_for_style? "app.css".should be_true
|
22
|
+
Template.template_for_style? "app.sass".should be_true
|
23
|
+
Template.template_for_style? "app.scss".should be_true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Wrapper do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@name = "app"
|
7
|
+
@script = 'module.exports = function() {return console.log("log from app!");};'
|
8
|
+
@expected_script = 'window.require.define({"app":' +
|
9
|
+
'function(exports, require, module){' +
|
10
|
+
'module.exports = function() {' +
|
11
|
+
'return console.log("log from app!");' +
|
12
|
+
'};' +
|
13
|
+
";}});\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
describe :wrap do
|
17
|
+
it "should wrapped by wrapper" do
|
18
|
+
script = Wrapper.wrap(@name, @script)
|
19
|
+
script.should eq @expected_script
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
paths:
|
2
|
+
app: "app"
|
3
|
+
test: "test"
|
4
|
+
vendor: "vendor"
|
5
|
+
public: "public"
|
6
|
+
files:
|
7
|
+
scripts:
|
8
|
+
concat:
|
9
|
+
"scripts/app.js": "app/**/*.{js,coffee}"
|
10
|
+
"scripts/vendor.js": "vendor/**/*.{js,coffee}"
|
11
|
+
copy: {}
|
12
|
+
order:
|
13
|
+
before:
|
14
|
+
- "vendor/jquery-1.10.2.js"
|
15
|
+
after: []
|
16
|
+
styles:
|
17
|
+
concat:
|
18
|
+
"styles/app.css": "app/**/[a-z]*.{css,scss,sass}"
|
19
|
+
copy: {}
|
20
|
+
order:
|
21
|
+
before: []
|
22
|
+
after: []
|
23
|
+
images:
|
24
|
+
concat: {}
|
25
|
+
copy:
|
26
|
+
"images/": "app/**/*.{png,gif}"
|
27
|
+
order:
|
28
|
+
before: []
|
29
|
+
after: []
|
30
|
+
views:
|
31
|
+
concat: {}
|
32
|
+
copy:
|
33
|
+
"/": "app/**/*.{html,hbs}"
|
34
|
+
order:
|
35
|
+
before: []
|
36
|
+
after: []
|
37
|
+
wrapper: "CMD"
|
38
|
+
notification: true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saito
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -123,33 +123,47 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.4'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rake
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ~>
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
145
|
+
version: '2.14'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - ~>
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
152
|
+
version: '2.14'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
154
|
+
name: bundler
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
|
-
- -
|
157
|
+
- - ~>
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
159
|
+
version: '1.3'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
|
-
- -
|
164
|
+
- - ~>
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
166
|
+
version: '1.3'
|
153
167
|
description: HTML5 Application Assembler
|
154
168
|
email:
|
155
169
|
- saitowu@gmail.com
|
@@ -159,8 +173,10 @@ extensions: []
|
|
159
173
|
extra_rdoc_files: []
|
160
174
|
files:
|
161
175
|
- .gitignore
|
176
|
+
- .rspec
|
162
177
|
- Gemfile
|
163
178
|
- Gemfile.lock
|
179
|
+
- LICENSE
|
164
180
|
- README.md
|
165
181
|
- Rakefile
|
166
182
|
- bin/linner
|
@@ -169,8 +185,8 @@ files:
|
|
169
185
|
- lib/linner/command.rb
|
170
186
|
- lib/linner/compressor.rb
|
171
187
|
- lib/linner/environment.rb
|
188
|
+
- lib/linner/helper.rb
|
172
189
|
- lib/linner/notifier.rb
|
173
|
-
- lib/linner/sort.rb
|
174
190
|
- lib/linner/template.rb
|
175
191
|
- lib/linner/templates/app/images/.gitkeep
|
176
192
|
- lib/linner/templates/app/scripts/app.coffee
|
@@ -184,6 +200,15 @@ files:
|
|
184
200
|
- lib/linner/version.rb
|
185
201
|
- lib/linner/wrapper.rb
|
186
202
|
- linner.gemspec
|
203
|
+
- spec/fixtures/app.js
|
204
|
+
- spec/fixtures/config.yml
|
205
|
+
- spec/linner/asset_spec.rb
|
206
|
+
- spec/linner/environment_spec.rb
|
207
|
+
- spec/linner/helper_spec.rb
|
208
|
+
- spec/linner/template_spec.rb
|
209
|
+
- spec/linner/wrapper_spec.rb
|
210
|
+
- spec/spec_helper.rb
|
211
|
+
- vendor/config.default.yml
|
187
212
|
homepage: https://github.com/saitowu/linner
|
188
213
|
licenses:
|
189
214
|
- MIT
|
@@ -208,4 +233,12 @@ rubygems_version: 2.0.3
|
|
208
233
|
signing_key:
|
209
234
|
specification_version: 4
|
210
235
|
summary: HTML5 Application Assembler
|
211
|
-
test_files:
|
236
|
+
test_files:
|
237
|
+
- spec/fixtures/app.js
|
238
|
+
- spec/fixtures/config.yml
|
239
|
+
- spec/linner/asset_spec.rb
|
240
|
+
- spec/linner/environment_spec.rb
|
241
|
+
- spec/linner/helper_spec.rb
|
242
|
+
- spec/linner/template_spec.rb
|
243
|
+
- spec/linner/wrapper_spec.rb
|
244
|
+
- spec/spec_helper.rb
|