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 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: []