#!/usr/bin/env python3

import sys, os, logging

logging.basicConfig(level=logging.DEBUG, format="%(levelname)s: %(message)s")

# Extend PYTHONPATH with 'lib'
sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), os.pardir, "lib")))

from jasy.js.parse.Parser import parse
from jasy.js.parse.ScopeScanner import scan

def jsdeps(source, filename=None):
    root = parse(source, filename)
    variables = scan(root)
    
    if variables.modified:
        print("Exported Variables:")
        for name in sorted(variables.modified):
            print(" - %s" % name)

    if variables.shared:
        print("Accessed Globals:")
        for name in sorted(variables.shared):
            print(" - %s (%sx)" % (name, variables.shared[name]))

    if variables.packages:
        print("Accessed Packages:")
        for package in sorted(variables.packages):
            print(" - %s (%sx)" % (package, variables.packages[package]))


if __name__ == "__main__":
    for fname in sys.argv[1:]:
        jsdeps(open(fname, encoding="utf-8").read(), fname)
