         public enum OutputFormat: String, CaseIterable, CommandLineArgumentChoices {
             case json, graphviz
         }
+
+        public enum GraphvizDisplay: String, CaseIterable, CommandLineArgumentChoices {
+            case criticalPath
+            case everything
+        }
         
         var database: AbsolutePath!
         var outputPath: AbsolutePath?
         var clientSchemaVersion = 9
         var outputFormat: OutputFormat = .json
+        var graphvizDisplay: GraphvizDisplay = .criticalPath
         var pretty = false
         var quiet = false
         

    
    private func graphViz(_ path: CriticalBuildPath, buildKeyLookup: IdentifierFactory<BuildKey>) -> Data {
        var result = "digraph G {\n\tedge [style=dotted]\n"
        
        func string(for key: BuildKey) -> String {
            // TODO: This is obviously just temporary - need a shorter version for visualization
            return buildKeyLookup.identifier(element: key).description
        }
        
        for element in path {
            for dep in element.result.dependencies {
                result += "\t\"\(string(for: dep))\" -> \"\(string(for: element.key))\"\n"
            }
        }
        
        result += "}"
        return result.data(using: .utf8) ?? Data()
    }

        binder.bind(
            option: parser.add(option: "--pretty", usage: "If output format is json, the output will be pretty printed"),
            to: { $0.pretty = $1 })

        binder.bind(
            option: parser.add(option: "--graphvizOutput", usage: "Graphviz display options. Possible values: \(Options.GraphvizDisplay.helpDescription)."),
            to: { $0.graphvizDisplay = Options.GraphvizDisplay(rawValue: $1) ?? .everything }
        )
        
        binder.bind(
            option: parser.add(option: "--quiet", shortName: "-q", usage: "There will be no output on stdout."),
