mirror of
https://github.com/mipmip/home-manager-option-search.git
synced 2024-10-05 13:17:27 +03:00
add release switch
This commit is contained in:
parent
0173245438
commit
2b76d23509
5
.github/workflows/update.yml
vendored
5
.github/workflows/update.yml
vendored
@ -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:
|
||||
|
14
index.html
14
index.html
@ -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" />
|
||||
|
47
js/script.js
47
js/script.js
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user