inqlude 0.8.0 → 0.9.0
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/.rspec +1 -0
- data/.travis.yml +7 -3
- data/CHANGELOG.md +9 -0
- data/Gemfile +4 -0
- data/README.md +4 -0
- data/lib/cli.rb +24 -26
- data/lib/cli_controller.rb +24 -0
- data/lib/inqlude.rb +1 -0
- data/lib/kde_frameworks_release.rb +6 -1
- data/lib/manifest_handler.rb +44 -1
- data/lib/verifier.rb +4 -0
- data/lib/version.rb +1 -1
- data/lib/view.rb +62 -15
- data/manifest-format.md +30 -5
- data/spec/data/inqlude-all.json +11 -2
- data/spec/data/manifests/awesomelib/awesomelib.2013-09-08.manifest +4 -2
- data/spec/data/manifests/bleedingedge/bleedingedge.2012-01-01.manifest +3 -0
- data/spec/data/manifests/commercial/commercial.manifest +3 -0
- data/spec/data/manifests/newlib/newlib.manifest +1 -0
- data/spec/data/missing-topics/miss-topics/miss-topics.manifest +2 -1
- data/spec/integration/cli_verify_spec.rb +2 -0
- data/spec/integration/cli_view_spec.rb +102 -0
- data/spec/integration/spec_helper.rb +3 -0
- data/spec/online/cli_view_spec.rb +64 -0
- data/spec/online/spec_helper.rb +5 -0
- data/spec/stubs/qmake/qmake +2 -0
- data/spec/unit/cli_controller_spec.rb +51 -0
- data/spec/unit/kde_frameworks_release_spec.rb +36 -23
- data/spec/unit/manifest_handler_spec.rb +15 -1
- data/spec/unit/manifest_spec.rb +1 -1
- data/spec/unit/spec_helper.rb +10 -0
- data/spec/unit/view_spec.rb +68 -0
- data/topics/Manifest_updater/README.md +19 -0
- data/topics/Manifest_updater/app.js +43 -0
- data/topics/Manifest_updater/manifests/example/example.manifest +20 -0
- data/topics/Manifest_updater/package.json +9 -0
- data/topics/Manifest_updater/topics.csv +1 -0
- data/topics/Manifest_updater/update_manifests/example/example.manifest +24 -0
- data/topics/topics.csv +3 -0
- data/view/{about.html.haml → one-column/about.html.haml} +0 -0
- data/view/{all.html.haml → one-column/all.html.haml} +0 -0
- data/view/{commercial.html.haml → one-column/commercial.html.haml} +0 -0
- data/view/{contribute.html.haml → one-column/contribute.html.haml} +0 -0
- data/view/{development.html.haml → one-column/development.html.haml} +0 -0
- data/view/{favicon.ico → one-column/favicon.ico} +0 -0
- data/view/{get.html.haml → one-column/get.html.haml} +0 -0
- data/view/{group.html.haml → one-column/group.html.haml} +0 -0
- data/view/{index.html.haml → one-column/index.html.haml} +0 -0
- data/view/{layout.html.haml → one-column/layout.html.haml} +0 -0
- data/view/{library.html.haml → one-column/library.html.haml} +1 -1
- data/view/{public → one-column/public}/inqlude.css +0 -0
- data/view/{search.html.haml → one-column/search.html.haml} +0 -0
- data/view/{unreleased.html.haml → one-column/unreleased.html.haml} +0 -0
- data/view/two-column/about.html.haml +34 -0
- data/view/two-column/all.html.haml +47 -0
- data/view/two-column/contribute.html.haml +49 -0
- data/view/two-column/favicon.ico +0 -0
- data/view/two-column/get.html.haml +57 -0
- data/view/two-column/group.html.haml +52 -0
- data/view/two-column/index.html.haml +194 -0
- data/view/two-column/ios.ico +0 -0
- data/view/two-column/layout.html.haml +102 -0
- data/view/two-column/library.html.haml +64 -0
- data/view/two-column/public/inqlude.css +265 -0
- data/view/two-column/search.html.haml +20 -0
- data/view/two-column/topic.html.haml +47 -0
- metadata +41 -16
@@ -1,9 +1,7 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe KdeFrameworksRelease do
|
4
|
-
|
5
4
|
include GivenFilesystemSpecHelpers
|
6
|
-
|
7
5
|
use_given_filesystem
|
8
6
|
|
9
7
|
context "given KDE generic manifests" do
|
@@ -28,49 +26,64 @@ describe KdeFrameworksRelease do
|
|
28
26
|
|
29
27
|
it "reads generic manifests" do
|
30
28
|
k = KdeFrameworksRelease.new @manifest_handler
|
31
|
-
k.read_generic_manifests
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
expected_output = <<EOT
|
31
|
+
Reading generic manifests from '#{@manifest_dir}'...
|
32
|
+
Read 2 manifests.
|
33
|
+
EOT
|
34
|
+
|
35
|
+
expect {
|
36
|
+
k.read_generic_manifests
|
37
|
+
}.to output(expected_output).to_stdout
|
38
|
+
|
39
|
+
expect(k.generic_manifests.count).to eq 2
|
40
|
+
expect(k.generic_manifests[0].name).to eq "karchive"
|
41
|
+
expect(k.generic_manifests[1].name).to eq "kservice"
|
36
42
|
end
|
37
43
|
|
38
44
|
it "writes release manifests" do
|
39
45
|
k = KdeFrameworksRelease.new @manifest_handler
|
40
|
-
|
46
|
+
expect {
|
47
|
+
k.read_generic_manifests
|
48
|
+
}.to output.to_stdout
|
49
|
+
|
50
|
+
expected_output = <<EOT
|
51
|
+
Writing release manifests for version '4.9.90'...
|
52
|
+
#{@manifest_dir}/karchive/karchive.2014-02-01.manifest
|
53
|
+
#{@manifest_dir}/kservice/kservice.2014-02-01.manifest
|
54
|
+
Written 2 manifests.
|
55
|
+
EOT
|
41
56
|
|
42
|
-
|
57
|
+
expect {
|
58
|
+
k.write_release_manifests("2014-02-01", "4.9.90")
|
59
|
+
}.to output(expected_output).to_stdout
|
43
60
|
|
44
|
-
manifest_path = File.join(
|
45
|
-
|
46
|
-
expect( File.exists? manifest_path ).to be true
|
61
|
+
manifest_path = File.join(@manifest_dir,"karchive/karchive.2014-02-01.manifest")
|
62
|
+
expect(File.exists? manifest_path).to be true
|
47
63
|
|
48
|
-
manifest_path = File.join(
|
49
|
-
|
50
|
-
expect( File.exists? manifest_path ).to be true
|
64
|
+
manifest_path = File.join(@manifest_dir,"kservice/kservice.2014-02-01.manifest")
|
65
|
+
expect(File.exists? manifest_path).to be true
|
51
66
|
|
52
|
-
manifest = Manifest.parse_file(
|
67
|
+
manifest = Manifest.parse_file(manifest_path)
|
53
68
|
expect(manifest.class).to be ManifestRelease
|
54
|
-
expect(
|
55
|
-
expect(
|
56
|
-
expect(
|
69
|
+
expect(manifest.name).to eq "kservice"
|
70
|
+
expect(manifest.version).to eq "4.9.90"
|
71
|
+
expect(manifest.release_date).to eq "2014-02-01"
|
57
72
|
end
|
58
73
|
end
|
59
74
|
|
60
75
|
it "creates release manifest from generic manifest" do
|
61
|
-
generic_manifest = Manifest.parse_file(
|
62
|
-
given_file("karchive-generic.manifest") )
|
76
|
+
generic_manifest = Manifest.parse_file(given_file("karchive-generic.manifest"))
|
63
77
|
date = "2014-11-06"
|
64
78
|
version = "5.4.0"
|
65
79
|
release_manifest = KdeFrameworksRelease.create_release_manifest(
|
66
80
|
generic_manifest, date, version)
|
67
|
-
expected_json = File.read(
|
81
|
+
expected_json = File.read(given_file("karchive-release-5.4.manifest"))
|
68
82
|
expected_json.chomp! # Remove newline added by File.read
|
69
|
-
expect(
|
83
|
+
expect(release_manifest.to_json).to eq expected_json
|
70
84
|
end
|
71
85
|
|
72
86
|
it "strips patch release" do
|
73
87
|
expect(KdeFrameworksRelease.strip_patch_release("5.4.0")).to eq "5.4"
|
74
88
|
end
|
75
|
-
|
76
89
|
end
|
@@ -87,6 +87,12 @@ describe ManifestHandler do
|
|
87
87
|
expect( libraries[1].manifests.last.name ).to eq "commercial"
|
88
88
|
end
|
89
89
|
|
90
|
+
it "returns latest libraries" do
|
91
|
+
libraries = mh.latest_libraries
|
92
|
+
expect(libraries.first.manifests.last.name).to eq "proprietarylib"
|
93
|
+
expect(libraries).not_to include "newlib"
|
94
|
+
end
|
95
|
+
|
90
96
|
end
|
91
97
|
|
92
98
|
describe "#group" do
|
@@ -97,6 +103,14 @@ describe ManifestHandler do
|
|
97
103
|
end
|
98
104
|
end
|
99
105
|
|
106
|
+
describe "#topic" do
|
107
|
+
it "returns all libraries of a topic" do
|
108
|
+
libraries = mh.topic("API")
|
109
|
+
expect( libraries.count ).to eq 2
|
110
|
+
expect( libraries.first.manifests.last.name ).to eq "awesomelib"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
100
114
|
describe "#library" do
|
101
115
|
|
102
116
|
it "returns one library" do
|
@@ -145,7 +159,7 @@ describe ManifestHandler do
|
|
145
159
|
end
|
146
160
|
|
147
161
|
it "generates inqlude-all.json" do
|
148
|
-
expected_json = File.read(test_data_path("inqlude-all.json"))
|
162
|
+
expected_json = File.read(test_data_path("inqlude-all.json")).chomp
|
149
163
|
expect(mh.generate_inqlude_all).to eq expected_json
|
150
164
|
end
|
151
165
|
end
|
data/spec/unit/manifest_spec.rb
CHANGED
@@ -68,7 +68,7 @@ describe Manifest do
|
|
68
68
|
it "writes JSON for release manifest" do
|
69
69
|
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
70
70
|
manifest = Manifest.parse_file filename
|
71
|
-
expect( manifest.to_json ).to eq File.read( filename )
|
71
|
+
expect( manifest.to_json ).to eq File.read( filename ).chomp
|
72
72
|
end
|
73
73
|
|
74
74
|
it "writes JSON for generic manifest" do
|
data/spec/unit/spec_helper.rb
CHANGED
@@ -1,11 +1,21 @@
|
|
1
|
+
require "codeclimate-test-reporter"
|
2
|
+
CodeClimate::TestReporter.start
|
3
|
+
|
1
4
|
require 'given_filesystem/spec_helpers'
|
2
5
|
|
3
6
|
require_relative "../../lib/inqlude"
|
4
7
|
|
8
|
+
require "nokogiri"
|
9
|
+
require "open-uri"
|
10
|
+
|
5
11
|
def test_data_path file_name
|
6
12
|
File.expand_path(File.join('../../data/', file_name), __FILE__)
|
7
13
|
end
|
8
14
|
|
15
|
+
def stubs_path(context)
|
16
|
+
File.expand_path(File.join('../../stubs/', context), __FILE__)
|
17
|
+
end
|
18
|
+
|
9
19
|
def create_manifest name, release_date, version
|
10
20
|
m = ManifestRelease.new
|
11
21
|
m.name = name
|
data/spec/unit/view_spec.rb
CHANGED
@@ -44,6 +44,15 @@ describe View do
|
|
44
44
|
expect(v.commercial_libraries.count).to eq mh.commercial_libraries.count
|
45
45
|
expect(v.commercial_libraries.first.name).to eq mh.commercial_libraries.first.name
|
46
46
|
end
|
47
|
+
|
48
|
+
it "returns list of latest libraries" do
|
49
|
+
mh = ManifestHandler.new settings
|
50
|
+
mh.read_remote
|
51
|
+
v = View.new mh
|
52
|
+
|
53
|
+
expect(v.latest_libraries.count).to eq mh.latest_libraries.count
|
54
|
+
expect(v.latest_libraries.first.name).to eq mh.latest_libraries.first.name
|
55
|
+
end
|
47
56
|
|
48
57
|
it "returns group" do
|
49
58
|
mh = ManifestHandler.new settings
|
@@ -54,6 +63,15 @@ describe View do
|
|
54
63
|
expect(v.group.count).to eq mh.group("kde-frameworks").count
|
55
64
|
expect(v.group.first.name).to eq mh.group("kde-frameworks").first.name
|
56
65
|
end
|
66
|
+
|
67
|
+
it "returns topic" do
|
68
|
+
mh = ManifestHandler.new settings
|
69
|
+
mh.read_remote
|
70
|
+
v = View.new mh
|
71
|
+
|
72
|
+
expect(v.topic("API").count).to eq 2
|
73
|
+
expect(v.topic("API").first.name).to eq 'awesomelib'
|
74
|
+
end
|
57
75
|
end
|
58
76
|
|
59
77
|
context "generic manifest and one release" do
|
@@ -173,4 +191,54 @@ EOT
|
|
173
191
|
end
|
174
192
|
end
|
175
193
|
|
194
|
+
context "templates" do
|
195
|
+
include_context "manifest_files"
|
196
|
+
|
197
|
+
include GivenFilesystemSpecHelpers
|
198
|
+
|
199
|
+
use_given_filesystem
|
200
|
+
|
201
|
+
before(:each) do
|
202
|
+
mh = ManifestHandler.new(settings)
|
203
|
+
mh.read_remote
|
204
|
+
|
205
|
+
v = View.new mh
|
206
|
+
v.templates = "one-column"
|
207
|
+
|
208
|
+
dir = given_directory
|
209
|
+
|
210
|
+
v.create(dir)
|
211
|
+
@path = File.join(dir, "index.html")
|
212
|
+
end
|
213
|
+
|
214
|
+
it "generates templates" do
|
215
|
+
expect(File.exists?(@path)).to be true
|
216
|
+
end
|
217
|
+
|
218
|
+
it "checks content" do
|
219
|
+
html_data = File.read(@path)
|
220
|
+
|
221
|
+
nokogiri_object = Nokogiri::HTML(html_data)
|
222
|
+
paragraphs_content = nokogiri_object.xpath("//p").to_s
|
223
|
+
|
224
|
+
expected_content =
|
225
|
+
'<p>
|
226
|
+
The goal of Inqlude is to provide a comprehensive listing of all
|
227
|
+
existing libraries for developers of Qt applications. If you are creating
|
228
|
+
applications using the <a href="http://qt-project.org">Qt toolkit</a>, and
|
229
|
+
are looking for libraries, components
|
230
|
+
or modules to use, Inqlude is the place where you find all information and
|
231
|
+
pointers to get started.
|
232
|
+
</p><p>
|
233
|
+
This is a young project, we are still collecting information, and are
|
234
|
+
building up the web site and the tools around it. If you would like to get
|
235
|
+
involved, read more about <a href="contribute.html">how to contribute</a>, or go
|
236
|
+
to the mailing list
|
237
|
+
<a href="https://mail.kde.org/mailman/listinfo/inqlude">inqlude.kde.org</a>
|
238
|
+
to directly talk to us. See you there.
|
239
|
+
</p>'
|
240
|
+
|
241
|
+
expect(paragraphs_content).to eq(expected_content)
|
242
|
+
end
|
243
|
+
end
|
176
244
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
**This directory contains a node.js program to update the manifests with topics from
|
2
|
+
the file `topics.csv`.**
|
3
|
+
|
4
|
+
Follow the instructions given below to run the program.
|
5
|
+
|
6
|
+
* Install node.js and npm.
|
7
|
+
* Copy the library folders that contain the manifest files required to be updated
|
8
|
+
and paste them at `manifests` directory and `update_manifests` directory.
|
9
|
+
* Run `npm install` from this directory.
|
10
|
+
* Then run `node app.js` from this directory.
|
11
|
+
* You will find the updated manifests at `update_manifests` directory.
|
12
|
+
|
13
|
+
|
14
|
+
**Note:**
|
15
|
+
* You should have the `topics.csv` file in the same directory that contains `app.js`.
|
16
|
+
* Having the manifest files at `manifests` directory is adequate, but make sure that
|
17
|
+
you have the same library folder structure at both `manifests` directory and
|
18
|
+
`update_manifests` directory.
|
19
|
+
* Also make sure that you have the details for the required update activity at `topics.csv`.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
var fs = require('fs');
|
2
|
+
var recursive = require('recursive-readdir');
|
3
|
+
|
4
|
+
var parse = require('csv-parse');
|
5
|
+
var csvAr;
|
6
|
+
|
7
|
+
var parser = parse({delimiter: ','}, function(err, data){
|
8
|
+
csvAr = data;
|
9
|
+
});
|
10
|
+
|
11
|
+
fs.createReadStream(__dirname+'/topics.csv').pipe(parser);
|
12
|
+
|
13
|
+
recursive('manifests', function (err, files) {
|
14
|
+
for (var i = files.length - 1; i >= 0; i--) {
|
15
|
+
var fi = files[i];
|
16
|
+
var data = fs.readFileSync(fi, 'utf8');
|
17
|
+
var manifest = JSON.parse(data);
|
18
|
+
var name = manifest.name;
|
19
|
+
var sel = csvAr.filter(function(d) {
|
20
|
+
return d[0] == name;
|
21
|
+
})[0];
|
22
|
+
|
23
|
+
if(!sel){
|
24
|
+
console.log(fi);
|
25
|
+
}
|
26
|
+
var sel1 = sel;
|
27
|
+
|
28
|
+
sel1 = sel.slice(1);
|
29
|
+
for (var j = 0; j < sel1.length ; j++) {
|
30
|
+
if(sel1[j] === ''){
|
31
|
+
sel1 = sel1.slice(0,j);
|
32
|
+
break;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
manifest.topics = sel1;
|
37
|
+
var data1 = JSON.stringify(manifest, null, 2) + '\n';
|
38
|
+
|
39
|
+
var fi2 = 'update_'+ fi;
|
40
|
+
fs.writeFileSync(fi2, data1);
|
41
|
+
}
|
42
|
+
});
|
43
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://inqlude.org/schema/generic-manifest-v1#",
|
3
|
+
"name": "example",
|
4
|
+
"summary": "An example library",
|
5
|
+
"urls": {
|
6
|
+
"homepage": "http://example.org",
|
7
|
+
"download": "http://example.org/download"
|
8
|
+
},
|
9
|
+
"licenses": [
|
10
|
+
"GPLv3"
|
11
|
+
],
|
12
|
+
"description": "This is an example library",
|
13
|
+
"authors": [
|
14
|
+
"Nanduni Nimalsiri <nandunibw@gmail.com>"
|
15
|
+
],
|
16
|
+
"platforms": [
|
17
|
+
"Linux",
|
18
|
+
"Windows"
|
19
|
+
]
|
20
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
example,API,QML,
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://inqlude.org/schema/generic-manifest-v1#",
|
3
|
+
"name": "example",
|
4
|
+
"summary": "An example library",
|
5
|
+
"urls": {
|
6
|
+
"homepage": "http://example.org",
|
7
|
+
"download": "http://example.org/download"
|
8
|
+
},
|
9
|
+
"licenses": [
|
10
|
+
"GPLv3"
|
11
|
+
],
|
12
|
+
"description": "This is an example library",
|
13
|
+
"authors": [
|
14
|
+
"Nanduni Nimalsiri <nandunibw@gmail.com>"
|
15
|
+
],
|
16
|
+
"platforms": [
|
17
|
+
"Linux",
|
18
|
+
"Windows"
|
19
|
+
],
|
20
|
+
"topics": [
|
21
|
+
"API",
|
22
|
+
"QML"
|
23
|
+
]
|
24
|
+
}
|
data/topics/topics.csv
CHANGED
@@ -100,6 +100,7 @@ libqtlua,Scripting,,
|
|
100
100
|
libqxt,Development,Widgets,
|
101
101
|
libsystemd-qt,Bindings,,
|
102
102
|
libtmdbqt,API,Data,
|
103
|
+
limereport,Printing,,
|
103
104
|
log4qt,Development,Logging,
|
104
105
|
log4qt-fork,Development,Logging,
|
105
106
|
lxqt_wallet,Security,,
|
@@ -168,9 +169,11 @@ qtoptimization,Development,,
|
|
168
169
|
qtorm,Web,Data,
|
169
170
|
qtrest,Communication,API,
|
170
171
|
qtrpt,Printing,,
|
172
|
+
qtsharp,Development,,
|
171
173
|
qtspeech,Bindings,Multimedia,
|
172
174
|
qtuio,Mobile,,
|
173
175
|
qtuiotouch,Mobile,,
|
176
|
+
qtunits,Data,,
|
174
177
|
qtvkontakte,Mobile,,
|
175
178
|
qtwebapp,Web,,
|
176
179
|
qtwebkit,Web,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
%home
|
2
|
+
= link_to "Home", "index"
|
3
|
+
|
4
|
+
%h3 About Inqlude
|
5
|
+
|
6
|
+
%p
|
7
|
+
The goal of Inqlude is to provide a comprehensive listing of all
|
8
|
+
existing libraries for developers of Qt applications. If you are creating
|
9
|
+
applications using the Qt toolkit, and are looking for libraries, components
|
10
|
+
or modules to use, Inqlude is the place where you find all information and
|
11
|
+
pointers to get started.
|
12
|
+
%p
|
13
|
+
Inqlude comes with a command line client for handling libraries. See the
|
14
|
+
= link_to "instructions how to get libraries", "get"
|
15
|
+
for more details.
|
16
|
+
%p
|
17
|
+
Inqlude aims to be a complete archive of all available Qt based
|
18
|
+
libraries. If you notice that there is some information missing, outdated
|
19
|
+
or inaccurate, please consider contributing the missing data. See the
|
20
|
+
= link_to "instructions how to contribute", "contribute"
|
21
|
+
for more details.
|
22
|
+
%p
|
23
|
+
%em
|
24
|
+
Note that Inqlude is currently in alpha state. It's not ready for full
|
25
|
+
production use yet. Data is still incomplete, and the tools are
|
26
|
+
limited. Feedback and input is appreciated.
|
27
|
+
%p
|
28
|
+
If you have questions of comments please feel free to write to the Inqlude
|
29
|
+
mailing list #{link_to "inqlude@kde.org", "mailto:inqlude@kde.org"}.
|
30
|
+
%p
|
31
|
+
Inqlude was created by
|
32
|
+
= link_to "Cornelius Schumacher", "mailto:schumacher@kde.org"
|
33
|
+
with the help of many others, and is a proud member of the KDE family.
|
34
|
+
%br
|