This repository has been archived on 2024-03-04. You can view files and clone it, but cannot push or open issues or pull requests.
linux/.config/bash/module/Container.sh

81 lines
1.7 KiB
Bash

# Attach/create container box in current directory with specified name.
# By default uses current dir name.
# Usage: ca [NAME]
function ca() {
local name="${1}"
# Set default name.
# [[ "${name}" = "" ]] && name="main"
[[ "${name}" = "" ]] && name=$(parse_alnum "${PWD##*/}")
# Append box prefix.
name="box-${name}"
# Create container.
docker run \
--privileged \
-d -it \
-h "${HOSTNAME}${name#box}" --name "${name}" \
--workdir /data \
-e XDG_RUNTIME_DIR=/tmp \
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:/tmp/${WAYLAND_DISPLAY} \
-v ${PWD}:/data \
-v ${HOME}:/root \
debian:latest bash -c bash &> /dev/null
# Attempt to start container.
docker start "${name}" &> /dev/null
# Attach to running container.
docker attach "${name}"
}
# Remove container box with specified name.
# By default uses current dir name.
# Usage: ck [NAME]
function ck() {
local name="${1}"
# Set default name.
[[ "${name}" = "" ]] && name=$(parse_alnum "${PWD##*/}")
# Append box prefix.
name="box-${name}"
# Kill container.
docker kill "${name}" &> /dev/null
docker rm "${name}" &> /dev/null
}
# Remove all container boxes.
function cka() {
local IFS=$'\n'
local boxes=$(_get_boxes)
for box in ${boxes[@]}; do
ck "${box}"
done
}
# List all container boxes.
function cl() {
_get_boxes
}
# Print all boxes.
function _get_boxes() {
local IFS=$'\n'
local boxes=$(docker ps -a | grep "box-" | sed -e "s/.*box-//")
[[ "${boxes[@]}" != "" ]] && echo "${boxes[@]}" || true
}
# Autocomplete with boxes.
function _comp_get_boxes() {
local IFS=$'\n'
_autocomplete_first $(_get_boxes)
}
complete -F _comp_get_boxes ca ck