inqlude 0.7.0 → 0.7.1
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 +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")
|