#!/usr/bin/env python3
import sys
import os

# Line string
line = '|-- '
green = '\033[32m'
blue = '\033[34m'
color_reset = '\033[0m'
tab = '    '

def tree(path, depth):
    # use list comprehension to ignore files begining with .
    files = [os.path.join(path,f) for f in os.listdir(path) if not f.startswith('.')]

    # Sort our files in ascending order
    files.sort()

    for f in files:
        # print(f, s)
        if os.path.isdir(f):
            print(tab * depth, line , blue, f.replace(path+'/', ''), color_reset, sep='')
            tree(f, depth+1)
        elif os.path.isfile(f):
            print(tab * depth, line, f.replace(path+'/', ''), sep='')



# Allow the user to specify a directory to list the contents of
if __name__ == '__main__':
    path = '.'
    # Handle arguments
    if len(sys.argv) > 1:
        # The path should be the only argument not starting with a -
        for a in sys.argv[1:]:
            if not a.startswith('-'):
                path = a
                # If the directory does not exist quit
                if not os.path.isdir(path):
                    print('Directory does not exist.')
                    exit()
                # Break since we should have found the path
                break
    print(blue, path, color_reset, sep='')
    tree(path, 0)