go-hep.org/x/hep@v0.38.1/fwk/cmd/fwk-app/cmd_build.go (about) 1 // Copyright ©2017 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 package main 6 7 import ( 8 "flag" 9 "fmt" 10 11 "codeberg.org/gonuts/commander" 12 "go-hep.org/x/hep/fwk/utils/builder" 13 ) 14 15 func fwk_make_cmd_build() *commander.Command { 16 cmd := &commander.Command{ 17 Run: fwk_run_cmd_build, 18 UsageLine: "build [options] <config.go> [<config2.go> [...]]", 19 Short: "build a fwk job", 20 Long: ` 21 build builds a fwk-based job and produces a binary. 22 23 ex: 24 $ fwk-app build config.go 25 $ fwk-app build config1.go config2.go 26 $ fwk-app build ./some-dir 27 $ fwk-app build -o=my-binary config.go 28 `, 29 Flag: *flag.NewFlagSet("fwk-app-build", flag.ExitOnError), 30 } 31 cmd.Flag.String("o", "", "name of the resulting binary (default=name of parent directory)") 32 return cmd 33 } 34 35 func fwk_run_cmd_build(cmd *commander.Command, args []string) error { 36 var err error 37 n := "fwk-app-" + cmd.Name() 38 39 fnames := make([]string, 0, len(args)) 40 for _, arg := range args { 41 if arg == "" { 42 continue 43 } 44 if arg[0] == '-' { 45 continue 46 } 47 fnames = append(fnames, arg) 48 } 49 50 if len(fnames) <= 0 { 51 return fmt.Errorf("%s: you need to give a list of files or a directory", n) 52 } 53 54 bldr, err := builder.NewBuilder(fnames...) 55 if err != nil { 56 return err 57 } 58 59 if o := cmd.Lookup("o").(string); o != "" { 60 bldr.Name = o 61 } 62 63 err = bldr.Build() 64 if err != nil { 65 return err 66 } 67 68 return err 69 }