Mercurial > mercurial > hgweb_golang.cgi
comparison src/ut/main.go @ 17:72ce457fb99d
ut: bug fix.
| author | pyon@macmini |
|---|---|
| date | Wed, 20 Jun 2018 06:01:58 +0900 |
| parents | 38b64afbaf79 |
| children | 45ca03520eea |
comparison
equal
deleted
inserted
replaced
| 16:38b64afbaf79 | 17:72ce457fb99d |
|---|---|
| 6 delete file on server | 6 delete file on server |
| 7 */ | 7 */ |
| 8 package main | 8 package main |
| 9 | 9 |
| 10 import ( | 10 import ( |
| 11 "archive/tar" | |
| 12 "bufio" | 11 "bufio" |
| 13 "bytes" | 12 "bytes" |
| 14 "compress/gzip" | |
| 15 "flag" | 13 "flag" |
| 16 "fmt" | 14 "fmt" |
| 17 "io" | 15 "io" |
| 18 "io/ioutil" | 16 "io/ioutil" |
| 19 "log" | 17 "log" |
| 27 "time" | 25 "time" |
| 28 | 26 |
| 29 "./lu" | 27 "./lu" |
| 30 ) | 28 ) |
| 31 | 29 |
| 32 var version = "1.01" | 30 var version = "1.02" |
| 33 | 31 |
| 34 func main() { | 32 func main() { |
| 35 | 33 |
| 36 var getfile = flag.Bool( "g", false, "get a file from site." ) // ok | 34 var getfile = flag.Bool( "g", false, "get a file from site." ) // ok |
| 37 var putfile = flag.Bool( "G", false, "put a file to site." ) // ok | 35 var putfile = flag.Bool( "G", false, "put a file to site." ) // ok |
| 38 var compupld = flag.Bool( "zu", false, "compress & upload files. (.tgz)" ) // ok | 36 var compress = flag.Bool( "z", false, "compress files. (.tgz)" ) // ok |
| 39 var compress = flag.Bool( "z", false, "compress files. ( not upload. )" ) // ok | |
| 40 var uncmprss = flag.Bool( "x", false, "uncompress files. (.tgz )" ) // ok | 37 var uncmprss = flag.Bool( "x", false, "uncompress files. (.tgz )" ) // ok |
| 41 var noprefix = flag.Bool( "n", false, "not add prefix(YYYYMMDDhhmm_) to filename." ) // ok | 38 var noprefix = flag.Bool( "n", false, "not add prefix(YYYYMMDDhhmm_) to filename." ) // ok |
| 42 | 39 |
| 43 var wget = flag.Bool( "w", false, "little wget tool." ) // ok | 40 var wget = flag.Bool( "w", false, "little wget tool." ) // ok |
| 44 var wc_l = flag.Bool( "l", false, "little wc -l tool." ) // ok | 41 var wc_l = flag.Bool( "l", false, "little wc -l tool." ) // ok |
| 55 //var swatch = flag.Bool( "W", false, "stop watch." ) | 52 //var swatch = flag.Bool( "W", false, "stop watch." ) |
| 56 //var bccalc = flag.Bool( "j", false, "calculator." ) | 53 //var bccalc = flag.Bool( "j", false, "calculator." ) |
| 57 //var bhole = flag.Bool( "k", false, "black hole. ( /dev/null )" ) | 54 //var bhole = flag.Bool( "k", false, "black hole. ( /dev/null )" ) |
| 58 var cmdtime = flag.Bool( "T", false, "measure program running time." ) | 55 var cmdtime = flag.Bool( "T", false, "measure program running time." ) |
| 59 var touch = flag.Bool( "t", false, "little touch tool." ) | 56 var touch = flag.Bool( "t", false, "little touch tool." ) |
| 57 var tee = flag.Bool( "e", false, "little tee tool." ) | |
| 60 var replace = flag.Bool( "r", false, "replace strings. ( s/arg1/arg2/g )" ) | 58 var replace = flag.Bool( "r", false, "replace strings. ( s/arg1/arg2/g )" ) |
| 61 var sort = flag.Bool( "s", false, "little sort tool." ) | 59 var sort = flag.Bool( "s", false, "little sort tool." ) |
| 62 var nsort = flag.Bool( "ns", false, "little number sort tool." ) | 60 var nsort = flag.Bool( "ns", false, "little number sort tool." ) |
| 63 var grep = flag.Bool( "a", false, "little grep tool." ) | 61 var grep = flag.Bool( "a", false, "little grep tool." ) |
| 64 var grepv = flag.Bool( "b", false, "little grep -v tool." ) | 62 var grepv = flag.Bool( "b", false, "little grep -v tool." ) |
| 143 lu.CutCsv( flag.Args() ) | 141 lu.CutCsv( flag.Args() ) |
| 144 os.Exit( 3 ) | 142 os.Exit( 3 ) |
| 145 } | 143 } |
| 146 */ | 144 */ |
| 147 | 145 |
| 146 if *tee { | |
| 147 fmt.Fprintln( os.Stderr, "not implement" ) | |
| 148 os.Exit( 3 ) | |
| 149 } | |
| 150 | |
| 148 if *sort { | 151 if *sort { |
| 149 fmt.Fprintln( os.Stderr, "not implement" ) | 152 fmt.Fprintln( os.Stderr, "not implement" ) |
| 150 os.Exit( 3 ) | 153 os.Exit( 3 ) |
| 151 } | 154 } |
| 152 | 155 |
| 256 if *ipscan { | 259 if *ipscan { |
| 257 fmt.Fprintln( os.Stderr, "not implement" ) | 260 fmt.Fprintln( os.Stderr, "not implement" ) |
| 258 os.Exit( 2 ) | 261 os.Exit( 2 ) |
| 259 } | 262 } |
| 260 | 263 |
| 264 if *compress && !*putfile { // done. | |
| 265 if err := is_exist_files( flag.Args() ); err != nil { | |
| 266 log.Fatal( err ) | |
| 267 } | |
| 268 tgz := time.Now().Format( "200601021504.tgz" ) | |
| 269 lu.Tgz( tgz, flag.Args() ) | |
| 270 os.Exit( 0 ) | |
| 271 } | |
| 272 | |
| 261 if *uncmprss { // done. | 273 if *uncmprss { // done. |
| 262 if err := is_exist_files( flag.Args() ); err != nil { | 274 if err := is_exist_files( flag.Args() ); err != nil { |
| 263 log.Fatal( err ) | 275 log.Fatal( err ) |
| 264 } | 276 } |
| 265 lu.UnTgz( flag.Args() ) | 277 lu.UnTgz( flag.Args() ) |
| 266 os.Exit( 0 ) | 278 os.Exit( 0 ) |
| 267 } | 279 } |
| 268 | 280 |
| 269 /* Here My Uplaad / Download Function */ | 281 /* Here My Uplaad / Download Function */ |
| 270 host := "http://777.nazo.cc" | 282 host := "http://777.nazo.cc" |
| 271 // 引数が指定されたらアップロード | 283 |
| 272 if *putfile { | 284 if *putfile { |
| 273 if flag.NArg() > 0 { | 285 if flag.NArg() > 0 { |
| 274 | 286 |
| 275 // アップロードには,このプログラムで認証が必要:未実装 | 287 // アップロードには,このプログラムで認証が必要:未実装 |
| 276 if !is_valid_user() { | 288 if !is_valid_user() { |
| 291 if !*noprefix { | 303 if !*noprefix { |
| 292 prefix = time.Now().Format( "200601021504_" ) | 304 prefix = time.Now().Format( "200601021504_" ) |
| 293 } | 305 } |
| 294 | 306 |
| 295 // 圧縮 | 307 // 圧縮 |
| 296 if *compress || *compupld { | 308 if *compress { |
| 297 tmpfile, err := ioutil.TempFile( ".", "muxx" ) | 309 tmpfile, err := ioutil.TempFile( ".", "muxx" ) |
| 298 if err != nil { | 310 if err != nil { |
| 299 log.Fatal( err ) | 311 log.Fatal( err ) |
| 300 } | 312 } |
| 301 | 313 |
| 302 if err := archive_compress( tmpfile.Name(), flag.Args() ); err != nil { | 314 tgz := prefix + tmpfile.Name() + ".tgz" |
| 315 os.Rename( tmpfile.Name(), tgz ) | |
| 316 defer os.Remove( tgz ) | |
| 317 lu.Tgz( tgz, flag.Args() ) | |
| 318 fmt.Printf( "archive & compress ...done [%s].\n", tgz ) | |
| 319 | |
| 320 if err := post_file( url, tgz ); err != nil { | |
| 303 log.Fatal( err ) | 321 log.Fatal( err ) |
| 304 } | 322 } |
| 305 | 323 fmt.Println( "upload ...done." ) |
| 306 tgz := prefix + tmpfile.Name() + ".tgz" | 324 // 非圧縮 |
| 307 os.Rename( tmpfile.Name(), tgz ) | |
| 308 fmt.Printf( "archive & compress ...done [%s].\n", tgz ) | |
| 309 | |
| 310 if *compupld { | |
| 311 if err := post_file( url, tgz ); err != nil { | |
| 312 log.Fatal( err ) | |
| 313 } | |
| 314 fmt.Println( "upload ...done." ) | |
| 315 defer os.Remove( tgz ) | |
| 316 } | |
| 317 // 非圧縮 | |
| 318 } else { | 325 } else { |
| 319 for _, file := range flag.Args() { | 326 for _, file := range flag.Args() { |
| 320 if !*noprefix { | 327 if !*noprefix { |
| 321 c, err := ioutil.ReadFile( file ) | 328 c, err := ioutil.ReadFile( file ) |
| 322 if err != nil { | 329 if err != nil { |
| 330 log.Fatal( err ) | 337 log.Fatal( err ) |
| 331 } | 338 } |
| 332 fmt.Println( file + "\tupload ...done." ) | 339 fmt.Println( file + "\tupload ...done." ) |
| 333 } | 340 } |
| 334 } | 341 } |
| 335 os.Exit( 0 ) | 342 } |
| 336 } | 343 os.Exit( 0 ) |
| 337 } | 344 } |
| 338 | 345 |
| 339 // ファイル一覧を取得 | 346 // ファイル一覧を取得 |
| 340 if *getfile { | 347 if *getfile { |
| 341 url := host + "/uploader/index.cgi/goup/" | 348 url := host + "/uploader/index.cgi/goup/" |
| 425 func is_valid_user() bool { | 432 func is_valid_user() bool { |
| 426 return true | 433 return true |
| 427 return false | 434 return false |
| 428 } | 435 } |
| 429 | 436 |
| 430 func archive_compress( zfile string, files []string ) ( error ) { | |
| 431 tgz, err := os.Create( zfile ) | |
| 432 if err != nil { | |
| 433 return err | |
| 434 } | |
| 435 defer tgz.Close() | |
| 436 | |
| 437 gw := gzip.NewWriter( tgz ) | |
| 438 defer gw.Close() | |
| 439 tw := tar.NewWriter( gw ) | |
| 440 defer tw.Close() | |
| 441 | |
| 442 for _, file := range files { | |
| 443 f, err := os.Open( file ) | |
| 444 if err != nil { | |
| 445 return err | |
| 446 } | |
| 447 defer f.Close() | |
| 448 | |
| 449 stat, _ := f.Stat() | |
| 450 header := new( tar.Header ) | |
| 451 header.Name = file | |
| 452 header.Size = stat.Size() | |
| 453 header.Mode = int64( stat.Mode() ) | |
| 454 header.ModTime = stat.ModTime() | |
| 455 | |
| 456 if err := tw.WriteHeader( header ); err != nil { | |
| 457 return err | |
| 458 } | |
| 459 if _, err := io.Copy( tw, f ); err != nil { | |
| 460 return err | |
| 461 } | |
| 462 } | |
| 463 return nil | |
| 464 } | |
| 465 | |
| 466 func is_exist_files( files []string ) error { | 437 func is_exist_files( files []string ) error { |
| 467 for _, file := range files { | 438 for _, file := range files { |
| 468 if _, err := os.Stat( file ); os.IsNotExist( err ) { | 439 if _, err := os.Stat( file ); os.IsNotExist( err ) { |
| 469 return fmt.Errorf( "%s: not exist\n", file ) | 440 return fmt.Errorf( "%s: not exist\n", file ) |
| 470 } | 441 } |
| 474 | 445 |
| 475 func print_help() { | 446 func print_help() { |
| 476 fmt.Fprintf( os.Stderr, "Usage of %s [%s]:\n", os.Args[0], version ) | 447 fmt.Fprintf( os.Stderr, "Usage of %s [%s]:\n", os.Args[0], version ) |
| 477 flag.PrintDefaults() | 448 flag.PrintDefaults() |
| 478 } | 449 } |
| 450 |
