116 lines
2.9 KiB
Makefile
116 lines
2.9 KiB
Makefile
#!/usr/bin/env -S just --justfile
|
|
|
|
set fallback := false
|
|
|
|
mod dev
|
|
mod ci
|
|
|
|
[private]
|
|
default:
|
|
@just help
|
|
|
|
# show this help
|
|
help:
|
|
@just --list
|
|
|
|
# provide an additional shell into the container
|
|
[group('Interactive')]
|
|
shell *id:
|
|
#!/usr/bin/env bash
|
|
name={{ id }}
|
|
declare -a args=()
|
|
|
|
# if no name was provided, fall back to the last project container created
|
|
args+=( --all )
|
|
if [[ -z $name ]]; then
|
|
args+=( --filter=label="PROJECT=oci" --latest )
|
|
else
|
|
args+=( --filter=name="${name}" )
|
|
fi
|
|
id=$(podman ps "${args[@]}" --format="{{{{ .Names }}")
|
|
suffix=$(podman ps "${args[@]}" --format='{{{{ index (split .Labels.NAME "-") 1 }}')
|
|
|
|
if [[ -v TMUX_PANE && -n $suffix ]]; then
|
|
tmux rename-window "$suffix"
|
|
fi
|
|
podman exec --interactive --tty "$id" /usr/bin/zsh --login
|
|
if [[ -v TMUX_PANE ]]; then
|
|
tmux set-option -w automatic-rename on
|
|
fi
|
|
|
|
# attach to the just created container
|
|
[group('Interactive')]
|
|
attach *id:
|
|
#!/usr/bin/env bash
|
|
name={{ id }}
|
|
declare -a args=()
|
|
|
|
# if no name was provided, fall back to the last project container created
|
|
args+=( --all )
|
|
if [[ -z $name ]]; then
|
|
args+=( --filter=label="PROJECT=oci" --latest )
|
|
else
|
|
args+=( --filter=name="${name}" )
|
|
fi
|
|
id=$(podman ps "${args[@]}" --format="{{{{ .Names }}")
|
|
suffix=$(podman ps "${args[@]}" --format='{{{{ index (split .Labels.NAME "-") 1 }}')
|
|
|
|
if [[ -v TMUX_PANE && -n $suffix ]]; then
|
|
tmux rename-window "$suffix"
|
|
fi
|
|
podman start --attach --interactive "$id"
|
|
if [[ -v TMUX_PANE ]]; then
|
|
tmux set-option -w automatic-rename on
|
|
fi
|
|
|
|
# remove all containers
|
|
[confirm('Remove all containers? (y/n)')]
|
|
[group('Cleanup')]
|
|
rm:
|
|
@-podman container ls --all --filter=label="PROJECT=oci" --quiet | \
|
|
xargs podman container rm --volumes --
|
|
|
|
# remove all images
|
|
[confirm('Remove all images? (y/n)')]
|
|
[group('Cleanup')]
|
|
rmi:
|
|
@-podman image ls --filter=label="PROJECT=oci" --quiet | \
|
|
xargs podman image rm --
|
|
|
|
# remove dangling images
|
|
[group('Cleanup')]
|
|
podman-prune:
|
|
@podman image prune --force
|
|
|
|
# removes all build artifacts possibly left by buildah
|
|
[group('Cleanup')]
|
|
buildah-prune:
|
|
@buildah rm --all
|
|
|
|
# clean oci container and images
|
|
[group('Cleanup')]
|
|
clean: rm rmi podman-prune
|
|
|
|
# list built images by label
|
|
[group('Status')]
|
|
list-images:
|
|
@podman image list --filter=label="PROJECT=oci" --noheading --sort=created
|
|
|
|
# list created container by label
|
|
[group('Status')]
|
|
ps:
|
|
@podman container list --filter=label="PROJECT=oci" --noheading --all
|
|
|
|
# enumerate build targets
|
|
[group('Status')]
|
|
find:
|
|
@find ci dev -mindepth 1 -maxdepth 1 -type d -print
|
|
|
|
# remove buildah and podman dangling images
|
|
[group('Cleanup')]
|
|
[no-exit-message]
|
|
prune: podman-prune buildah-prune
|
|
|
|
alias ls := list-images
|
|
|
|
# vi: set ft=just ts=4 sw=4 sts=-1 nosr et si tw=0 fdm=manual:
|