jsus 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -5,7 +5,6 @@ README
5
5
  Rakefile
6
6
  TODO
7
7
  bin/jsus
8
- jsus.gemspec
9
8
  lib/jsus.rb
10
9
  lib/jsus/container.rb
11
10
  lib/jsus/package.rb
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.3') do |g|
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", "optiflag"]
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 'optiflag'
4
+ require 'choice'
5
5
 
6
- module JsusCL
7
- extend OptiFlagSet
8
6
 
9
- flag "input_directory" do
10
- alternate_forms "i"
11
- description "Path to directory containing your package to compile."
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
- flag "output_directory" do
15
- alternate_forms "o"
16
- description "Path to directory to output the compiled package."
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
- optional_flag "dependencies" do
20
- alternate_forms "d"
21
- description "Path to directory containing packages this package relies on. " <<
22
- "If set, all the packages will be compiled into a single file"
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
- optional_flag "scripts_info" do
26
- default "yes"
27
- description "Generates scripts.json file with general info about your package"
28
- value_in_set ["yes", "no"]
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
- optional_flag "tree_info" do
32
- default "yes"
33
- description "Generates scripts.json file with tree structure of your package"
34
- value_in_set ["yes", "no"]
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
- pool = if JsusCL.flags.dependencies?
41
- Jsus::Pool.new(JsusCL.flags.dependencies)
41
+
42
+ pool = if Choice.choices[:dependencies]
43
+ Jsus::Pool.new(Choice.choices[:dependencies])
42
44
  end
43
- package = Jsus::Package.new(JsusCL.flags.input_directory, :pool => pool)
44
- package.include_dependencies! if JsusCL.flags.dependencies?
45
- package.compile(JsusCL.flags.output_directory)
46
- package.generate_scripts_info(JsusCL.flags.output_directory) if JsusCL.flags.scripts_info == "yes"
47
- package.generate_tree(JsusCL.flags.output_directory) if JsusCL.flags.scripts_info == "yes"
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.3"
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-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", "jsus.gemspec", "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"]
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<optiflag>, [">= 0"])
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<optiflag>, [">= 0"])
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<optiflag>, [">= 0"])
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
- @external_dependencies ||= Container.new
55
+ source_files.map {|source| source.external_dependencies }
57
56
  end
58
57
 
59
- def external_dependencies=(new_value)
60
- @external_dependencies = new_value
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 + external_dependencies.to_a)).pack(File.join(directory, filename))
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
- self.external_dependencies << pool.lookup_dependencies(source)
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, given #{source_or_key.class.name}."
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.dependencies(:short => true).select {|d| d =~ %r(/)}.map {|d| lookup(d)}
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).to_a
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.compact.uniq
46
+ dependencies = dependencies.map {|d| lookup_direct_dependencies(d).to_a }.flatten.uniq
46
47
  end
47
48
  result.sort!
48
49
  end
@@ -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 dependencies(options = {})
39
- header["requires"] = [header["requires"] || []].flatten
40
- header["requires"].map! {|r| r.gsub(/^\//, "") }
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 provides(options = {})
50
- header["provides"] = [header["provides"] || []].flatten
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).external_dependencies
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 => 1, :content => 2, :filename => 3,
38
- :relative_filename => 4, :header => 5)
39
- source.package.should == 1
40
- source.content.should == 2
41
- source.filename.should == 3
42
- source.relative_filename.should == 4
43
- source.header.should == 5
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["provides"] = "Mash"
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["requires"] = "Class"
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["requires"] = "Mash/Mash"
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["requires"] = "Mash/Mash"
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
- - 3
9
- version: 0.1.3
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-06 00:00:00 +04:00
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: optiflag
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: []