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.
- data/lib/html_package/cli.rb +2 -1
- data/lib/html_package/loader.rb +26 -17
- data/lib/html_package/package.rb +15 -9
- data/lib/html_package.rb +2 -0
- metadata +2 -2
data/lib/html_package/cli.rb
CHANGED
@@ -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
|
data/lib/html_package/loader.rb
CHANGED
@@ -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
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
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
|
data/lib/html_package/package.rb
CHANGED
@@ -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(
|
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(
|
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
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.
|
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-
|
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.
|