func main() { // initialize command-line opts usageStr := " --host myhost --db my_cms --collection docs < mydocfile." + "json \n\nImport CSV, TSV or JSON data into MongoDB.\n\nWhen importing " + "JSON documents, each document must be a separate line of the input file." opts := commonopts.New("mongoimport", "0.0.1", usageStr) inputOpts := &options.InputOptions{} opts.AddOptions(inputOpts) ingestOpts := &options.IngestOptions{} opts.AddOptions(ingestOpts) _, err := opts.Parse() if err != nil { util.Panicf("error parsing command line options: %v", err) } // print help, if specified if opts.PrintHelp() { return } // print version, if specified if opts.PrintVersion() { return } // create a session provider to connect to the db sessionProvider, err := db.InitSessionProvider(*opts) if err != nil { util.Panicf("error initializing database session: %v", err) } importer := mongoimport.MongoImport{ ToolOptions: opts, InputOptions: inputOpts, IngestOptions: ingestOpts, SessionProvider: sessionProvider, } if err = importer.ValidateSettings(); err != nil { util.PrintfTimeStamped("Error validating settings: %v\n", err) os.Exit(1) } numDocs, err := importer.ImportDocuments() if !opts.Quiet { message := fmt.Sprintf("imported 1 object\n") if numDocs != 1 { message = fmt.Sprintf("imported %v objects\n", numDocs) } util.PrintfTimeStamped(message) } if err != nil { fmt.Fprintf(os.Stderr, "Error importing documents: %v\n", err) os.Exit(1) } }
func main() { // initialize command-line opts opts := commonopts.New("mongotop", "0.0.1", "<options> <sleeptime>") // add mongotop-specific options outputOpts := &options.Output{} opts.AddOptions(outputOpts) extra, err := opts.Parse() if err != nil { util.Panicf("error parsing command line options: %v", err) } // print help, if specified if opts.PrintHelp() { return } // print version, if specified if opts.PrintVersion() { return } // pull out the sleeptime // TODO: validate args length sleeptime := DEFAULT_SLEEP_TIME if len(extra) > 0 { sleeptime, err = strconv.Atoi(extra[0]) if err != nil { util.Panicf("bad sleep time: %v", extra[0]) } } // create a session provider to connect to the db sessionProvider, err := db.InitSessionProvider(*opts) if err != nil { util.Panicf("error initializing database session: %v", err) } // instantiate a mongotop instance top := &mongotop.MongoTop{ Options: opts, OutputOptions: outputOpts, Outputter: &output.TerminalOutputter{}, SessionProvider: sessionProvider, Sleeptime: time.Duration(sleeptime) * time.Second, Once: outputOpts.Once, } // kick it off if err := top.Run(); err != nil { util.Panicf("error running mongotop: %v", err) } }
func main() { // initialize command-line opts opts := commonopts.New("bsondump", "0.0.1", "<file>") bsonDumpOpts := &options.BSONDumpOptions{} opts.AddOptions(bsonDumpOpts) extra, err := opts.Parse() if err != nil { util.Panicf("error parsing command line options: %v", err) } // print help, if specified if opts.PrintHelp() { return } // print version, if specified if opts.PrintVersion() { return } // pull out the filename filename := "" if len(extra) == 0 { opts.PrintHelp() return } else if len(extra) > 1 { fmt.Println("Too many positional operators.") opts.PrintHelp() os.Exit(1) return } else { filename = extra[0] if filename == "" { fmt.Println("Filename must not be blank.") opts.PrintHelp() os.Exit(1) } } dumper := bsondump.BSONDump{ ToolOptions: opts, BSONDumpOptions: bsonDumpOpts, FileName: filename, Out: os.Stdout, } if bsonDumpOpts.Type == "debug" { err = dumper.Debug() } else if bsonDumpOpts.Type == "json" || bsonDumpOpts.Type == "" { err = dumper.Dump() } else { err = fmt.Errorf("Unsupported output type '%'. Must be either 'debug' or 'json'", bsonDumpOpts.Type) } if err != nil { fmt.Println(err) os.Exit(1) } }
func main() { // initialize command-line opts opts := commonopts.New("mongoexport", "0.0.1", "<options> <sleeptime>") outputOpts := &options.OutputFormatOptions{} opts.AddOptions(outputOpts) inputOpts := &options.InputOptions{} opts.AddOptions(inputOpts) _, err := opts.Parse() if err != nil { util.Panicf("error parsing command line options: %v", err) } // print help, if specified if opts.PrintHelp() { return } // print version, if specified if opts.PrintVersion() { return } exporter := mongoexport.MongoExport{ ToolOptions: *opts, OutputOpts: outputOpts, InputOpts: inputOpts, } err = exporter.ValidateSettings() if err != nil { //TODO log to stderr for real fmt.Fprintf(os.Stderr, "Error: %v\n", err) } numDocs, err := exporter.Export() if err != nil { //TODO log to stderr for real fmt.Fprintf(os.Stderr, "Error: %v\n", err) os.Exit(1) } if !opts.Quiet { if numDocs == 1 { fmt.Fprintf(os.Stderr, fmt.Sprintf("exported %v record\n", numDocs)) } else { fmt.Fprintf(os.Stderr, fmt.Sprintf("exported %v records\n", numDocs)) } } }