github.com/hwaf/hwaf@v0.0.0-20140814122253-5465f73b20f1/cmd_self_bdist_upload.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "runtime" 8 "time" 9 10 "github.com/gonuts/commander" 11 "github.com/gonuts/flag" 12 ) 13 14 func hwaf_make_cmd_self_bdist_upload() *commander.Command { 15 cmd := &commander.Command{ 16 Run: hwaf_run_cmd_self_bdist_upload, 17 UsageLine: "bdist-upload [options] [filename.tar.gz]", 18 Short: "upload hwaf binary distribution to cern.ch/mana-fwk", 19 Long: ` 20 bdist-upload uploads a hwaf binary distribution to http://cern.ch/mana-fwk. 21 22 ex: 23 $ hwaf self bdist-upload 24 $ hwaf self bdist-upload hwaf-20130101-linux-amd64.tar.gz 25 `, 26 Flag: *flag.NewFlagSet("hwaf-self-bdist-upload", flag.ExitOnError), 27 } 28 cmd.Flag.Bool("v", false, "enable verbose output") 29 return cmd 30 } 31 32 func hwaf_run_cmd_self_bdist_upload(cmd *commander.Command, args []string) error { 33 var err error 34 n := "hwaf-self-" + cmd.Name() 35 36 fname := "" 37 switch len(args) { 38 case 0: 39 vers := time.Now().Format("20060102") 40 arch := fmt.Sprintf("%s-%s", runtime.GOOS, runtime.GOARCH) 41 fname = fmt.Sprintf("hwaf-%s-%s.tar.gz", vers, arch) 42 case 1: 43 fname = args[0] 44 default: 45 return fmt.Errorf("%s: takes a path to a file to upload", n) 46 } 47 48 verbose := cmd.Flag.Lookup("v").Value.Get().(bool) 49 50 if verbose { 51 fmt.Printf("%s [%s]...\n", n, fname) 52 } 53 54 if !path_exists(fname) { 55 fname = os.ExpandEnv(fname) 56 if !path_exists(fname) { 57 return fmt.Errorf("no such file [%s]", fname) 58 } 59 } 60 61 dst_dir := "binet@lxvoadm.cern.ch:/afs/cern.ch/atlas/project/hwaf/www/downloads/tar" 62 dst := fmt.Sprintf("%s/%s", dst_dir, fname) 63 scp := exec.Command("scp", fname, dst) 64 scp.Stdin = os.Stdin 65 scp.Stdout = os.Stdout 66 scp.Stderr = os.Stderr 67 err = scp.Run() 68 if err != nil { 69 return err 70 } 71 72 if verbose { 73 fmt.Printf("%s [%s]... [ok]\n", n, fname) 74 } 75 76 return err 77 } 78 79 // EOF