Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions lib/drop.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,70 @@ _u7_drop() {
_u7_exec sudo deluser "$1"
;;

docker)
case "$1" in
container|image|volume)
if [[ "$_U7_DRY_RUN" != "1" ]]; then
if ! command -v docker &>/dev/null; then
echo "Error: docker is not installed or not in PATH"
return 1
fi
fi
;;
prune)
if [[ "$_U7_DRY_RUN" == "1" ]]; then
echo "[dry-run] docker system prune -af"
return 0
fi
if ! command -v docker &>/dev/null; then
echo "Error: docker is not installed or not in PATH"
return 1
fi
;;
"")
echo "Usage: u7 dr docker <container|image|volume|prune> [id|name]"
return 0
;;
*)
echo "Usage: u7 dr docker <container|image|volume|prune> [id|name]"
return 1
;;
esac
case "$1" in
container)
if [[ -z "$2" ]]; then
echo "Usage: u7 dr docker container <id|name>"
return 1
fi
_u7_exec docker rm -f "$2"
;;
image)
if [[ -z "$2" ]]; then
echo "Usage: u7 dr docker image <id|name>"
return 1
fi
_u7_exec docker rmi "$2"
;;
volume)
if [[ -z "$2" ]]; then
echo "Usage: u7 dr docker volume <name>"
return 1
fi
_u7_exec docker volume rm "$2"
;;
prune)
echo "This will remove all stopped containers, unused images, and build cache. Continue? (y/n)"
read -r confirm < /dev/tty
if [[ "${confirm,,}" == "y" ]]; then
_u7_exec docker system prune -af
else
echo "Aborted."
return 1
fi
;;
esac
;;

--help|-h)
cat << 'EOF'
u7 dr (drop) - Delete/Kill
Expand All @@ -152,6 +216,7 @@ Entities:
duplicates in|from <file> Remove duplicate lines
process <pid> Kill process
user <username> Delete system user
docker <container|image|volume|prune> [id|name] Manage Docker resources
EOF
;;

Expand Down
20 changes: 20 additions & 0 deletions test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -890,6 +890,26 @@ assert_contains "mk template rejects existing dir" "already exists" "$result"
# Test: mk template rejects special characters in name
result=$(u7 mk template python "my project" 2>&1)
assert_contains "mk template rejects special chars" "alphanumerics" "$result"
# Test: dr docker without subcommand shows usage
result=$(u7 dr docker 2>&1)
assert_contains "dr docker shows usage" "Usage:" "$result"

# Test: dr docker prune dry-run
result=$(u7 --dry-run dr docker prune 2>&1)
assert_contains "dr docker prune dry-run works" "[dry-run]" "$result"

# Test: dr docker container dry-run
result=$(u7 --dry-run dr docker container test123 2>&1)
assert_contains "dr docker container dry-run works" "[dry-run]" "$result"

# Test: dr docker image dry-run
result=$(u7 --dry-run dr docker image test123 2>&1)
assert_contains "dr docker image dry-run works" "[dry-run]" "$result"

# Test: dr docker volume dry-run
result=$(u7 --dry-run dr docker volume test123 2>&1)
assert_contains "dr docker volume dry-run works" "[dry-run]" "$result"

# Test 92: sh system
result=$(u7 sh system 2>&1)
assert_contains "sh system shows hostname" "Hostname:" "$result"
Expand Down
Loading