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 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 Nodeinfo

View File

@ -4,5 +4,5 @@ in
import "${nix-bitcoin}/helper/makeShell.nix" { import "${nix-bitcoin}/helper/makeShell.nix" {
configDir = ./.; configDir = ./.;
# Set this to modify your shell # 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}" 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() { help() {
echo "nix-bitcoin path: ${toString ../.}" echo "nix-bitcoin path: ${toString ../.}"
echo echo
@ -47,10 +52,21 @@ stdenv.mkDerivation rec {
${toString ./fetch-release} ${toString ./fetch-release}
} }
update-nix-bitcoin() { update-nix-bitcoin() {(
fetch-release > "${cfgDir}/nix-bitcoin-release.nix" 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 exec nix-shell
} fi
fi
)}
generate-secrets() {( generate-secrets() {(
set -euo pipefail set -euo pipefail
@ -94,10 +110,7 @@ stdenv.mkDerivation rec {
done done
} }
# Print welcome message if if [[ $isInteractive ]]; then
# 1. stdout is a TTY, i.e. we're not piping the output
# 2. the shell is interactive
if [[ -t 1 && $- == *i* ]]; then
${figlet}/bin/figlet "nix-bitcoin" ${figlet}/bin/figlet "nix-bitcoin"
echo 'Enter "h" or "help" for documentation.' echo 'Enter "h" or "help" for documentation.'
fi fi