go-hep.org/x/hep@v0.38.1/groot/cmd/root-merge/main.go (about) 1 // Copyright ©2019 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // root-merge merges ROOT files' content into a merged ROOT file. 6 // 7 // Usage: root-merge [options] file1.root [file2.root [file3.root [...]]] 8 // 9 // ex: 10 // 11 // $> root-merge -o out.root ./testdata/chain.flat.1.root ./testdata/chain.flat.2.root 12 // 13 // options: 14 // 15 // -o string 16 // path to merged output ROOT file (default "out.root") 17 // -v enable verbose mode 18 package main // import "go-hep.org/x/hep/groot/cmd/root-merge" 19 20 import ( 21 "flag" 22 "fmt" 23 "log" 24 "os" 25 26 "go-hep.org/x/hep/groot/rcmd" 27 _ "go-hep.org/x/hep/groot/riofs/plugin/http" 28 _ "go-hep.org/x/hep/groot/riofs/plugin/xrootd" 29 ) 30 31 func main() { 32 log.SetPrefix("root-merge: ") 33 log.SetFlags(0) 34 35 var ( 36 oname = flag.String("o", "out.root", "path to merged output ROOT file") 37 verbose = flag.Bool("v", false, "enable verbose mode") 38 ) 39 40 flag.Usage = func() { 41 fmt.Fprintf( 42 os.Stderr, 43 `Usage: root-merge [options] file1.root [file2.root [file3.root [...]]] 44 45 ex: 46 $> root-merge -o out.root ./testdata/chain.flat.1.root ./testdata/chain.flat.2.root 47 48 options: 49 `, 50 ) 51 flag.PrintDefaults() 52 } 53 54 flag.Parse() 55 56 if flag.NArg() < 1 { 57 flag.Usage() 58 log.Fatalf("missing input files") 59 } 60 61 fnames := flag.Args() 62 63 err := rcmd.Merge(*oname, fnames, *verbose) 64 if err != nil { 65 log.Fatalf("could not merge ROOT files: %+v", err) 66 } 67 }