go-hep.org/x/hep@v0.38.1/groot/cmd/root-cp/main.go (about)

     1  // Copyright ©2018 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-cp selects and copies keys from a ROOT file to another ROOT file.
     6  //
     7  // Usage: root-cp [options] file1.root[:REGEXP] [file2.root[:REGEXP] [...]] out.root
     8  //
     9  // ex:
    10  //
    11  //	$> root-cp f.root out.root
    12  //	$> root-cp f1.root f2.root f3.root out.root
    13  //	$> root-cp f1.root:hist.* f2.root:h2 out.root
    14  package main // import "go-hep.org/x/hep/groot/cmd/root-cp"
    15  
    16  import (
    17  	"flag"
    18  	"fmt"
    19  	"log"
    20  	"os"
    21  
    22  	"go-hep.org/x/hep/groot/rcmd"
    23  	_ "go-hep.org/x/hep/groot/riofs/plugin/http"
    24  	_ "go-hep.org/x/hep/groot/riofs/plugin/xrootd"
    25  )
    26  
    27  func main() {
    28  	log.SetPrefix("root-cp: ")
    29  	log.SetFlags(0)
    30  	log.SetOutput(os.Stderr)
    31  
    32  	flag.Usage = func() {
    33  		fmt.Fprintf(
    34  			os.Stderr,
    35  			`Usage: root-cp [options] file1.root[:REGEXP] [file2.root[:REGEXP] [...]] out.root
    36  
    37  ex:
    38   $> root-cp f.root out.root
    39   $> root-cp f1.root f2.root f3.root out.root
    40   $> root-cp f1.root:hist.* f2.root:h2 out.root
    41  
    42  options:
    43  `,
    44  		)
    45  		flag.PrintDefaults()
    46  	}
    47  
    48  	flag.Parse()
    49  
    50  	if flag.NArg() < 2 {
    51  		log.Printf("error: you need to give input and output ROOT files\n\n")
    52  		flag.Usage()
    53  		os.Exit(1)
    54  	}
    55  
    56  	dst := flag.Arg(flag.NArg() - 1)
    57  	srcs := flag.Args()[:flag.NArg()-1]
    58  
    59  	err := rcmd.Copy(dst, srcs)
    60  	if err != nil {
    61  		log.Fatal(err)
    62  	}
    63  }