| Index: mojom/mojom_parser/parser_main.go
|
| diff --git a/mojom/mojom_parser/parser_main.go b/mojom/mojom_parser/parser_main.go
|
| deleted file mode 100644
|
| index d00523ed6535dcaa5552dd455e54d4fd5d439498..0000000000000000000000000000000000000000
|
| --- a/mojom/mojom_parser/parser_main.go
|
| +++ /dev/null
|
| @@ -1,139 +0,0 @@
|
| -// 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.
|
| -
|
| -/*
|
| - 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.
|
| -
|
| - The tool is invoked as follows:
|
| -
|
| - mojom_parser [-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.
|
| - <mojom_file>... is one or more paths to .mojom files to be parsed.
|
| -
|
| - If there are no errors then the program returns status zero and writes nothing
|
| - to standard error and writes nothing to standard out except possibly the output
|
| - if <out_file> is not specified. If there are any errors then the program returns
|
| - status code 1 and writes error messages to standard error.
|
| -
|
| - If -debug is specified then the program emits lots of debugging data to
|
| - standard out, including a depiction of the parse trees. If also <out_file> is
|
| - not specified then the actual output is written at the end after the debugging
|
| - data.
|
| -*/
|
| -
|
| -package main
|
| -
|
| -import (
|
| - "bufio"
|
| - "flag"
|
| - "fmt"
|
| - "io/ioutil"
|
| - "mojom/mojom_parser/mojom"
|
| - "mojom/mojom_parser/parser"
|
| - "mojom/mojom_parser/serialization"
|
| - "os"
|
| - "path/filepath"
|
| - "strings"
|
| -)
|
| -
|
| -// DirectoryList holds the result of parsing a command-line flag
|
| -// that accepts a comma-separated list of directory paths. This
|
| -// type satisfies the flag.Value interface.
|
| -type DirectoryList []string
|
| -
|
| -func (dl *DirectoryList) String() string {
|
| - return fmt.Sprintf("%v", *dl)
|
| -}
|
| -
|
| -func (dl *DirectoryList) Set(args string) error {
|
| - for _, name := range strings.Split(args, ",") {
|
| - info, err := os.Stat(name)
|
| - if err != nil {
|
| - return err
|
| - }
|
| - if !info.IsDir() {
|
| - return fmt.Errorf("%s is not a directory.", name)
|
| - }
|
| - *dl = append(*dl, name)
|
| - }
|
| - 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 "+
|
| - "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, "+
|
| - "not mojom declarations or import statements.")
|
| - flag.Parse()
|
| -
|
| - fileNames := flag.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])))
|
| - }
|
| -
|
| - parseDriver := parser.NewDriver(directoryListFlag, *debug, *metaDataOnly)
|
| -
|
| - // Do the parsing
|
| - descriptor, err := parseDriver.ParseFiles(fileNames)
|
| - if err != nil {
|
| - ErrorExit(fmt.Sprintf("%s", err.Error()))
|
| - } else if *debug {
|
| - fmt.Println("Parsing complete.")
|
| - }
|
| -
|
| - // Serialize the result.
|
| - bytes, debug_string, err := serialization.Serialize(descriptor, *debug)
|
| - if err != nil {
|
| - ErrorExit(fmt.Sprintf("Serialization error: %s", err))
|
| - }
|
| -
|
| - // In debug mode print out the debug information.
|
| - if *debug {
|
| - PrintDebugOutput(debug_string, descriptor)
|
| - }
|
| -
|
| - // Emit the output to a file or standard out.
|
| - if len(*outFile) == 0 {
|
| - w := bufio.NewWriter(os.Stdout)
|
| - if _, err := w.Write(bytes); err != nil {
|
| - ErrorExit(fmt.Sprintf("Error writing output to standard out: %s.", *outFile, err.Error()))
|
| - }
|
| - w.Flush()
|
| - } else {
|
| - if err := ioutil.WriteFile(*outFile, bytes, os.ModePerm); err != nil {
|
| - ErrorExit(fmt.Sprintf("Error writing output to %s: %s.", *outFile, err.Error()))
|
| - } else {
|
| - if *debug {
|
| - fmt.Printf("The output was written to %s.\n", *outFile)
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -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:")
|
| - fmt.Printf("\n%s\n", descriptor.String())
|
| - fmt.Println("\n\n=============================================")
|
| - fmt.Println("\n Debug Serialized Output:")
|
| - fmt.Println(debugString)
|
| -}
|
|
|