makeShell: improve update-nix-bitcoin

- Don't overwrite `nix-bitcoin-release.nix` on errors
- Show a message to indicate whether `nix-bitcoin-release.nix` was
  updated
- Don't start a shell when called noninteractively

Also, update `usage.md` and reformat `shell.nix`.
This commit is contained in:
Erik Arvstedt 2021-09-13 10:23:49 +02:00
parent 52aaa8388e
commit 77af2e4538
No known key found for this signature in database
GPG Key ID: 33312B944DD97846
3 changed files with 25 additions and 11 deletions

View File

@ -1,9 +1,10 @@
Updating
---
In your deployment directory, enter the nix shell with `nix-shell` and run
In your deployment directory, enter the nix shell with `nix-shell` and run the
following to update `nix-bitcoin-release.nix`:
```
fetch-release > nix-bitcoin-release.nix
update-nix-bitcoin
```
Nodeinfo

View File

@ -4,5 +4,5 @@ in
import "${nix-bitcoin}/helper/makeShell.nix" {
configDir = ./.;
# Set this to modify your shell
# extraShellInitCmds = (pkgs: ''<my bash code>'');
# extraShellInitCmds = pkgs: ''<my bash code>'';
}

View File

@ -17,6 +17,11 @@ stdenv.mkDerivation rec {
export NIX_BITCOIN_EXAMPLES_DIR="${cfgDir}"
# Set isInteractive=1 if
# 1. stdout is a TTY, i.e. we're not piping the output
# 2. the shell is interactive
if [[ -t 1 && $- == *i* ]]; then isInteractive=1; else isInteractive=; fi
help() {
echo "nix-bitcoin path: ${toString ../.}"
echo
@ -47,10 +52,21 @@ stdenv.mkDerivation rec {
${toString ./fetch-release}
}
update-nix-bitcoin() {
fetch-release > "${cfgDir}/nix-bitcoin-release.nix"
update-nix-bitcoin() {(
set -euo pipefail
releaseFile="${cfgDir}/nix-bitcoin-release.nix"
current=$(cat "$releaseFile" 2>/dev/null || true)
new=$(fetch-release)
if [[ $new == $current ]]; then
echo "nix-bitcoin-release.nix already contains the latest release"
else
echo "$new" > "$releaseFile"
echo "Updated nix-bitcoin-release.nix"
if [[ $isInteractive ]]; then
exec nix-shell
}
fi
fi
)}
generate-secrets() {(
set -euo pipefail
@ -94,10 +110,7 @@ stdenv.mkDerivation rec {
done
}
# Print welcome message if
# 1. stdout is a TTY, i.e. we're not piping the output
# 2. the shell is interactive
if [[ -t 1 && $- == *i* ]]; then
if [[ $isInteractive ]]; then
${figlet}/bin/figlet "nix-bitcoin"
echo 'Enter "h" or "help" for documentation.'
fi