Mercurial > mercurial > hgweb_rsearcher.cgi
view go/mkidx.go @ 16:b651aa41b9d4 default tip
hhsinfo method (server)
author | pyon@macmini |
---|---|
date | Mon, 15 Jul 2019 07:03:05 +0900 |
parents | |
children |
line wrap: on
line source
package main import ( "fmt" "flag" "io/ioutil" "log" "os" "path/filepath" "regexp" "sort" "strings" ) func main() { var list = flag.Bool( "l", false, "list db." ) var newest = flag.Bool( "n", false, "only save newest." ) var output = flag.String( "o", "", "output filename." ) var help = flag.Bool( "h", false, "print help." ) flag.Parse() idxdb := "index.db" content, err := ioutil.ReadFile( idxdb ) if err != nil { log.Fatal( err ) } if *list { fmt.Printf( "%s", content ) os.Exit( 0 ) } if *help || flag.NArg()!= 1 { fmt.Fprintf( os.Stderr, "$ mkidx [20201231]\n" ) flag.PrintDefaults() os.Exit( 1 ) } if *output == "" { *output = idxdb } d := flag.Args()[0] r, err := regexp.Compile( "^20[0-9]{6}$" ) if err != nil { log.Fatal( err ) } m := r.FindString( d ) if len( m ) == 0 { fmt.Fprintf( os.Stderr, "bad directory.\n" ) os.Exit( 1 ) } var hs []string fi, _ := os.Stat( d ) if fi.IsDir() { filepath.Walk( d, func( path string, info os.FileInfo, err error ) error { if !info.IsDir() && strings.HasSuffix( path, ".tgz" ) { h := strings.TrimSuffix( path, ".tgz" )[9:] hs = append( hs, h + ":" + d ) } return nil } ) } else { fmt.Fprintf( os.Stderr, "%s: not directory\n", d ) log.Fatal( err ) } for _, s := range strings.Split( string( content ), "\n" ) { hs = append( hs, s ) } sort.Strings( hs ) var str string if !*newest { for _, s := range hs { str += s + "\n" } } else { seen := make( map[string]int ) for _, s := range hs { if seen[s] == 0 { str += s + "\n" } seen[s]++ } } if err := ioutil.WriteFile( *output, []byte( str ), 0644 ); err !=nil { log.Fatal( err ) } }