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