package-info 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.
- checksums.yaml +4 -4
- data/lib/package-info.rb +50 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00b064e6fdd8b5fbed78d90f63be32367a3ddd3e
|
4
|
+
data.tar.gz: 6cf1e61168b499e936f70f6df9024cdc258e0fa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bcce3bc3f4074d1c3ae6c128f89a5518bcd36f3efdf9b0005605f3e30833e60350055a2314cab65d6fd431dff32fcb5be90ccc053acdf49e909ac8d0f107507
|
7
|
+
data.tar.gz: 9a2213e9519aa52da1d98428f8266f95bd6e5ac973a9a895ebd77707eef130bd71a0c917ecb4aef5aa5c59c3faba6ac0f96e46e4b59493c7e57e01db87428215
|
data/lib/package-info.rb
CHANGED
@@ -9,7 +9,7 @@ class PackageInfo
|
|
9
9
|
LICENSE_TAGS = ["gpl", "mit", "license", "license"]
|
10
10
|
|
11
11
|
LICENSE_TITLE_TAGS = ["GPL", "GNU General Public License", "LGPL-2+",
|
12
|
-
"LGPL-2.1+", "LGPL-2", "LGPL-3", "LGPL-3+",
|
12
|
+
"LGPL-2.1+", "LGPL-2", "LGPL-3", "LGPL-3+",
|
13
13
|
"MPL-1.1", "BSD-2", "zlib", "MIT", "MPL", "ISC",
|
14
14
|
"BSD", "Boost", "Apache", "BSD-3", "Cisco",
|
15
15
|
"Apache 2.0", "Apache 1.0", "Apache 1.1", "LGPL",
|
@@ -25,6 +25,10 @@ class PackageInfo
|
|
25
25
|
|
26
26
|
FORMAT_TAGS = ["format", "html", "txt"]
|
27
27
|
|
28
|
+
APT_SUMMARY_FIELDS = ["Package", "Description-en", "Version", "Homepage"]
|
29
|
+
|
30
|
+
LICENSE_SUMMARY_TAGS = ["License"]
|
31
|
+
|
28
32
|
def create_package_file filename = "packages@#{`hostname`}.csv"
|
29
33
|
write_header(filename)
|
30
34
|
CSV.open(filename, "ab") do |csv|
|
@@ -32,6 +36,16 @@ class PackageInfo
|
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
39
|
+
def create_package_file_summary filename = "packages@#{`hostname`}.csv"
|
40
|
+
write_header_summary(filename)
|
41
|
+
CSV.open(filename, "ab") do |csv|
|
42
|
+
get_package_list.each {|package|
|
43
|
+
puts "#{get_package_info_summary(package).values}"
|
44
|
+
csv << get_package_info_summary(package).values
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
35
49
|
def get_package_list
|
36
50
|
`dpkg --get-selections | grep -v "deinstall" | cut -f1 | cut -d':' -f1`.split("\n")
|
37
51
|
end
|
@@ -41,6 +55,21 @@ class PackageInfo
|
|
41
55
|
[parse_package_info(package), parse_copyright_file(package)].inject(:merge)
|
42
56
|
end
|
43
57
|
|
58
|
+
def get_package_info_summary package
|
59
|
+
puts "retrieve summary for #{package}"
|
60
|
+
[parse_package_info_summary(package), parse_copyright_file_summary(package)].inject(:merge)
|
61
|
+
end
|
62
|
+
|
63
|
+
def parse_package_info_summary package
|
64
|
+
fields, string_fields = {}, `apt-cache show #{package}`.split("\n")
|
65
|
+
string_fields.each do |field|
|
66
|
+
if APT_SUMMARY_FIELDS.include?(field.split(": ")[0])
|
67
|
+
fields[field.split(": ")[0]] = field.split(": ")[1]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
fields
|
71
|
+
end
|
72
|
+
|
44
73
|
def parse_package_info package
|
45
74
|
fields, string_fields = {}, `apt-cache show #{package}`.split("\n")
|
46
75
|
string_fields.each {|field| fields[field.split(": ")[0]] = field.split(": ")[1]}
|
@@ -53,6 +82,12 @@ class PackageInfo
|
|
53
82
|
is_dep_5_compatible?(text) ? parse_dep_5_compatible(text) : parse_non_dep_5_compatible(text)
|
54
83
|
end
|
55
84
|
|
85
|
+
def parse_copyright_file_summary package
|
86
|
+
return {} if !File.exists?("/usr/share/doc/#{package}/copyright")
|
87
|
+
text = File.read("/usr/share/doc/#{package}/copyright")
|
88
|
+
parse_license_summary(text)
|
89
|
+
end
|
90
|
+
|
56
91
|
private
|
57
92
|
|
58
93
|
def write_header filename
|
@@ -61,6 +96,12 @@ class PackageInfo
|
|
61
96
|
end
|
62
97
|
end
|
63
98
|
|
99
|
+
def write_header_summary filename
|
100
|
+
CSV.open(filename, "w") do |csv|
|
101
|
+
csv << APT_SUMMARY_FIELDS + LICENSE_SUMMARY_TAGS
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
64
105
|
def is_dep_5_compatible? text
|
65
106
|
text.include?("Copyright:")
|
66
107
|
end
|
@@ -99,12 +140,19 @@ class PackageInfo
|
|
99
140
|
when match_tags(DISCLAIMER_TAGS, paragraph)
|
100
141
|
fields["Disclaimer"] += paragraph
|
101
142
|
when match_tags(FORMAT_TAGS, paragraph)
|
102
|
-
fields["Format"] += paragraph
|
143
|
+
fields["Format"] += paragraph
|
103
144
|
end
|
104
145
|
end
|
105
146
|
fields
|
106
147
|
end
|
107
148
|
|
149
|
+
def parse_license_summary text
|
150
|
+
fields, license_tags = {"License" => ""}, []
|
151
|
+
LICENSE_TITLE_TAGS.each {|tag| license_tags << tag if text.include?(tag) }
|
152
|
+
fields["License"] = license_tags.join(", ")
|
153
|
+
fields
|
154
|
+
end
|
155
|
+
|
108
156
|
def parse_dep_5_line line, field_name, field_content
|
109
157
|
if line.include?(": ")
|
110
158
|
field_name, field_content = line.split(": ")[0], line.split(": ")[1]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: package-info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Angelos Kapsimanis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Retrieves information for all installed packages
|