inqlude 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +23 -0
- data/{README → README.md} +0 -0
- data/TODO +24 -9
- data/accessing-inqlude-data.md +55 -0
- data/inqlude.gemspec +2 -1
- data/lib/cli.rb +36 -4
- data/lib/creator.rb +17 -32
- data/lib/distros/suse.rb +2 -2
- data/lib/downloader.rb +37 -0
- data/lib/exceptions.rb +2 -0
- data/lib/inqlude.rb +21 -15
- data/lib/json_object.rb +104 -0
- data/lib/kde_frameworks_creator.rb +14 -10
- data/lib/kde_frameworks_release.rb +14 -13
- data/lib/library.rb +4 -4
- data/lib/manifest.rb +165 -28
- data/lib/manifest_handler.rb +14 -16
- data/lib/verifier.rb +23 -48
- data/lib/version.rb +1 -1
- data/lib/view.rb +29 -26
- data/manifest-format.md +15 -0
- data/spec/data/inqlude-all-karchive.json +31 -0
- data/spec/data/inqlude-all.json +120 -0
- data/spec/data/invalid-schema.manifest +4 -0
- data/spec/data/karchive-release-5.4.manifest +29 -0
- data/spec/data/karchive-release.manifest +7 -7
- data/spec/data/karchive.readme +0 -6
- data/spec/data/newlib/newlib.manifest +11 -4
- data/spec/data/rendertest-generic.manifest +4 -1
- data/spec/integration/cli_create_spec.rb +24 -0
- data/spec/integration/cli_general_spec.rb +19 -0
- data/spec/integration/cli_get_involved_spec.rb +14 -0
- data/spec/integration/cli_help_spec.rb +21 -0
- data/spec/integration/cli_list_spec.rb +23 -0
- data/spec/integration/cli_verify_spec.rb +37 -0
- data/spec/integration/cli_view_spec.rb +28 -0
- data/spec/integration/spec_helper.rb +2 -0
- data/spec/{creator_spec.rb → unit/creator_spec.rb} +8 -41
- data/spec/unit/downloader_spec.rb +32 -0
- data/spec/unit/json_object_spec.rb +273 -0
- data/spec/{kde_frameworks_creator_spec.rb → unit/kde_frameworks_creator_spec.rb} +13 -14
- data/spec/{kde_frameworks_release_spec.rb → unit/kde_frameworks_release_spec.rb} +14 -10
- data/spec/{library_spec.rb → unit/library_spec.rb} +7 -7
- data/spec/{manifest_handler_spec.rb → unit/manifest_handler_spec.rb} +21 -17
- data/spec/unit/manifest_spec.rb +301 -0
- data/spec/{rpm_manifestizer_spec.rb → unit/rpm_manifestizer_spec.rb} +0 -0
- data/spec/{settings_spec.rb → unit/settings_spec.rb} +0 -0
- data/spec/{spec_helper.rb → unit/spec_helper.rb} +10 -12
- data/spec/{verifier_spec.rb → unit/verifier_spec.rb} +24 -15
- data/spec/{view_spec.rb → unit/view_spec.rb} +38 -7
- data/view/all.html.haml +4 -4
- data/view/commercial.html.haml +1 -1
- data/view/development.html.haml +3 -3
- data/view/get.html.haml +11 -2
- data/view/group.html.haml +4 -4
- data/view/index.html.haml +1 -1
- data/view/library.html.haml +8 -9
- data/view/unreleased.html.haml +1 -1
- data/yes_ship_it.conf +3 -0
- metadata +67 -51
- data/spec/manifest_spec.rb +0 -63
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 29975395e8bb39f24d4d623ae4b1ee12540143eb
|
4
|
+
data.tar.gz: 7619b8dc07af9e3cd89fdd8c35736c617112f761
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9572cc4a485616494f4a475edd02e9b6bc41707047951a44c8870091b442dc33f27862ab298a8173963639942ef253a49238d43456a5afd33dd86cd9fba3e145
|
7
|
+
data.tar.gz: 95a40483eb41571935499b36892128d36b2ee76c6ed0646e58c093e828c3e2411bc6f83562b2fa449d83e3b88e0db4ae4211929e8ac0821209c5a3788e4d1d11
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Change log of Inqlude
|
2
|
+
|
3
|
+
## Version 0.7.1
|
4
|
+
|
5
|
+
* `create_kde_frameworks` command:
|
6
|
+
|
7
|
+
Generate links from name
|
8
|
+
|
9
|
+
The standard links for frameworks such as home page, mailing list,
|
10
|
+
git repository always follow the same scheme. So instead of parsing
|
11
|
+
them from the README.md generate them from the name of the framework.
|
12
|
+
|
13
|
+
This is more flexible, allows to change all links at once, and is
|
14
|
+
compatible with the frameworks where the links have been removed from
|
15
|
+
the READMEs.
|
16
|
+
|
17
|
+
* Accept windows and ubuntu as package category
|
18
|
+
* Implement `inqlude download`
|
19
|
+
* Generate inqlude-all.json on Inqlude website
|
20
|
+
|
21
|
+
## Version 0.7.0
|
22
|
+
|
23
|
+
* First alpha release
|
data/{README → README.md}
RENAMED
File without changes
|
data/TODO
CHANGED
@@ -1,8 +1,3 @@
|
|
1
|
-
# 0.7 (Alpha) (first announcement, ready for early adopters)
|
2
|
-
|
3
|
-
* Release it
|
4
|
-
|
5
|
-
|
6
1
|
# 0.8 (Alpha) (second announcement, ready for contributors)
|
7
2
|
|
8
3
|
* Create ROADMAP.md
|
@@ -10,20 +5,25 @@
|
|
10
5
|
* Move all issues from this file to GitHub
|
11
6
|
* Add Upstream.get_involved for all issues where possible
|
12
7
|
|
8
|
+
* Split cli #23
|
9
|
+
* Sort out client naming
|
10
|
+
|
11
|
+
* Point KDE Frameworks homepages to http://api.kde.org
|
12
|
+
|
13
13
|
* Release it
|
14
14
|
|
15
15
|
|
16
16
|
# 0.9 (Beta) (ready for contributors of meta data, schema stable)
|
17
17
|
|
18
|
-
* Replace manifest hash by Manifest object
|
19
|
-
|
20
18
|
* Add display name High Priority #12
|
21
19
|
* Check platform attribute for valid entries High Priority #18
|
22
20
|
* Check maturity for valid values High Priority #16
|
23
|
-
* Link to license text Medium Priority #14
|
24
21
|
* Add a comment field for authors Medium Priority #15
|
25
22
|
* Add attribute for screenshots Medium Priority #10
|
26
23
|
* Add bugtracker URL Low Priority #7
|
24
|
+
* Add vcs:git:clone_url
|
25
|
+
* Use SPDX license identifiers (http://spdx.org/licenses/)
|
26
|
+
* Link to license text Medium Priority #14
|
27
27
|
|
28
28
|
* Define maturity scale
|
29
29
|
* State policy for inclusion of libraries (at least one stable release, no qt3,
|
@@ -32,11 +32,16 @@
|
|
32
32
|
tags in meta data for bound library)
|
33
33
|
|
34
34
|
* Show Qt5 compability High Priority #20
|
35
|
+
|
36
|
+
* Define how to handle dependencies between libraries on inqlude.org
|
37
|
+
|
35
38
|
* Check links Medium Priority #11
|
36
39
|
* Add command for showing library details High Priority #1
|
37
40
|
|
38
41
|
* Turn alpha ribbon into beta ribbon on web site
|
39
42
|
|
43
|
+
* Commit hook on server to verify the manifests
|
44
|
+
|
40
45
|
* Release it
|
41
46
|
|
42
47
|
|
@@ -67,11 +72,21 @@
|
|
67
72
|
* Get manifests from build service
|
68
73
|
* List libraries with available packages
|
69
74
|
* Properly identify repository (use vendor?)
|
75
|
+
* Dependencies to other libraries
|
76
|
+
* Get from list_dependencies in kde build meta data
|
77
|
+
* Qt version information
|
78
|
+
* minimum_qt_version = [ 4.2.1, 5.1.0 ]
|
79
|
+
or
|
80
|
+
* split manifests between Qt 4 and Qt 5 (directory with Qt version suffix)
|
81
|
+
* Check installation experience on Mac
|
82
|
+
* Check installation experience on Windows
|
83
|
+
* User client without dependencies on git and Ruby
|
84
|
+
* Integration tests for download/list/etc. functionality
|
85
|
+
* Define way to manage local downloads
|
70
86
|
|
71
87
|
* Release it
|
72
88
|
|
73
89
|
|
74
90
|
# Later
|
75
91
|
|
76
|
-
* Create more friendly progress display for cache creation Low Priority #3
|
77
92
|
* Add some quality indication Low Priority #17
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Accessing Inqlude data
|
2
|
+
|
3
|
+
The data of the Inqlude library archive is maintained in the
|
4
|
+
[inqlude-data](https://github.com/cornelius/inqlude-data) repository. It
|
5
|
+
includes the meta data for all libraries collected in Inqlude. There are various
|
6
|
+
ways to access this data from a client. They are described in this document.
|
7
|
+
|
8
|
+
## Using the git repository
|
9
|
+
|
10
|
+
The most direct way is to clone the [meta data git repository](https://github.com/cornelius/inqlude-data) and work on the
|
11
|
+
data locally. The repository contains a set of directories with manifests
|
12
|
+
following the [Inqlude manifest specification](https://github.com/cornelius/inqlude/blob/master/manifest-format.md).
|
13
|
+
The data can be updated with standard git commands such as `git pull`.
|
14
|
+
|
15
|
+
## All data in one JSON
|
16
|
+
|
17
|
+
There is a JSON file available at http://inqlude.org/inqlude-all.json, which
|
18
|
+
contains the data for the latest version of all libraries. This is the most
|
19
|
+
convenient way, if you just want to have the current data.
|
20
|
+
|
21
|
+
The file is updated whenever the data in the inqlude-data git repository is
|
22
|
+
updated.
|
23
|
+
|
24
|
+
The file is simply wrapping the manifests in a JSON array:
|
25
|
+
|
26
|
+
```json
|
27
|
+
[
|
28
|
+
{
|
29
|
+
"$schema": "http://inqlude.org/schema/release-manifest-v1#",
|
30
|
+
"name": "attica",
|
31
|
+
"release_date": "2013-06-12",
|
32
|
+
"version": "0.4.2",
|
33
|
+
...
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"$schema": "http://inqlude.org/schema/release-manifest-v1#",
|
37
|
+
"name": "avahi-qt",
|
38
|
+
"release_date": "2012-02-15",
|
39
|
+
"version": "0.6.31",
|
40
|
+
...
|
41
|
+
}
|
42
|
+
]
|
43
|
+
```
|
44
|
+
|
45
|
+
## Using a client
|
46
|
+
|
47
|
+
There currently are two clients to access the Inqlude data.
|
48
|
+
|
49
|
+
The preferred way to access the data as a user of libraries is the native
|
50
|
+
command line client written in C++. Its source is maintained as the
|
51
|
+
[inqlude-client project](https://projects.kde.org/projects/playground/sdk/inqlude-client).
|
52
|
+
|
53
|
+
The other client is the [Inqlude admin tool](https://github.com/cornelius/inqlude).
|
54
|
+
It provides commands to access the meta data. It also has commands to manipulate
|
55
|
+
and verify meta data.
|
data/inqlude.gemspec
CHANGED
@@ -23,7 +23,8 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency "xdg"
|
24
24
|
|
25
25
|
s.add_development_dependency "rspec", "~>3"
|
26
|
-
s.add_development_dependency "given_filesystem"
|
26
|
+
s.add_development_dependency "given_filesystem", ">=0.1.2"
|
27
|
+
s.add_development_dependency "cli_tester"
|
27
28
|
|
28
29
|
s.files = `git ls-files`.split("\n")
|
29
30
|
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
data/lib/cli.rb
CHANGED
@@ -20,6 +20,7 @@ class Cli < Thor
|
|
20
20
|
|
21
21
|
class_option :version, :type => :boolean, :desc => "Show version"
|
22
22
|
class_option :offline, :type => :boolean, :desc => "Work offline"
|
23
|
+
class_option :manifest_dir, :type => :string, :desc => "Manifest directory"
|
23
24
|
|
24
25
|
def self.settings= s
|
25
26
|
@@settings = s
|
@@ -86,7 +87,10 @@ actual domain."
|
|
86
87
|
@@settings.manifest_path = options[:manifest_dir]
|
87
88
|
end
|
88
89
|
|
89
|
-
|
90
|
+
manifest_handler = ManifestHandler.new(@@settings)
|
91
|
+
manifest_handler.read_remote
|
92
|
+
|
93
|
+
view = View.new(manifest_handler)
|
90
94
|
view.enable_disqus = options[:enable_disqus]
|
91
95
|
view.enable_search = !options[:disable_search]
|
92
96
|
view.create options[:output_dir]
|
@@ -110,6 +114,8 @@ actual domain."
|
|
110
114
|
exit 1
|
111
115
|
end
|
112
116
|
|
117
|
+
errors = []
|
118
|
+
|
113
119
|
if filename
|
114
120
|
result = v.verify_file filename
|
115
121
|
result.print_result
|
@@ -117,7 +123,6 @@ actual domain."
|
|
117
123
|
handler = ManifestHandler.new @@settings
|
118
124
|
handler.read_remote
|
119
125
|
count_ok = 0
|
120
|
-
count_error = 0
|
121
126
|
handler.libraries.each do |library|
|
122
127
|
library.manifests.each do |manifest|
|
123
128
|
result = v.verify manifest
|
@@ -125,12 +130,23 @@ actual domain."
|
|
125
130
|
if result.valid?
|
126
131
|
count_ok += 1
|
127
132
|
else
|
128
|
-
|
133
|
+
errors.push result
|
129
134
|
end
|
130
135
|
end
|
131
136
|
end
|
137
|
+
puts
|
132
138
|
puts "#{handler.manifests.count} manifests checked. #{count_ok} ok, " +
|
133
|
-
"#{
|
139
|
+
"#{errors.count} with error."
|
140
|
+
if !errors.empty?
|
141
|
+
puts
|
142
|
+
puts "Errors:"
|
143
|
+
errors.each do |error|
|
144
|
+
puts " #{error.name}"
|
145
|
+
error.errors.each do |e|
|
146
|
+
puts " #{e}"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
134
150
|
end
|
135
151
|
end
|
136
152
|
|
@@ -260,10 +276,26 @@ actual domain."
|
|
260
276
|
end
|
261
277
|
end
|
262
278
|
|
279
|
+
desc "download", "Download source code archive"
|
280
|
+
def download(name)
|
281
|
+
handler = ManifestHandler.new(@@settings)
|
282
|
+
handler.read_remote
|
283
|
+
manifest = handler.manifest(name)
|
284
|
+
if !manifest
|
285
|
+
STDERR.outs "Manifest for '#{name}' not found"
|
286
|
+
exit 1
|
287
|
+
else
|
288
|
+
Downloader.new(handler, STDOUT).download(name, Dir.pwd)
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
263
292
|
private
|
264
293
|
|
265
294
|
def process_global_options options
|
266
295
|
@@settings.offline = options[:offline]
|
296
|
+
if options[:manifest_dir]
|
297
|
+
@@settings.manifest_path = options[:manifest_dir]
|
298
|
+
end
|
267
299
|
end
|
268
300
|
|
269
301
|
end
|
data/lib/creator.rb
CHANGED
@@ -41,13 +41,11 @@ class Creator
|
|
41
41
|
mh.read_remote
|
42
42
|
|
43
43
|
m = mh.manifest @name
|
44
|
-
m.
|
45
|
-
m.
|
46
|
-
m["version"] = version
|
47
|
-
m["release_date"] = release_date
|
44
|
+
m.version = version
|
45
|
+
m.release_date = release_date
|
48
46
|
|
49
47
|
File.open( filename, "w" ) do |file|
|
50
|
-
file.puts
|
48
|
+
file.puts m.to_json
|
51
49
|
end
|
52
50
|
end
|
53
51
|
|
@@ -56,49 +54,36 @@ class Creator
|
|
56
54
|
end
|
57
55
|
|
58
56
|
def create_manifest version, release_date
|
59
|
-
m =
|
60
|
-
m
|
61
|
-
m
|
62
|
-
m
|
63
|
-
m["release_date"] = release_date
|
64
|
-
m["summary"] = ""
|
65
|
-
m["urls"] = { "homepage" => "", "vcs" => "", "download" => "" }
|
66
|
-
m["licenses"] = [ "" ]
|
67
|
-
m["description"] = ""
|
57
|
+
m = ManifestRelease.new
|
58
|
+
m.name = @name
|
59
|
+
m.version = version
|
60
|
+
m.release_date = release_date
|
68
61
|
if version == "edge"
|
69
|
-
m
|
62
|
+
m.maturity = "edge"
|
70
63
|
else
|
71
|
-
m
|
64
|
+
m.maturity = "stable"
|
72
65
|
end
|
73
|
-
m
|
74
|
-
m["platforms"] = [ "Linux" ]
|
75
|
-
m["packages"] = { "source" => "" }
|
66
|
+
m.platforms = [ "Linux" ]
|
76
67
|
m
|
77
68
|
end
|
78
69
|
|
79
70
|
def write_manifest manifest
|
80
71
|
filename = File.join @settings.manifest_path, @name, @name
|
81
|
-
if manifest
|
82
|
-
filename += ".#{manifest
|
72
|
+
if manifest.release_date
|
73
|
+
filename += ".#{manifest.release_date}"
|
83
74
|
end
|
84
75
|
filename += ".manifest"
|
85
76
|
|
86
77
|
File.open( filename, "w" ) do |file|
|
87
|
-
file.puts
|
78
|
+
file.puts manifest.to_json
|
88
79
|
end
|
89
80
|
end
|
90
81
|
|
91
82
|
def create_generic_manifest
|
92
|
-
m =
|
93
|
-
m
|
94
|
-
m
|
95
|
-
m["
|
96
|
-
m["summary"] = ""
|
97
|
-
m["urls"] = { "homepage" => "", "vcs" => "" }
|
98
|
-
m["licenses"] = [ "" ]
|
99
|
-
m["description"] = ""
|
100
|
-
m["authors"] = [ "" ]
|
101
|
-
m["platforms"] = [ "Linux" ]
|
83
|
+
m = ManifestGeneric.new
|
84
|
+
m.name = @name
|
85
|
+
m.display_name = @name.capitalize
|
86
|
+
m.platforms = [ "Linux" ]
|
102
87
|
m
|
103
88
|
end
|
104
89
|
|
data/lib/distros/suse.rb
CHANGED
@@ -46,7 +46,7 @@ class Suse
|
|
46
46
|
installed = Array.new
|
47
47
|
handler.manifests.each do |manifest|
|
48
48
|
unknown += 1
|
49
|
-
package_section = manifest
|
49
|
+
package_section = manifest.packages.openSUSE
|
50
50
|
next unless package_section
|
51
51
|
name_section = package_section[name]
|
52
52
|
next unless name_section
|
@@ -84,7 +84,7 @@ class Suse
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def get_package_name manifest
|
87
|
-
package_section = manifest
|
87
|
+
package_section = manifest.packages.openSUSE
|
88
88
|
if !package_section
|
89
89
|
STDERR.puts "No packages section in metadata"
|
90
90
|
else
|
data/lib/downloader.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2014 Cornelius Schumacher <schumacher@kde.org>
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
|
+
|
17
|
+
class Downloader
|
18
|
+
def initialize(handler, output)
|
19
|
+
@handler = handler
|
20
|
+
@output = output
|
21
|
+
end
|
22
|
+
|
23
|
+
def download(name, directory)
|
24
|
+
@output.puts "Downloading #{name}"
|
25
|
+
url = @handler.manifest(name).packages.source
|
26
|
+
@output.puts " from: #{url}"
|
27
|
+
file_path = File.join(directory, File.basename(url))
|
28
|
+
@output.puts " to: #{file_path}"
|
29
|
+
File.open(file_path, "w") do |f|
|
30
|
+
f.write(read_from_url(url))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def read_from_url(url)
|
35
|
+
URI.parse(url).open.read
|
36
|
+
end
|
37
|
+
end
|
data/lib/exceptions.rb
ADDED
data/lib/inqlude.rb
CHANGED
@@ -8,18 +8,24 @@ require "json-schema"
|
|
8
8
|
require "kramdown"
|
9
9
|
require "xdg"
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
11
|
+
class InqludeError < StandardError
|
12
|
+
end
|
13
|
+
|
14
|
+
require_relative("json_object")
|
15
|
+
require_relative("exceptions")
|
16
|
+
require_relative("version")
|
17
|
+
require_relative("cli")
|
18
|
+
require_relative("manifest_handler")
|
19
|
+
require_relative("view")
|
20
|
+
require_relative("distro")
|
21
|
+
require_relative("rpm_manifestizer")
|
22
|
+
require_relative("settings")
|
23
|
+
require_relative("upstream")
|
24
|
+
require_relative("verifier")
|
25
|
+
require_relative("library")
|
26
|
+
require_relative("creator")
|
27
|
+
require_relative("git_hub_tool")
|
28
|
+
require_relative("manifest")
|
29
|
+
require_relative("kde_frameworks_creator")
|
30
|
+
require_relative("kde_frameworks_release")
|
31
|
+
require_relative("downloader")
|