add release switch

This commit is contained in:
Pim Snel 2024-03-23 17:32:17 +01:00
parent 0173245438
commit 2b76d23509
5 changed files with 63 additions and 6 deletions

View File

@ -25,6 +25,11 @@ jobs:
env:
HM_RELEASE: release-23.11
run: ./scripts/build_hm_options.sh
- name: release-options
env:
HM_RELEASE: release-23.05
run: ./scripts/build_hm_options.sh
#
# - name: master-options
# env:

View File

@ -73,8 +73,22 @@
<input class="form-control" type="search" id="searchInput" autofocus="autofocus" placeholder="Search.. e.g. vim">
</div>
<div class="form-group">
<label for="release">
Home Manager release
</label>
<select id="releaseSelect">
<option value="master">unstable</option>
<option value="release-23.11">23.11</option>
<option value="release-23.05">23.05</option>
<!--
<option value="release-22.11">22.11</option>
<option value="release-22.05">22.05</option>
-->
</select>
<label for="advcheck">
search options
<input id="advcheck" type="checkbox" data-toggle="collapse" data-target="#advanced" />

View File

@ -13,8 +13,10 @@ var rebuildAndRerunSearch = function() {
};
var docOnload = function(){
const urlParams = new URLSearchParams(window.location.search);
const query = urlParams.get('query') ?? '';
searchInput.value = query;
searchOptions(query);
@ -47,6 +49,7 @@ var indexedOptionsTableHeader = document.getElementById('indexedOptionsTableHead
var lastUpdateElement = document.getElementById('lastUpdateElement');
var indexedOptionsTBody = indexedOptionsTable.tBodies[0];
var searchInput = document.getElementById('searchInput');
var releaseSelect = document.getElementById('releaseSelect');
var optionCountBadge = document.getElementById('optionCountBadge');
var updateLastUpdate = function(lastUpdate) {
@ -148,10 +151,12 @@ var updateOptionCountAndTable = function() {
}
};
var setSearchQueryToUrlParam = function(query) {
var newUrl = '';
var setSearchQueryToUrlParam = function(query,release) {
const urlParams = new URLSearchParams();
urlParams.set('query', query);
const newUrl = `${window.location.pathname}?${urlParams.toString()}`;
newUrl = `${window.location.pathname}?${urlParams.toString()}&release=${release}`;
window.history.replaceState({}, '', newUrl);
};
@ -207,16 +212,42 @@ const SEARCH_INPUT_DEBOUNCE_MS = 100;
let debounceTimer;
searchInput.oninput = function() {
clearTimeout(debounceTimer);
function newSearch(){
clearTimeout(debounceTimer);
debounceTimer = setTimeout(() => {
const query = searchInput.value;
setSearchQueryToUrlParam(query);
const release = releaseSelect.selectedOptions[0].value;
setSearchQueryToUrlParam(query, release);
searchOptions(query);
}, SEARCH_INPUT_DEBOUNCE_MS);
}
searchInput.oninput = function() {
newSearch();
};
releaseSelect.onchange = function(){
const query = searchInput.value;
const release = releaseSelect.selectedOptions[0].value;
setSearchQueryToUrlParam(query, release);
//window.location.reload(false);
window.location.replace(newUrl);
//newSearch();
//var release = releaseSelect.selectedOptions[0].value;
//xmlhttp.open('GET', 'data/hm-options-'+release+'.json', true);
//xmlhttp.send();
}
var updateOptionCount = function(numOptions) {
optionCountBadge.innerText = numOptions + ' options';
};
@ -251,5 +282,9 @@ xmlhttp.onreadystatechange = function() {
}
}
xmlhttp.open('GET', 'data/hm-options-master.json', true);
const urlParams = new URLSearchParams(window.location.search);
const release = urlParams.get('release') ?? 'master';
document.getElementById('releaseSelect').value = release;
xmlhttp.open('GET', 'data/hm-options-'+release+'.json', true);
xmlhttp.send();

View File

@ -9,6 +9,7 @@ fi
echo "building Home Manager options from ${HM_RELEASE}"
rm -Rf result
nix build github:nix-community/home-manager/${HM_RELEASE}#docs-json --no-write-lock-file
rm -f ./data/hm-options-${HM_RELEASE}.json
ruby ./scripts/parse_options-json.rb

View File

@ -8,6 +8,8 @@ if not ENV['HM_RELEASE']
ENV['HM_RELEASE'] = "master"
end
p ENV['HM_RELEASE']
in_file = File.read("./result/share/doc/home-manager/options.json")
parsed = JSON.parse(in_file)