#!/usr/bin/env python3
"""
Given a path, delete all the empty directories in it
"""

import argparse
import os
import sys
import subprocess

parser = argparse.ArgumentParser()
parser.add_argument("remote", help="an rclone remote:path")
parser.add_argument("--dry-run", help="don't delete empty directories if set", action="store_true")
args = parser.parse_args()
remote = args.remote

dirs_output = subprocess.check_output(["rclone", "-q", "--max-depth", "10000", "lsd", remote])
files_output = subprocess.check_output(["rclone", "-q", "ls", remote])

dirs = set()
for line in dirs_output.decode("utf-8").split("\n"):
    dir = line[43:]
    dirs.add(dir)

files = set()
used_dirs = set()
for line in files_output.decode("utf-8").split("\n"):
    file = line[10:]
    files.add(file)
    dir = file
    while True:
        dir = os.path.dirname(dir)
        if dir in used_dirs:
            break
        used_dirs.add(dir)

empty_dirs = dirs - used_dirs

for dir in sorted(empty_dirs):
    if remote.endswith(":"):
        dir = remote + dir
    else:
        dir = remote + "/" + dir
    if args.dry_run:
        print("Not deleting: %s" % dir)
    else:
        print("Deleting empty directory: %s" % dir)
        subprocess.check_call(["rclone", "-q", "rmdir", dir])
