Mercurial > mercurial > hgweb_golang.cgi
changeset 17:72ce457fb99d
ut: bug fix.
author | pyon@macmini |
---|---|
date | Wed, 20 Jun 2018 06:01:58 +0900 |
parents | 38b64afbaf79 |
children | 45ca03520eea |
files | src/ut/lu/lu.go src/ut/main.go |
diffstat | 2 files changed, 81 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ut/lu/lu.go Sun Jun 17 20:29:45 2018 +0900 +++ b/src/ut/lu/lu.go Wed Jun 20 06:01:58 2018 +0900 @@ -81,6 +81,43 @@ } } +/* tar cvfz: done. */ +func Tgz( tgzfile string, files []string ) { + + tgz, err := os.Create( tgzfile ) + if err != nil { + log.Fatal( err ) + } + defer tgz.Close() + + gw := gzip.NewWriter( tgz ) + defer gw.Close() + tw := tar.NewWriter( gw ) + defer tw.Close() + + for _, file := range fullpath( files ) { + f, err := os.Open( file ) + if err != nil { + log.Fatal( err ) + } + + stat, _ := f.Stat() + header := new( tar.Header ) + header.Name = file + header.Size = stat.Size() + header.Mode = int64( stat.Mode() ) + header.ModTime = stat.ModTime() + + if err := tw.WriteHeader( header ); err != nil { + log.Fatal( err ) + } + if _, err := io.Copy( tw, f ); err != nil { + log.Fatal( err ) + } + f.Close() + } +} + /* tar xvfz: done. */ func UnTgz( files []string ) { @@ -128,7 +165,24 @@ log.Fatal( err ) } } +} +func fullpath( files []string ) []string { + var buf []string + for _, f := range files { + fi, _ := os.Stat( f ) + if fi.IsDir() { + filepath.Walk( f, func( path string, info os.FileInfo, err error ) error { + if !info.IsDir() { + buf = append( buf, path ) + } + return nil + } ) + } else { + buf = append( buf, f ) + } + } + return buf } /* tac: done. */
--- a/src/ut/main.go Sun Jun 17 20:29:45 2018 +0900 +++ b/src/ut/main.go Wed Jun 20 06:01:58 2018 +0900 @@ -8,10 +8,8 @@ package main import ( - "archive/tar" "bufio" "bytes" - "compress/gzip" "flag" "fmt" "io" @@ -29,14 +27,13 @@ "./lu" ) -var version = "1.01" +var version = "1.02" func main() { var getfile = flag.Bool( "g", false, "get a file from site." ) // ok var putfile = flag.Bool( "G", false, "put a file to site." ) // ok - var compupld = flag.Bool( "zu", false, "compress & upload files. (.tgz)" ) // ok - var compress = flag.Bool( "z", false, "compress files. ( not upload. )" ) // ok + var compress = flag.Bool( "z", false, "compress files. (.tgz)" ) // ok var uncmprss = flag.Bool( "x", false, "uncompress files. (.tgz )" ) // ok var noprefix = flag.Bool( "n", false, "not add prefix(YYYYMMDDhhmm_) to filename." ) // ok @@ -57,6 +54,7 @@ //var bhole = flag.Bool( "k", false, "black hole. ( /dev/null )" ) var cmdtime = flag.Bool( "T", false, "measure program running time." ) var touch = flag.Bool( "t", false, "little touch tool." ) + var tee = flag.Bool( "e", false, "little tee tool." ) var replace = flag.Bool( "r", false, "replace strings. ( s/arg1/arg2/g )" ) var sort = flag.Bool( "s", false, "little sort tool." ) var nsort = flag.Bool( "ns", false, "little number sort tool." ) @@ -145,6 +143,11 @@ } */ + if *tee { + fmt.Fprintln( os.Stderr, "not implement" ) + os.Exit( 3 ) + } + if *sort { fmt.Fprintln( os.Stderr, "not implement" ) os.Exit( 3 ) @@ -258,6 +261,15 @@ os.Exit( 2 ) } + if *compress && !*putfile { // done. + if err := is_exist_files( flag.Args() ); err != nil { + log.Fatal( err ) + } + tgz := time.Now().Format( "200601021504.tgz" ) + lu.Tgz( tgz, flag.Args() ) + os.Exit( 0 ) + } + if *uncmprss { // done. if err := is_exist_files( flag.Args() ); err != nil { log.Fatal( err ) @@ -268,7 +280,7 @@ /* Here My Uplaad / Download Function */ host := "http://777.nazo.cc" - // 引数が指定されたらアップロード + if *putfile { if flag.NArg() > 0 { @@ -293,28 +305,23 @@ } // 圧縮 - if *compress || *compupld { + if *compress { tmpfile, err := ioutil.TempFile( ".", "muxx" ) if err != nil { log.Fatal( err ) } - if err := archive_compress( tmpfile.Name(), flag.Args() ); err != nil { - log.Fatal( err ) - } - tgz := prefix + tmpfile.Name() + ".tgz" os.Rename( tmpfile.Name(), tgz ) + defer os.Remove( tgz ) + lu.Tgz( tgz, flag.Args() ) fmt.Printf( "archive & compress ...done [%s].\n", tgz ) - if *compupld { - if err := post_file( url, tgz ); err != nil { - log.Fatal( err ) - } - fmt.Println( "upload ...done." ) - defer os.Remove( tgz ) + if err := post_file( url, tgz ); err != nil { + log.Fatal( err ) } - // 非圧縮 + fmt.Println( "upload ...done." ) + // 非圧縮 } else { for _, file := range flag.Args() { if !*noprefix { @@ -332,8 +339,8 @@ fmt.Println( file + "\tupload ...done." ) } } - os.Exit( 0 ) } + os.Exit( 0 ) } // ファイル一覧を取得 @@ -427,42 +434,6 @@ return false } -func archive_compress( zfile string, files []string ) ( error ) { - tgz, err := os.Create( zfile ) - if err != nil { - return err - } - defer tgz.Close() - - gw := gzip.NewWriter( tgz ) - defer gw.Close() - tw := tar.NewWriter( gw ) - defer tw.Close() - - for _, file := range files { - f, err := os.Open( file ) - if err != nil { - return err - } - defer f.Close() - - stat, _ := f.Stat() - header := new( tar.Header ) - header.Name = file - header.Size = stat.Size() - header.Mode = int64( stat.Mode() ) - header.ModTime = stat.ModTime() - - if err := tw.WriteHeader( header ); err != nil { - return err - } - if _, err := io.Copy( tw, f ); err != nil { - return err - } - } - return nil -} - func is_exist_files( files []string ) error { for _, file := range files { if _, err := os.Stat( file ); os.IsNotExist( err ) { @@ -476,3 +447,4 @@ fmt.Fprintf( os.Stderr, "Usage of %s [%s]:\n", os.Args[0], version ) flag.PrintDefaults() } +