jsus 0.1.3 → 0.1.4
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.
- data/CHANGELOG +4 -0
- data/Manifest +0 -1
- data/Rakefile +2 -2
- data/bin/jsus +33 -30
- data/jsus.gemspec +6 -6
- data/lib/jsus/package.rb +10 -7
- data/lib/jsus/pool.rb +5 -4
- data/lib/jsus/source_file.rb +25 -7
- data/spec/lib/jsus/package_spec.rb +2 -2
- data/spec/lib/jsus/source_file_spec.rb +14 -11
- metadata +5 -5
data/CHANGELOG
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= Jsus Changelog
|
2
2
|
|
3
|
+
== Version 0.1.4
|
4
|
+
* Switched from OptiFlag to Choice for command-line parsing in jsus utility
|
5
|
+
* Miscellanous changes here and there
|
6
|
+
|
3
7
|
== Version 0.1.3
|
4
8
|
* Updated Pool class with dependency resolvers
|
5
9
|
* Added Package#include_external_dependencies!
|
data/Manifest
CHANGED
data/Rakefile
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
|
-
Echoe.new('jsus', '0.1.
|
4
|
+
Echoe.new('jsus', '0.1.4') do |g|
|
5
5
|
g.description = "Packager/compiler for js-files that resolves dependencies and can compile everything into one file, providing all the neccessary meta-info."
|
6
6
|
g.url = "http://github.com/markiz/jsus"
|
7
7
|
g.author = "Markiz, idea by Inviz (http://github.com/Inviz)"
|
8
8
|
g.email = "markizko@gmail.com"
|
9
9
|
g.ignore_pattern = ["nbproject/**/*", 'spec/*/public/**/*']
|
10
|
-
g.runtime_dependencies = ["activesupport", "json_pure", "rgl", "
|
10
|
+
g.runtime_dependencies = ["activesupport", "json_pure", "rgl", "choice"]
|
11
11
|
g.development_dependencies = ["rake"]
|
12
12
|
g.use_sudo = false
|
13
13
|
end
|
data/bin/jsus
CHANGED
@@ -1,47 +1,50 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'rubygems'
|
3
3
|
require 'jsus'
|
4
|
-
require '
|
4
|
+
require 'choice'
|
5
5
|
|
6
|
-
module JsusCL
|
7
|
-
extend OptiFlagSet
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
Choice.options do
|
8
|
+
option 'input_directory', :required => true do
|
9
|
+
short "-i"
|
10
|
+
long "--input-directory=DIRECTORY"
|
11
|
+
desc "Path to directory containing your package to compile."
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
option 'output_directory', :required => true do
|
15
|
+
short "-o"
|
16
|
+
long "--output-directory=DIRECTORY"
|
17
|
+
desc "Path to directory to output the compiled package."
|
17
18
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
|
20
|
+
option "dependencies", :required => false do
|
21
|
+
short "-d"
|
22
|
+
long "--with-dependencies=DIRECTORY"
|
23
|
+
desc "Path to directory containing packages this package relies on. " <<
|
24
|
+
"If set, all the packages will be compiled into a single file."
|
23
25
|
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
option "without_scripts_info", :required => false do
|
28
|
+
long "--without-scripts-info"
|
29
|
+
desc "When this flag is set, jsus doesn't generate scripts.json" <<
|
30
|
+
"file with general info about your package."
|
29
31
|
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
option "without_tree", :required => false do
|
34
|
+
long "--without-tree"
|
35
|
+
desc "When this flag is set, jsus doesn't generate tree.json file" <<
|
36
|
+
"with tree structure of your package."
|
35
37
|
end
|
36
38
|
|
37
|
-
and_process!
|
38
39
|
end
|
39
40
|
|
40
|
-
|
41
|
-
|
41
|
+
|
42
|
+
pool = if Choice.choices[:dependencies]
|
43
|
+
Jsus::Pool.new(Choice.choices[:dependencies])
|
42
44
|
end
|
43
|
-
package = Jsus::Package.new(
|
44
|
-
package.include_dependencies! if
|
45
|
-
|
46
|
-
package.
|
47
|
-
package.
|
45
|
+
package = Jsus::Package.new(Choice.choices[:input_directory], :pool => pool)
|
46
|
+
package.include_dependencies! if Choice.choices[:dependencies]
|
47
|
+
output_directory = Choice.choices[:output_directory]
|
48
|
+
package.compile(output_directory)
|
49
|
+
package.generate_scripts_info(output_directory) unless Choice.choices[:without_scripts_info]
|
50
|
+
package.generate_tree(output_directory) unless Choice.choices[:without_tree]
|
data/jsus.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{jsus}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Markiz, idea by Inviz (http://github.com/Inviz)"]
|
9
|
-
s.date = %q{2010-06-
|
9
|
+
s.date = %q{2010-06-07}
|
10
10
|
s.default_executable = %q{jsus}
|
11
11
|
s.description = %q{Packager/compiler for js-files that resolves dependencies and can compile everything into one file, providing all the neccessary meta-info.}
|
12
12
|
s.email = %q{markizko@gmail.com}
|
13
13
|
s.executables = ["jsus"]
|
14
14
|
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "TODO", "bin/jsus", "lib/jsus.rb", "lib/jsus/container.rb", "lib/jsus/package.rb", "lib/jsus/packager.rb", "lib/jsus/pool.rb", "lib/jsus/source_file.rb", "lib/jsus/topsortable.rb"]
|
15
|
-
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "bin/jsus", "
|
15
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "bin/jsus", "lib/jsus.rb", "lib/jsus/container.rb", "lib/jsus/package.rb", "lib/jsus/packager.rb", "lib/jsus/pool.rb", "lib/jsus/source_file.rb", "lib/jsus/topsortable.rb", "spec/data/Basic/README", "spec/data/Basic/app/javascripts/Orwik/Source/Library/Color.js", "spec/data/Basic/app/javascripts/Orwik/Source/Widget/Input/Input.Color.js", "spec/data/Basic/app/javascripts/Orwik/Source/Widget/Input/Input.js", "spec/data/Basic/app/javascripts/Orwik/Source/Widget/Widget.js", "spec/data/Basic/app/javascripts/Orwik/package.yml", "spec/data/ChainDependencies/app/javascripts/Class/Source/Class.js", "spec/data/ChainDependencies/app/javascripts/Class/package.yml", "spec/data/ChainDependencies/app/javascripts/Hash/Source/Hash.js", "spec/data/ChainDependencies/app/javascripts/Hash/package.yml", "spec/data/ChainDependencies/app/javascripts/Mash/Source/Mash.js", "spec/data/ChainDependencies/app/javascripts/Mash/package.yml", "spec/data/ExternalDependencies/app/javascripts/Orwik/Source/Test.js", "spec/data/ExternalDependencies/app/javascripts/Orwik/package.yml", "spec/data/OutsideDependencies/README", "spec/data/OutsideDependencies/app/javascripts/Core/Source/Class/Class.Extras.js", "spec/data/OutsideDependencies/app/javascripts/Core/Source/Class/Class.js", "spec/data/OutsideDependencies/app/javascripts/Core/Source/Native/Hash.js", "spec/data/OutsideDependencies/app/javascripts/Core/package.yml", "spec/data/OutsideDependencies/app/javascripts/Orwik/Source/Library/Color.js", "spec/data/OutsideDependencies/app/javascripts/Orwik/Source/Widget/Input/Input.Color.js", "spec/data/OutsideDependencies/app/javascripts/Orwik/Source/Widget/Input/Input.js", "spec/data/OutsideDependencies/app/javascripts/Orwik/Source/Widget/Widget.js", "spec/data/OutsideDependencies/app/javascripts/Orwik/package.yml", "spec/data/bad_test_source_one.js", "spec/data/bad_test_source_two.js", "spec/data/test_source_one.js", "spec/lib/jsus/container_spec.rb", "spec/lib/jsus/package_spec.rb", "spec/lib/jsus/packager_spec.rb", "spec/lib/jsus/pool_spec.rb", "spec/lib/jsus/source_file_spec.rb", "spec/lib/jsus/topsortable_spec.rb", "spec/shared/class_stubs.rb", "spec/spec.opts", "spec/spec_helper.rb", "jsus.gemspec"]
|
16
16
|
s.homepage = %q{http://github.com/markiz/jsus}
|
17
17
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Jsus", "--main", "README"]
|
18
18
|
s.require_paths = ["lib"]
|
@@ -28,20 +28,20 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
29
29
|
s.add_runtime_dependency(%q<json_pure>, [">= 0"])
|
30
30
|
s.add_runtime_dependency(%q<rgl>, [">= 0"])
|
31
|
-
s.add_runtime_dependency(%q<
|
31
|
+
s.add_runtime_dependency(%q<choice>, [">= 0"])
|
32
32
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
33
33
|
else
|
34
34
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
35
35
|
s.add_dependency(%q<json_pure>, [">= 0"])
|
36
36
|
s.add_dependency(%q<rgl>, [">= 0"])
|
37
|
-
s.add_dependency(%q<
|
37
|
+
s.add_dependency(%q<choice>, [">= 0"])
|
38
38
|
s.add_dependency(%q<rake>, [">= 0"])
|
39
39
|
end
|
40
40
|
else
|
41
41
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
42
42
|
s.add_dependency(%q<json_pure>, [">= 0"])
|
43
43
|
s.add_dependency(%q<rgl>, [">= 0"])
|
44
|
-
s.add_dependency(%q<
|
44
|
+
s.add_dependency(%q<choice>, [">= 0"])
|
45
45
|
s.add_dependency(%q<rake>, [">= 0"])
|
46
46
|
end
|
47
47
|
end
|
data/lib/jsus/package.rb
CHANGED
@@ -38,8 +38,7 @@ module Jsus
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def provides
|
41
|
-
source_files.map {|source| source.provides(:short => true) }.flatten
|
42
|
-
external_dependencies.map {|d| d.provides }.flatten
|
41
|
+
(source_files.map {|source| source.provides(:short => true) } + linked_external_dependencies.map {|d| d.provides }).flatten
|
43
42
|
end
|
44
43
|
|
45
44
|
def files
|
@@ -53,11 +52,15 @@ module Jsus
|
|
53
52
|
end
|
54
53
|
|
55
54
|
def external_dependencies
|
56
|
-
|
55
|
+
source_files.map {|source| source.external_dependencies }
|
57
56
|
end
|
58
57
|
|
59
|
-
def
|
60
|
-
@
|
58
|
+
def linked_external_dependencies
|
59
|
+
@linked_external_dependencies ||= Container.new
|
60
|
+
end
|
61
|
+
|
62
|
+
def linked_external_dependencies=(new_value)
|
63
|
+
@linked_external_dependencies = new_value
|
61
64
|
end
|
62
65
|
|
63
66
|
def description
|
@@ -65,7 +68,7 @@ module Jsus
|
|
65
68
|
end
|
66
69
|
|
67
70
|
def compile(directory = ".")
|
68
|
-
Packager.new(*(source_files.to_a +
|
71
|
+
Packager.new(*(source_files.to_a + linked_external_dependencies.to_a)).pack(File.join(directory, filename))
|
69
72
|
end
|
70
73
|
|
71
74
|
def generate_tree(directory = ".", filename = "tree.json")
|
@@ -94,7 +97,7 @@ module Jsus
|
|
94
97
|
|
95
98
|
def include_dependencies!
|
96
99
|
source_files.each do |source|
|
97
|
-
|
100
|
+
linked_external_dependencies << pool.lookup_dependencies(source)
|
98
101
|
end
|
99
102
|
end
|
100
103
|
|
data/lib/jsus/pool.rb
CHANGED
@@ -26,23 +26,24 @@ module Jsus
|
|
26
26
|
when Jsus::SourceFile
|
27
27
|
source_or_key
|
28
28
|
else
|
29
|
-
raise "Illegal lookup query. Expected String or SourceFile,
|
29
|
+
raise "Illegal lookup query. Expected String or SourceFile, " <<
|
30
|
+
"given #{source_or_key.inspect}, an instance of #{source_or_key.class.name}."
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
34
|
def lookup_direct_dependencies(source_or_source_key)
|
34
35
|
source = lookup(source_or_source_key)
|
35
|
-
result = source.
|
36
|
+
result = source.external_dependencies.map {|d| lookup(d)}
|
36
37
|
Container.new(*result)
|
37
38
|
end
|
38
39
|
|
39
40
|
def lookup_dependencies(source_or_source_key)
|
40
41
|
source = lookup(source_or_source_key)
|
41
42
|
result = Container.new
|
42
|
-
dependencies = lookup_direct_dependencies(source)
|
43
|
+
dependencies = lookup_direct_dependencies(source)
|
43
44
|
while !dependencies.empty?
|
44
45
|
dependencies.each { |d| result.push(d) }
|
45
|
-
dependencies = dependencies.map {|d| lookup_direct_dependencies(d).to_a }.flatten.
|
46
|
+
dependencies = dependencies.map {|d| lookup_direct_dependencies(d).to_a }.flatten.uniq
|
46
47
|
end
|
47
48
|
result.sort!
|
48
49
|
end
|
data/lib/jsus/source_file.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Jsus
|
2
2
|
class SourceFile
|
3
|
-
attr_accessor :header
|
4
3
|
attr_accessor :relative_filename
|
5
4
|
attr_accessor :filename
|
6
5
|
attr_accessor :content
|
@@ -35,9 +34,21 @@ module Jsus
|
|
35
34
|
end
|
36
35
|
|
37
36
|
# Public API
|
38
|
-
def
|
39
|
-
header
|
40
|
-
|
37
|
+
def header=(new_header)
|
38
|
+
@header = new_header
|
39
|
+
# prepare defaults
|
40
|
+
@header["description"] ||= ""
|
41
|
+
@header["requires"] = [@header["requires"] || []].flatten
|
42
|
+
@header["requires"].map! {|r| r.gsub(/^(\.)?\//, "") }
|
43
|
+
@header["provides"] = [@header["provides"] || []].flatten
|
44
|
+
end
|
45
|
+
|
46
|
+
def header
|
47
|
+
self.header = {} unless @header
|
48
|
+
@header
|
49
|
+
end
|
50
|
+
|
51
|
+
def dependencies(options = {})
|
41
52
|
if !options[:short] && package
|
42
53
|
header["requires"].map {|r| r.index("/") ? r : "#{package.name}/#{r}"}
|
43
54
|
else
|
@@ -46,8 +57,15 @@ module Jsus
|
|
46
57
|
end
|
47
58
|
alias_method :requires, :dependencies
|
48
59
|
|
49
|
-
def
|
50
|
-
|
60
|
+
def external_dependencies
|
61
|
+
dependencies(:short => true).select {|d| d.index("/") }
|
62
|
+
end
|
63
|
+
|
64
|
+
def internal_dependencies
|
65
|
+
dependencies(:short => true) - external_dependencies
|
66
|
+
end
|
67
|
+
|
68
|
+
def provides(options = {})
|
51
69
|
if !options[:short] && package
|
52
70
|
header["provides"].map {|p| "#{package.name}/#{p}"}
|
53
71
|
else
|
@@ -56,7 +74,7 @@ module Jsus
|
|
56
74
|
end
|
57
75
|
|
58
76
|
def description
|
59
|
-
header["description"]
|
77
|
+
header["description"]
|
60
78
|
end
|
61
79
|
|
62
80
|
def to_hash
|
@@ -123,8 +123,8 @@ describe Jsus::Package do
|
|
123
123
|
|
124
124
|
it "should include external dependencies into self" do
|
125
125
|
subject.include_dependencies!
|
126
|
-
subject.should have(3).
|
127
|
-
compiled = subject.compile
|
126
|
+
subject.should have(3).linked_external_dependencies
|
127
|
+
compiled = subject.compile(output_dir)
|
128
128
|
["Class", "Hash", "Mash"].each do |name|
|
129
129
|
compiled.should include(IO.read("#{lib_dir}/#{name}/Source/#{name}.js"))
|
130
130
|
end
|
@@ -34,13 +34,16 @@ describe Jsus::SourceFile do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should set all available fields from constructor" do
|
37
|
-
source = Jsus::SourceFile.new(:package
|
38
|
-
:
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
source.
|
43
|
-
source.
|
37
|
+
source = Jsus::SourceFile.new(:package => package,
|
38
|
+
:content => subject.content,
|
39
|
+
:filename => subject.filename,
|
40
|
+
:relative_filename => subject.relative_filename,
|
41
|
+
:header => subject.header)
|
42
|
+
source.package.should == package
|
43
|
+
source.content.should == subject.content
|
44
|
+
source.filename.should == subject.filename
|
45
|
+
source.relative_filename.should == subject.relative_filename
|
46
|
+
source.header.should == subject.header
|
44
47
|
end
|
45
48
|
|
46
49
|
it "should register package in pool from constructor" do
|
@@ -61,7 +64,7 @@ describe Jsus::SourceFile do
|
|
61
64
|
end
|
62
65
|
|
63
66
|
it "should work well when given single string instead of array" do
|
64
|
-
subject.header
|
67
|
+
subject.header = {"provides" => "Mash"}
|
65
68
|
subject.provides.should == ["Core/Mash"]
|
66
69
|
end
|
67
70
|
end
|
@@ -76,17 +79,17 @@ describe Jsus::SourceFile do
|
|
76
79
|
end
|
77
80
|
|
78
81
|
it "should work well when given single string instead of array" do
|
79
|
-
subject.header
|
82
|
+
subject.header = { "requires" => "Class" }
|
80
83
|
subject.dependencies.should == ["Core/Class"]
|
81
84
|
end
|
82
85
|
|
83
86
|
it "should not truncate package name in short form for external dependencies" do
|
84
|
-
subject.header
|
87
|
+
subject.header = { "requires" => "Mash/Mash" }
|
85
88
|
subject.dependencies(:short => true).should == ["Mash/Mash"]
|
86
89
|
end
|
87
90
|
|
88
91
|
it "should not prepend package name in full form for external dependencies" do
|
89
|
-
subject.header
|
92
|
+
subject.header = { "requires" => "Mash/Mash" }
|
90
93
|
subject.dependencies.should == ["Mash/Mash"]
|
91
94
|
end
|
92
95
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 4
|
9
|
+
version: 0.1.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Markiz, idea by Inviz (http://github.com/Inviz)
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-07 00:00:00 +04:00
|
18
18
|
default_executable: jsus
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
type: :runtime
|
55
55
|
version_requirements: *id003
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: choice
|
58
58
|
prerelease: false
|
59
59
|
requirement: &id004 !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
@@ -104,7 +104,6 @@ files:
|
|
104
104
|
- Rakefile
|
105
105
|
- TODO
|
106
106
|
- bin/jsus
|
107
|
-
- jsus.gemspec
|
108
107
|
- lib/jsus.rb
|
109
108
|
- lib/jsus/container.rb
|
110
109
|
- lib/jsus/package.rb
|
@@ -148,6 +147,7 @@ files:
|
|
148
147
|
- spec/shared/class_stubs.rb
|
149
148
|
- spec/spec.opts
|
150
149
|
- spec/spec_helper.rb
|
150
|
+
- jsus.gemspec
|
151
151
|
has_rdoc: true
|
152
152
|
homepage: http://github.com/markiz/jsus
|
153
153
|
licenses: []
|