#!/usr/bin/env python
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Produces a dot file showing dependency relationships between modules.

The dot file contains a text-based representation of a directed graph that
explains why given module names were included in a trace_viewer config.

Example usage:
$ ./why_imported ui.analysis.analysis_view > ~/analysis_view.dot

This can then be converted to a graphical representation with the dot tool:
$ dot -Grankdir=LR -Tpng ~/analysis_view.dot -o ~/analysis_view.png
"""

import sys
import optparse

import tracing_project
tracing_project.UpdateSysPathIfNeeded()

def Main(args):
  project = tracing_project.TracingProject()

  parser = optparse.OptionParser(
      usage='%prog <options> moduleNames', epilog=__doc__)
  parser.add_option(
      '--config', type='choice', choices=project.GetConfigNames())
  options, args = parser.parse_args(args)

  if options.config:
    names = [project.GetModuleNameForConfigName(options.config)]
    vulcanizer = project.CreateVulcanizer()
    load_sequence = vulcanizer.CalcLoadSequenceForModuleNames(names)
  else:
    parser.error('Unsupported')
  print vulcanizer.GetDominatorGraphForModulesNamed(args, load_sequence)


if __name__ == '__main__':
  sys.exit(Main(sys.argv[1:]))
