func (c *GraphCommand) Run(args []string) int { var moduleDepth int args = c.Meta.process(args, false) cmdFlags := flag.NewFlagSet("graph", flag.ContinueOnError) cmdFlags.IntVar(&moduleDepth, "module-depth", 0, "module-depth") cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } if err := cmdFlags.Parse(args); err != nil { return 1 } var path string args = cmdFlags.Args() if len(args) > 1 { c.Ui.Error("The graph command expects one argument.\n") cmdFlags.Usage() return 1 } else if len(args) == 1 { path = args[0] } else { var err error path, err = os.Getwd() if err != nil { c.Ui.Error(fmt.Sprintf("Error getting pwd: %s", err)) } } ctx, _, err := c.Context(contextOpts{ Path: path, StatePath: "", }) if err != nil { c.Ui.Error(fmt.Sprintf("Error loading Terraform: %s", err)) return 1 } g, err := ctx.Graph() if err != nil { c.Ui.Error(fmt.Sprintf("Error creating graph: %s", err)) return 1 } opts := &terraform.GraphDotOpts{ ModuleDepth: moduleDepth, } c.Ui.Output(terraform.GraphDot(g, opts)) return 0 }
func (c *GraphCommand) Run(args []string) int { args = c.Meta.process(args) cmdFlags := flag.NewFlagSet("graph", flag.ContinueOnError) cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } if err := cmdFlags.Parse(args); err != nil { return 1 } var path string args = cmdFlags.Args() if len(args) > 1 { c.Ui.Error("The graph command expects one argument.\n") cmdFlags.Usage() return 1 } else if len(args) == 1 { path = args[0] } else { var err error path, err = os.Getwd() if err != nil { c.Ui.Error(fmt.Sprintf("Error getting pwd: %s", err)) } } ctx, _, err := c.Context(path, "") if err != nil { c.Ui.Error(fmt.Sprintf("Error loading Terraform: %s", err)) return 1 } g, err := ctx.Graph() if err != nil { c.Ui.Error(fmt.Sprintf("Error creating graph: %s", err)) return 1 } c.Ui.Output(terraform.GraphDot(g)) return 0 }
func (c *GraphCommand) Run(args []string) int { var moduleDepth int var verbose bool var drawCycles bool args = c.Meta.process(args, false) cmdFlags := flag.NewFlagSet("graph", flag.ContinueOnError) c.addModuleDepthFlag(cmdFlags, &moduleDepth) cmdFlags.BoolVar(&verbose, "verbose", false, "verbose") cmdFlags.BoolVar(&drawCycles, "draw-cycles", false, "draw-cycles") cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } if err := cmdFlags.Parse(args); err != nil { return 1 } var path string args = cmdFlags.Args() if len(args) > 1 { c.Ui.Error("The graph command expects one argument.\n") cmdFlags.Usage() return 1 } else if len(args) == 1 { path = args[0] } else { var err error path, err = os.Getwd() if err != nil { c.Ui.Error(fmt.Sprintf("Error getting pwd: %s", err)) } } ctx, _, err := c.Context(contextOpts{ Path: path, StatePath: "", }) if err != nil { c.Ui.Error(fmt.Sprintf("Error loading Terraform: %s", err)) return 1 } // Skip validation during graph generation - we want to see the graph even if // it is invalid for some reason. g, err := ctx.Graph(&terraform.ContextGraphOpts{ Verbose: verbose, Validate: false, }) if err != nil { c.Ui.Error(fmt.Sprintf("Error creating graph: %s", err)) return 1 } graphStr, err := terraform.GraphDot(g, &dag.DotOpts{ DrawCycles: drawCycles, MaxDepth: moduleDepth, Verbose: verbose, }) if err != nil { c.Ui.Error(fmt.Sprintf("Error converting graph: %s", err)) return 1 } c.Ui.Output(graphStr) return 0 }