html_package 0.0.1 → 0.0.2

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.
@@ -7,8 +7,9 @@ module HTMLPackage
7
7
  desc "install", "installs a package"
8
8
  method_option "file", type: "string", required: true, banner: "(path or url to package file)"
9
9
  method_option "out", type: "string", required: true, banner: "(path to dir to install to)"
10
+ method_option "dev", type: "boolean", banner: "Install development dependencies?"
10
11
  def install
11
- package = HTMLPackage::Package.open options[:file]
12
+ package = HTMLPackage::Package.open options[:file], nil, options[:dev]
12
13
  HTMLPackage::Loader.new(package, options[:out]).load
13
14
  end
14
15
  end
@@ -1,4 +1,5 @@
1
1
  require "pathname"
2
+ require "file_utils"
2
3
 
3
4
  module HTMLPackage
4
5
  class Loader
@@ -6,31 +7,39 @@ module HTMLPackage
6
7
  def initialize(package, out_dir)
7
8
  @package = package
8
9
  @out_dir = Pathname.new(out_dir).expand_path
10
+ FileUtils.mkdir_p(@out_dir)
9
11
  end
10
12
 
11
- def load
12
- threads = @package.all_files.map do |uri|
13
- puts "loading: #{uri.blue}"
14
- Thread.new do
13
+ def load_file(uri, out_dir)
14
+ puts "loading: #{uri.blue}"
15
+ Thread.new do
16
+ begin
17
+ content = open(uri).read
18
+ outfile = out_dir + Pathname.new(uri).basename.to_s.gsub(/-([\d].?){3}.*\.js$/, ".js")
19
+
15
20
  begin
16
- content = open(uri).read
17
- outfile = @out_dir + Pathname.new(uri).basename
18
-
19
- begin
20
- File.open(outfile, "r") { |file| file.write content }
21
- rescue Exception => e
22
- puts "failed: File.write #{outfile.to_s.red}"
23
- puts " #{e.class.name.bold} #{e.message.red.bold}"
24
- puts
25
- end
26
- rescue OpenURI::HTTPError => e
27
- puts "failed: GET #{uri.red}"
21
+ File.open(outfile, "w") { |file| file.write content }
22
+ rescue Exception => e
23
+ puts "failed: File.write #{outfile.to_s.red}"
28
24
  puts " #{e.class.name.bold} #{e.message.red.bold}"
29
25
  puts
30
26
  end
31
-
27
+ rescue OpenURI::HTTPError => e
28
+ puts "failed: GET #{uri.red}"
29
+ puts " #{e.class.name.bold} #{e.message.red.bold}"
30
+ puts
32
31
  end
32
+
33
+ end
34
+ end
35
+
36
+ def load(options={})
37
+ threads = []
38
+
39
+ threads += @package.all_files.map do |uri|
40
+ load_file(uri, @out_dir)
33
41
  end
42
+
34
43
  threads.map(&:join)
35
44
  end
36
45
  end
@@ -1,4 +1,3 @@
1
- require "open-uri"
2
1
  require "nokogiri"
3
2
  require "colored"
4
3
 
@@ -12,21 +11,28 @@ module HTMLPackage
12
11
  SCRIPTS = "[type='#{JAVASCRIPT}']"
13
12
  SPADES = "[type='#{SPADE}']"
14
13
 
15
- SELF = "[rel=self]"
16
- DEPENDENCY = "[rel=dependency]"
14
+ SELF = "[rel='self']"
15
+ DEPENDENCY = "[rel='dependency']"
16
+ DEVELOPMENT_DEPENDENCY = "[rel$='dependency']"
17
17
 
18
- def self.open(uri, resource_type=SPADES)
18
+ def self.open(uri, resource_type=SPADES, development = false)
19
19
  puts "opening package: #{uri.green}"
20
- new Nokogiri::HTML(Kernel.open uri), resource_type
20
+ new Nokogiri::HTML(Kernel.open uri), resource_type, development
21
21
  rescue OpenURI::HTTPError => e
22
22
  puts "failed: GET #{uri.red}"
23
23
  puts " #{e.class.name.bold} #{e.message.red.bold}"
24
24
  puts
25
25
  end
26
26
 
27
- def initialize(document, resource_type)
27
+ def initialize(document, resource_type, development)
28
28
  @document = document
29
29
  @resource_type = resource_type
30
+ @development = development
31
+ if @development
32
+ @dependency_type = DEVELOPMENT_DEPENDENCY
33
+ else
34
+ @dependency_type = DEPENDENCY
35
+ end
30
36
  end
31
37
 
32
38
  def own_files
@@ -35,17 +41,17 @@ module HTMLPackage
35
41
 
36
42
  def dependency_packages
37
43
  @dependency_packages ||= begin
38
- links(DEPENDENCY, PACKAGES).map do |package_link|
44
+ links(@dependency_type, PACKAGES).map do |package_link|
39
45
  href = package_link[:href]
40
46
  puts "dependency: #{href.blue}"
41
- HTMLPackage::Package.open(href, @resource_type)
47
+ HTMLPackage::Package.open(href, @resource_type, @dependency_type)
42
48
  end
43
49
  end.compact
44
50
  end
45
51
 
46
52
  def dependency_files
47
53
  links = []
48
- links += direct_links = links(DEPENDENCY, @resource_type).map{|link| link[:href]}
54
+ links += direct_links = links(@dependency_type, @resource_type).map{|link| link[:href]}
49
55
 
50
56
  dependency_packages.each do |package|
51
57
  links += package.all_files
data/lib/html_package.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "open-uri"
2
+
1
3
  module HTMLPackage
2
4
  require "html_package/package"
3
5
  require "html_package/loader"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html_package
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-30 00:00:00.000000000Z
12
+ date: 2012-05-01 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Uses a special text/package+html content type to load packages of javascript
15
15
  files.