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

Unified Diff: mojom/mojom_parser/parse_cmd.go

Issue 1702873002: Mojom formatter incorporated in the mojom binary. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 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
« no previous file with comments | « mojom/mojom_parser/mojom_main.go ('k') | mojom/mojom_parser/parser_main.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojom/mojom_parser/parse_cmd.go
diff --git a/mojom/mojom_parser/parser_main.go b/mojom/mojom_parser/parse_cmd.go
similarity index 67%
rename from mojom/mojom_parser/parser_main.go
rename to mojom/mojom_parser/parse_cmd.go
index d00523ed6535dcaa5552dd455e54d4fd5d439498..1c94c2fb890b8b75f013301cb47f9a151d273bbe 100644
--- a/mojom/mojom_parser/parser_main.go
+++ b/mojom/mojom_parser/parse_cmd.go
@@ -3,13 +3,13 @@
// found in the LICENSE file.
/*
- This file contains the main() for the Mojom parser binary. This tool parses
- a set of .mojom files and emits a serialized MojomFileGraph struct. See
- mojom_files.mojom for the definition of MojomFileGraph.
+ This file contains parseCmd which parses a set of .mojom files and emits a
+ serialized MojomFileGraph struct. See mojom_files.mojom for the definition of
+ MojomFileGraph.
- The tool is invoked as follows:
+ The parse command is invoked as follows:
- mojom_parser [-I <include_dirs>] [-out <out_file>] [-debug] <mojom_file>...
+ mojom parse [-I <include_dirs>] [-out <out_file>] [-debug] <mojom_file>...
<include_dirs> is comma-separated list of directory paths to search for mojom imports.
<out_file> is the path to the output file. If not given the output will be written to standard out.
@@ -64,25 +64,38 @@ func (dl *DirectoryList) Set(args string) error {
return nil
}
-var directoryListFlag DirectoryList
-
-func init() {
- flag.Var(&directoryListFlag, "I", "comma-separated list of directory paths to search for mojom imports")
-}
-
-func main() {
- outFile := flag.String("out", "", "The path to the output file. If not present the output will "+
+// parseCmd implements the parse command for the mojom tool.
+// The slice of strings |args| is the list of arguments passed on the command
+// line starting with the program name and followed by the invoked command.
+func parseCmd(args []string) {
+ flagSet := flag.NewFlagSet("parse", flag.ContinueOnError)
+ var directoryListFlag DirectoryList
+ flagSet.Var(&directoryListFlag, "I", "comma-separated list of directory paths to search for mojom imports")
+ outFile := flagSet.String("out", "", "The path to the output file. If not present the output will "+
"be written to standard out.")
- debug := flag.Bool("debug", false, "Generate debug data including the parse tree and print it to standard out.")
- metaDataOnly := flag.Bool("meta-data-only", false, "Only parse file attributes and 'module' statement, "+
+ debug := flagSet.Bool("debug", false, "Generate debug data including the parse tree and print it to standard out.")
+ metaDataOnly := flagSet.Bool("meta-data-only", false, "Only parse file attributes and 'module' statement, "+
"not mojom declarations or import statements.")
- flag.Parse()
+ flagSet.SetOutput(ioutil.Discard)
+
+ printUsage := func() {
+ fmt.Fprintf(os.Stderr, "Usage: %s parse [-I <include_dirs>] [-out <out_file>] [-debug] [-meta-data-only] <mojom_file>...\n\n", filepath.Base(args[0]))
+ fmt.Fprintf(os.Stderr, UsageString(flagSet))
+ }
- fileNames := flag.Args()
+ if err := flagSet.Parse(args[2:]); err != nil {
+ if err != flag.ErrHelp {
+ fmt.Fprintln(os.Stderr, err.Error())
+ }
+ printUsage()
+ os.Exit(1)
+ }
+
+ fileNames := flagSet.Args()
if len(fileNames) == 0 {
- ErrorExit(fmt.Sprintf("No .mojom files given.\n"+
- "Usage: %s [-I <include_dirs>] [-out <out_file>] [-debug] [-meta-data-only] <mojom_file>...",
- filepath.Base(os.Args[0])))
+ fmt.Fprintln(os.Stderr, "No .mojom files given.")
+ printUsage()
+ os.Exit(1)
}
parseDriver := parser.NewDriver(directoryListFlag, *debug, *metaDataOnly)
@@ -124,11 +137,6 @@ func main() {
}
}
-func ErrorExit(message string) {
- fmt.Fprintf(os.Stderr, "%s\n", message)
- os.Exit(1)
-}
-
func PrintDebugOutput(debugString string, descriptor *mojom.MojomDescriptor) {
fmt.Println("\n\n=============================================")
fmt.Println("\n Pre-Serialized Go Object:")
« no previous file with comments | « mojom/mojom_parser/mojom_main.go ('k') | mojom/mojom_parser/parser_main.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698