Skip to content

Commit 5bb94c9

Browse files
authored
Adds faceted search (#261)
1 parent 1c1a3ca commit 5bb94c9

File tree

13 files changed

+1648
-762
lines changed

13 files changed

+1648
-762
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
17
1+
18

default.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ pkgs.stdenv.mkDerivation {
3131
name = "${package.name}-${package.version}";
3232
src = pkgs.lib.cleanSource ./.;
3333

34+
preferLocalBuild = true;
35+
3436
buildInputs =
3537
[
3638
yarnPkg

import-scripts/default.nix

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ mkPoetryApplication {
1313
'';
1414
});
1515
});
16+
preferLocalBuild = true;
1617
nativeBuildInputs = with pkgs; [
1718
poetry
1819
fd
1920
entr
21+
nixStable
2022
];
21-
#doCheck = false;
2223
checkPhase = ''
2324
export PYTHONPATH=$PWD:$PYTHONPATH
2425
black --diff --check import_scripts/ tests/
@@ -27,8 +28,13 @@ mkPoetryApplication {
2728
pytest -vv tests/
2829
'';
2930
postInstall = ''
30-
wrapProgram $out/bin/import-channel --set INDEX_SCHEMA_VERSION "${version}"
31-
wrapProgram $out/bin/channel-diff --set INDEX_SCHEMA_VERSION "${version}"
31+
wrapProgram $out/bin/import-channel \
32+
--set INDEX_SCHEMA_VERSION "${version}" \
33+
--prefix PATH : "${pkgs.nixStable}/bin"
34+
wrapProgram $out/bin/channel-diff \
35+
--set INDEX_SCHEMA_VERSION "${version}" \
36+
--prefix PATH : "${pkgs.nixStable}/bin"
37+
3238
'';
3339
shellHook = ''
3440
cd import-scripts/

import-scripts/import_scripts/channel.py

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"20.03": "nixos/20.03/nixos-20.03.",
3737
"20.09": "nixos/20.09/nixos-20.09.",
3838
}
39+
ALLOWED_PLATFORMS = ["x86_64-linux", "aarch64-linux", "x86_64-darwin", "i686-linux"]
3940
ANALYSIS = {
4041
"normalizer": {
4142
"lowercase": {"type": "custom", "char_filter": [], "filter": ["lowercase"]}
@@ -88,42 +89,34 @@
8889
},
8990
"package_attr_name": {
9091
"type": "keyword",
91-
"normalizer": "lowercase",
9292
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
9393
},
9494
"package_attr_name_reverse": {
9595
"type": "keyword",
96-
"normalizer": "lowercase",
9796
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
9897
},
9998
"package_attr_name_query": {
10099
"type": "keyword",
101-
"normalizer": "lowercase",
102100
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
103101
},
104102
"package_attr_name_query_reverse": {
105103
"type": "keyword",
106-
"normalizer": "lowercase",
107104
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
108105
},
109106
"package_attr_set": {
110107
"type": "keyword",
111-
"normalizer": "lowercase",
112108
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
113109
},
114110
"package_attr_set_reverse": {
115111
"type": "keyword",
116-
"normalizer": "lowercase",
117112
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
118113
},
119114
"package_pname": {
120115
"type": "keyword",
121-
"normalizer": "lowercase",
122116
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
123117
},
124118
"package_pname_reverse": {
125119
"type": "keyword",
126-
"normalizer": "lowercase",
127120
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
128121
},
129122
"package_pversion": {"type": "keyword"},
@@ -151,6 +144,7 @@
151144
"type": "nested",
152145
"properties": {"fullName": {"type": "text"}, "url": {"type": "text"}},
153146
},
147+
"package_license_set": {"type": "keyword"},
154148
"package_maintainers": {
155149
"type": "nested",
156150
"properties": {
@@ -159,29 +153,26 @@
159153
"github": {"type": "text"},
160154
},
161155
},
156+
"package_maintainers_set": {"type": "keyword"},
162157
"package_platforms": {"type": "keyword"},
163158
"package_position": {"type": "text"},
164159
"package_homepage": {"type": "keyword"},
165160
"package_system": {"type": "keyword"},
166161
# Options fields
167162
"option_name": {
168163
"type": "keyword",
169-
"normalizer": "lowercase",
170164
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
171165
},
172166
"option_name_reverse": {
173167
"type": "keyword",
174-
"normalizer": "lowercase",
175168
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
176169
},
177170
"option_name_query": {
178171
"type": "keyword",
179-
"normalizer": "lowercase",
180172
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
181173
},
182174
"option_name_query_reverse": {
183175
"type": "keyword",
184-
"normalizer": "lowercase",
185176
"fields": {"edge": {"type": "text", "analyzer": "edge"}},
186177
},
187178
"option_description": {
@@ -396,7 +387,7 @@ def remove_attr_set(name):
396387
@backoff.on_exception(backoff.expo, subprocess.CalledProcessError)
397388
def get_packages_raw(evaluation):
398389
logger.debug(
399-
f"get_packages: Retrieving list of packages for '{evaluation['git_revision']}' revision"
390+
f"get_packages_raw: Retrieving list of packages for '{evaluation['git_revision']}' revision"
400391
)
401392
result = subprocess.run(
402393
shlex.split(
@@ -417,7 +408,7 @@ def gen():
417408
licenses = data["meta"].get("license")
418409
if licenses:
419410
if type(licenses) == str:
420-
licenses = [dict(fullName=licenses)]
411+
licenses = [dict(fullName=licenses, url=None)]
421412
elif type(licenses) == dict:
422413
licenses = [licenses]
423414
licenses = [
@@ -427,24 +418,27 @@ def gen():
427418
for license in licenses
428419
]
429420
else:
430-
licenses = []
421+
licenses = [dict(fullName="No license", url=None)]
431422

432423
maintainers = get_maintainer(data["meta"].get("maintainers", []))
424+
if len(maintainers) == 0:
425+
maintainers = [dict(name="No maintainers", email=None, github=None)]
433426

434427
platforms = [
435-
type(platform) == str and platform or None
428+
platform
436429
for platform in data["meta"].get("platforms", [])
430+
if type(platform) == str and platform in ALLOWED_PLATFORMS
437431
]
438432

439-
attr_set = None
433+
attr_set = "No package set"
440434
if "." in attr_name:
441-
attr_set = attr_name.split(".")[0]
435+
maybe_attr_set = attr_name.split(".")[0]
442436
if (
443-
not attr_set.endswith("Packages")
444-
and not attr_set.endswith("Plugins")
445-
and not attr_set.endswith("Extensions")
437+
maybe_attr_set.endswith("Packages")
438+
or maybe_attr_set.endswith("Plugins")
439+
or maybe_attr_set.endswith("Extensions")
446440
):
447-
attr_set = None
441+
attr_set = maybe_attr_set
448442

449443
hydra = None
450444
if data["name"] in evaluation_builds:
@@ -492,8 +486,10 @@ def gen():
492486
package_longDescription=package_longDescription,
493487
package_longDescription_reverse=field_reverse(package_longDescription),
494488
package_license=licenses,
489+
package_license_set=[i["fullName"] for i in licenses],
495490
package_maintainers=maintainers,
496-
package_platforms=[i for i in platforms if i],
491+
package_maintainers_set=[i["name"] for i in maintainers if i["name"]],
492+
package_platforms=platforms,
497493
package_position=position,
498494
package_homepage=data["meta"].get("homepage"),
499495
package_system=data["system"],

src/Main.elm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import Page.Packages
3232
import Route
3333
import Search
3434
import Url
35-
import Url.Builder
3635

3736

3837

@@ -129,6 +128,7 @@ attemptQuery (( model, _ ) as pair) =
129128
(Maybe.withDefault "" searchModel.query)
130129
searchModel.from
131130
searchModel.size
131+
searchModel.buckets
132132
searchModel.sort
133133
]
134134
)
@@ -365,7 +365,7 @@ viewNavigation route =
365365
f searchArgs
366366

367367
_ ->
368-
f <| Route.SearchArgs Nothing Nothing Nothing Nothing Nothing Nothing
368+
f <| Route.SearchArgs Nothing Nothing Nothing Nothing Nothing Nothing Nothing
369369
in
370370
li [] [ a [ href "https://nixos.org" ] [ text "Back to nixos.org" ] ]
371371
:: List.map

0 commit comments

Comments
 (0)