#! /usr/bin/env bash

# Copyright 2015 The Serviced Authors.
# Licensed under the Apache License, Version 2.0 (the "License");              
# you may not use this file except in compliance with the License.             
# You may obtain a copy of the License at                                      
#                                                                              
#     http://www.apache.org/licenses/LICENSE-2.0                               
#                                                                              
# Unless required by applicable law or agreed to in writing, software          
# distributed under the License is distributed on an "AS IS" BASIS,            
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.        
# See the License for the specific language governing permissions and          
# limitations under the License. 

if [ $# -eq 0 ]; then
    DOCKER_LIB="/var/lib/docker"
else
    DOCKER_LIB="$1"
fi

if [ -n "$(df --type=btrfs $DOCKER_LIB 2>/dev/null)" ]; then
    for LAYER in $(comm -23 <(ls $DOCKER_LIB/btrfs/subvolumes | grep -v '\init' | sort | uniq) <(cat <(docker images --no-trunc -qa) <(docker ps --no-trunc -qa) | sort | uniq)); do
        btrfs subvolume delete $DOCKER_LIB/btrfs/subvolumes/"$LAYER" &>/dev/null
        btrfs subvolume delete $DOCKER_LIB/btrfs/subvolumes/"$LAYER"-init &>/dev/null
        rm -rf $DOCKER_LIB/volumes/"$LAYER"
        rm -rf $DOCKER_LIB/containers/"$LAYER"
    done
else
    echo "$DOCKER_LIB is not a btrfs filesystem. Skipping." >&2
fi