Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1106)

Unified Diff: mojom/mojom_parser/generators/common/cli.go

Issue 1737143003: A mojom .d generator. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Update sha1. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojom/mojom_parser/generators/common/cli.go
diff --git a/mojom/mojom_parser/generators/common/cli.go b/mojom/mojom_parser/generators/common/cli.go
new file mode 100644
index 0000000000000000000000000000000000000000..fdfee9763614edd29177ad2717f5820b79f37fe0
--- /dev/null
+++ b/mojom/mojom_parser/generators/common/cli.go
@@ -0,0 +1,111 @@
+// Copyright 2016 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.
+
+// cli.go implements logic to create a generator config object from command
+// line arguments.
+
+package common
+
+import (
+ "flag"
+ "io"
+ "io/ioutil"
+ "log"
+ "os"
+ "path/filepath"
+
+ "mojo/public/go/bindings"
+ "mojom/mojom_parser/generated/mojom_files"
+)
+
+// GetConfig provides the primary interface for generators.
+// By calling GetConfig, a generator implements the command line interface
+// that is used by all generators.
+func GetCliConfig(args []string) GeneratorConfig {
+ config := new(generatorCliConfig)
+ flagSet := flag.NewFlagSet("Generator Common Flag Set", flag.ExitOnError)
+
+ var fileGraphFile string
+ flagSet.StringVar(&fileGraphFile, "file-graph", "-",
+ "Location of the parser output. \"-\" for stdin. (default \"-\")")
+ flagSet.StringVar(&config.outputDir, "output-dir", ".",
+ "output directory for generated files.")
+ flagSet.StringVar(&config.srcRootPath, "src-root-path", ".",
+ "relative path to the root of the source tree.")
+ flagSet.BoolVar(&config.noGenImports, "no-gen-imports", false,
+ "Generate code only for the files that are specified on the command line. "+
+ "By default, code is generated for all specified files and their transitive imports.")
+
+ flagSet.Parse(args[1:])
+
+ // Compute the absolute path for the source root and the output directory.
+ var err error
+ config.srcRootPath, err = filepath.Abs(config.srcRootPath)
+ if err != nil {
+ log.Fatalln(err.Error())
+ }
+
+ config.outputDir, err = filepath.Abs(config.outputDir)
+ if err != nil {
+ log.Fatalln(err.Error())
+ }
+
+ // Read the file graph either from standard in or the specified file.
+ var fileGraphReader io.Reader
+ if fileGraphFile == "-" {
+ fileGraphReader = os.Stdin
+ } else {
+ var err error
+ if fileGraphReader, err = os.Open(fileGraphFile); err != nil {
+ log.Fatalln(err.Error())
+ }
+ }
+
+ config.fileGraph = decodeFileGraph(fileGraphReader)
+ return config
+}
+
+// decodeFileGraph decodes a serialized MojomFileGraph.
+func decodeFileGraph(in io.Reader) (fileGraph *mojom_files.MojomFileGraph) {
+ inputBytes, err := ioutil.ReadAll(in)
+ if err != nil {
+ log.Fatalf("Failed to read: %v\n", err)
+ }
+
+ decoder := bindings.NewDecoder(inputBytes, nil)
+ fileGraph = new(mojom_files.MojomFileGraph)
+ if err := fileGraph.Decode(decoder); err != nil {
+ log.Fatalf("Failed to decode file graph: %v\n", err)
+ }
+
+ return
+}
+
+// generatorCliConfig implements GeneratorConfig.
+type generatorCliConfig struct {
+ fileGraph *mojom_files.MojomFileGraph
+ outputDir string
+ srcRootPath string
+ noGenImports bool
+}
+
+// See GeneratorConfig.
+func (c *generatorCliConfig) FileGraph() *mojom_files.MojomFileGraph {
+ return c.fileGraph
+}
+
+// See GeneratorConfig.
+func (c *generatorCliConfig) OutputDir() string {
+ return c.outputDir
+}
+
+// See GeneratorConfig.
+func (c *generatorCliConfig) SrcRootPath() string {
+ return c.srcRootPath
+}
+
+// See GeneratorConfig.
+func (c *generatorCliConfig) GenImports() bool {
+ return !c.noGenImports
+}
« no previous file with comments | « mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1 ('k') | mojom/mojom_parser/generators/common/common.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698