html_package 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.