Add deliver script

Based on Jess Archer's script, this executes a command within a
specified Docker Compose service or, if no matching one is not found,
will execute it locally.
This commit is contained in:
Oliver Davies 2024-10-25 22:06:26 +01:00
parent c1e85f01d9
commit 80927b1df2
2 changed files with 27 additions and 0 deletions

View file

@ -15,6 +15,7 @@ let
create-zellij-session = writeShellApplication (
import ./scripts/create-zellij-session.nix { inherit pkgs; }
);
deliver = writeShellApplication (import ./scripts/deliver.nix { inherit pkgs; });
export-video-list = writeShellApplication (
import ./scripts/export-video-list.nix { inherit pkgs username; }
);
@ -70,6 +71,7 @@ with pkgs;
# Scripts.
create-zellij-session
deliver
notetaker
run
t

View file

@ -0,0 +1,25 @@
{ pkgs }:
{
name = "deliver";
runtimeInputs = with pkgs; [ docker ];
text = ''
set +o pipefail
# Based on https://github.com/jessarcher/dotfiles/blob/ef692c35d64db2c13674dfc850a23b6acf9e8f91/scripts/deliver.
docker_compose_service_name=$(docker compose ps --services 2>/dev/null | grep '^app\|php$' | head -n1)
if [[ "$docker_compose_service_name" != "" ]]; then
if [ -t 1 ]; then
"${pkgs.docker}/bin/docker" compose exec "$docker_compose_service_name" "$@"
else
# The command is not being run in a TTY
"${pkgs.docker}/bin/docker" compose exec -T "$docker_compose_service_name" "$@"
fi
else
"$@"
fi
'';
}