- if *inputFile == "" && *inputDir == "" {
- fmt.Fprintln(os.Stderr, "ERROR: input-file or input-dir must be specified")
- os.Exit(1)
- }
-
- if *inputFile != "" {
- // process one input file
- if err := generateFromFile(*inputFile, *outputDir); err != nil {
- fmt.Fprintf(os.Stderr, "ERROR: code generation from %s failed: %v\n", *inputFile, err)
- os.Exit(1)
- }
- } else {
- // process all files in specified directory
- files, err := getInputFiles(*inputDir)
- if err != nil {
- fmt.Fprintf(os.Stderr, "ERROR: code generation failed: %v\n", err)
- os.Exit(1)
- }
- for _, file := range files {
- if err := generateFromFile(file, *outputDir); err != nil {
- fmt.Fprintf(os.Stderr, "ERROR: code generation from %s failed: %v\n", file, err)
- if *continueOnError {
- continue
- }
- os.Exit(1)
- }
- }
- }
-}
-
-// getInputFiles returns all input files located in specified directory
-func getInputFiles(inputDir string) (res []string, err error) {
- files, err := ioutil.ReadDir(inputDir)
- if err != nil {
- return nil, fmt.Errorf("reading directory %s failed: %v", inputDir, err)
- }
- for _, f := range files {
- if strings.HasSuffix(f.Name(), inputFileExt) {
- res = append(res, filepath.Join(inputDir, f.Name()))
- }
- }
- return res, nil
-}
-
-// generateFromFile generates Go package from one input JSON file
-func generateFromFile(inputFile, outputDir string) error {
- logf("generating from file: %q", inputFile)
- defer logf("--------------------------------------")
-
- ctx, err := getContext(inputFile, outputDir)
- if err != nil {
- return err
- }
-
- // read input file contents
- ctx.inputData, err = readFile(inputFile)
- if err != nil {
- return err
- }
- // parse JSON data into objects
- jsonRoot, err := parseJSON(ctx.inputData)
- if err != nil {
- return err
- }
- ctx.packageData, err = parsePackage(ctx, jsonRoot)
- if err != nil {
- return err
- }
-
- // create output directory
- packageDir := filepath.Dir(ctx.outputFile)
- if err := os.MkdirAll(packageDir, 0777); err != nil {
- return fmt.Errorf("creating output directory %q failed: %v", packageDir, err)
- }
- // open output file
- f, err := os.Create(ctx.outputFile)
- if err != nil {
- return fmt.Errorf("creating output file %q failed: %v", ctx.outputFile, err)
- }
- defer f.Close()
+ var (
+ theApiDir = flag.String("input-dir", vppapi.DefaultDir, "Input directory containing API files. (e.g. )")
+ theOutputDir = flag.String("output-dir", "binapi", "Output directory where code will be generated.")
+ importPrefix = flag.String("import-prefix", "", "Prefix imports in the generated go code. \nE.g. other API Files (e.g. api_file.ba.go) will be imported with :\nimport (\n api_file \"<import-prefix>/api_file\"\n)")
+ generatorPlugins = flag.String("gen", "rpc", "List of generator plugins to run for files.")
+ theInputFile = flag.String("input-file", "", "DEPRECATED: Use program arguments to define files to generate.")
+
+ printVersion = flag.Bool("version", false, "Prints version and exits.")
+ debugLog = flag.Bool("debug", false, "Enable verbose logging.")
+ noVersionInfo = flag.Bool("no-version-info", false, "Disable version info in generated files.")
+ noSourcePathInfo = flag.Bool("no-source-path-info", false, "Disable source path info in generated files.")
+ )
+ flag.Parse()