#!/usr/bin/python3.6

import sys
import cvmfs
import os

def usage():
    print("Usage: catdirusage <local repo name | remote repo url> topdir")
    print("  Prints the number of files in the current catalog for each sub-directory")
    print("  under topdir, sorted smallest to largest.")
    sys.exit(1)

if len(sys.argv) != 3:
    usage();

repo_identifier = sys.argv[1]
toppath = sys.argv[2]

repo = cvmfs.open_repository(repo_identifier)
revision = repo.get_current_revision()
clg = revision.retrieve_catalog_for_path(toppath)
counts = {}
pathlen = len(toppath)
for dirent in clg:
    file = dirent[0]
    if len(file) <= pathlen:
        continue
    if file[0:pathlen] != toppath:
        continue
    slash = file.find('/', pathlen+1)
    if slash == -1:
        counts[file] = 0
    else:
        counts[file[0:slash]] += 1
for dir in sorted(counts, key=counts.get):
    if counts[dir] > 0:
        print(str(counts[dir]) + '\t' + dir)
