mirror of
https://gitlab.com/TECHNOFAB/soonix.git
synced 2026-02-02 15:25:05 +01:00
Compare commits
1 commit
bfe628020c
...
880ebb6e42
| Author | SHA1 | Date | |
|---|---|---|---|
| 880ebb6e42 |
1 changed files with 62 additions and 60 deletions
122
lib/module.nix
122
lib/module.nix
|
|
@ -4,7 +4,7 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) types mkOption concatMapStringsSep mapAttrsToList;
|
||||
inherit (lib) types mkOption concatMapStringsSep;
|
||||
soonix_lib = import ./. {inherit pkgs;};
|
||||
inherit (soonix_lib) engines buildAllFiles;
|
||||
in {
|
||||
|
|
@ -253,74 +253,70 @@ in {
|
|||
builtins.addErrorContext "[soonix] while generating shell hook"
|
||||
# sh
|
||||
''
|
||||
function _soonix() {
|
||||
CHECK_MODE=''${CHECK_MODE:-false}
|
||||
SKIP_GITIGNORE=''${SKIP_GITIGNORE:-false}
|
||||
CHECK_MODE=''${CHECK_MODE:-false}
|
||||
SKIP_GITIGNORE=''${SKIP_GITIGNORE:-false}
|
||||
|
||||
_soonix_log() {
|
||||
local level="$1"
|
||||
local hook="$2"
|
||||
local message="$3"
|
||||
[[ "''${SOONIX_LOG-}" == "true" ]] && echo "$level [$hook]: $message" || true
|
||||
}
|
||||
_soonix_log() {
|
||||
local level="$1"
|
||||
local hook="$2"
|
||||
local message="$3"
|
||||
[[ "''${SOONIX_LOG-}" == "true" ]] && echo "$level [$hook]: $message" || true
|
||||
}
|
||||
|
||||
_soonix_add_to_gitignore() {
|
||||
local file="$1"
|
||||
local gitignore=".gitignore"
|
||||
_soonix_add_to_gitignore() {
|
||||
local file="$1"
|
||||
local gitignore=".gitignore"
|
||||
|
||||
if [[ ! -f "$gitignore" ]]; then
|
||||
touch "$gitignore"
|
||||
fi
|
||||
|
||||
# Check if file is already in gitignore
|
||||
if ! grep -Fxq "/$file" "$gitignore"; then
|
||||
# Add sentinel comments if not present
|
||||
if ! grep -q "# soonix" "$gitignore"; then
|
||||
echo "" >> "$gitignore"
|
||||
echo "# soonix" >> "$gitignore"
|
||||
echo "# end soonix" >> "$gitignore"
|
||||
fi
|
||||
|
||||
# Insert the file path before the end comment
|
||||
${pkgs.gnused}/bin/sed -i "/# end soonix/i /$file" "$gitignore"
|
||||
fi
|
||||
}
|
||||
|
||||
_soonix_updated=()
|
||||
_soonix_failed=()
|
||||
_soonix_uptodate=()
|
||||
|
||||
${runHooks}
|
||||
|
||||
local output=$'\E[msoonix:\E[38;5;8m'
|
||||
local status=0
|
||||
|
||||
if [[ ''${#_soonix_updated[@]} -gt 0 ]]; then
|
||||
output="$output [updated: ''${_soonix_updated[*]}]" >&2
|
||||
if [[ "$CHECK_MODE" == "true" ]]; then
|
||||
status=2
|
||||
fi
|
||||
fi
|
||||
if [[ ''${#_soonix_uptodate[@]} -gt 0 ]]; then
|
||||
output="$output [unchanged: ''${_soonix_uptodate[*]}]" >&2
|
||||
fi
|
||||
if [[ ''${#_soonix_failed[@]} -gt 0 ]]; then
|
||||
output="$output [failed: ''${_soonix_failed[*]}]" >&2
|
||||
status=1
|
||||
if [[ ! -f "$gitignore" ]]; then
|
||||
touch "$gitignore"
|
||||
fi
|
||||
|
||||
printf "%s\E[m\n" "$output" >&2
|
||||
# Check if file is already in gitignore
|
||||
if ! grep -Fxq "/$file" "$gitignore"; then
|
||||
# Add sentinel comments if not present
|
||||
if ! grep -q "# soonix" "$gitignore"; then
|
||||
echo "" >> "$gitignore"
|
||||
echo "# soonix" >> "$gitignore"
|
||||
echo "# end soonix" >> "$gitignore"
|
||||
fi
|
||||
|
||||
if [[ $status -ne 0 ]]; then
|
||||
exit $status
|
||||
# Insert the file path before the end comment
|
||||
${pkgs.gnused}/bin/sed -i "/# end soonix/i /$file" "$gitignore"
|
||||
fi
|
||||
}
|
||||
_soonix
|
||||
unset _soonix
|
||||
|
||||
_soonix_updated=()
|
||||
_soonix_failed=()
|
||||
_soonix_uptodate=()
|
||||
|
||||
${runHooks}
|
||||
|
||||
local output=$'\E[msoonix:\E[38;5;8m'
|
||||
local status=0
|
||||
|
||||
if [[ ''${#_soonix_updated[@]} -gt 0 ]]; then
|
||||
output="$output [updated: ''${_soonix_updated[*]}]" >&2
|
||||
if [[ "$CHECK_MODE" == "true" ]]; then
|
||||
status=2
|
||||
fi
|
||||
fi
|
||||
if [[ ''${#_soonix_uptodate[@]} -gt 0 ]]; then
|
||||
output="$output [unchanged: ''${_soonix_uptodate[*]}]" >&2
|
||||
fi
|
||||
if [[ ''${#_soonix_failed[@]} -gt 0 ]]; then
|
||||
output="$output [failed: ''${_soonix_failed[*]}]" >&2
|
||||
status=1
|
||||
fi
|
||||
|
||||
printf "%s\E[m\n" "$output" >&2
|
||||
|
||||
if [[ $status -ne 0 ]]; then
|
||||
exit $status
|
||||
fi
|
||||
'';
|
||||
|
||||
allFiles =
|
||||
mapAttrsToList (name: hook: {
|
||||
lib.mapAttrsToList (name: hook: {
|
||||
src = hook.generatedDerivation;
|
||||
path = hook.output;
|
||||
})
|
||||
|
|
@ -419,12 +415,18 @@ in {
|
|||
'') (builtins.attrNames hooks)}
|
||||
;;
|
||||
update)
|
||||
${generateShellHook}
|
||||
function _soonix() {
|
||||
${generateShellHook}
|
||||
}
|
||||
_soonix
|
||||
;;
|
||||
check)
|
||||
CHECK_MODE=true
|
||||
echo "Checking files..."
|
||||
${generateShellHook}
|
||||
function _soonix() {
|
||||
${generateShellHook}
|
||||
}
|
||||
_soonix
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue