github.com/khulnasoft-lab/tunnel-db@v0.0.0-20231117205118-74e1113bd007/pkg/app.go (about)

     1  package pkg
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/urfave/cli"
     7  
     8  	"github.com/khulnasoft-lab/tunnel-db/pkg/utils"
     9  	"github.com/khulnasoft-lab/tunnel-db/pkg/vulnsrc"
    10  )
    11  
    12  type AppConfig struct{}
    13  
    14  func (ac *AppConfig) NewApp(version string) *cli.App {
    15  	app := cli.NewApp()
    16  	app.Name = "tunnel-db"
    17  	app.Version = version
    18  	app.Usage = "Tunnel DB builder"
    19  
    20  	app.Commands = []cli.Command{
    21  		{
    22  			Name:   "build",
    23  			Usage:  "build a database file",
    24  			Action: build,
    25  			Flags: []cli.Flag{
    26  				cli.StringSliceFlag{
    27  					Name:  "only-update",
    28  					Usage: "update db only specified distribution",
    29  					Value: func() *cli.StringSlice {
    30  						var targets cli.StringSlice
    31  						for _, v := range vulnsrc.All {
    32  							targets = append(targets, string(v.Name()))
    33  						}
    34  						return &targets
    35  					}(),
    36  				},
    37  				cli.StringFlag{
    38  					Name:  "cache-dir",
    39  					Usage: "cache directory path",
    40  					Value: utils.CacheDir(),
    41  				},
    42  				cli.DurationFlag{
    43  					Name:   "update-interval",
    44  					Usage:  "update interval",
    45  					Value:  24 * time.Hour,
    46  					EnvVar: "UPDATE_INTERVAL",
    47  				},
    48  			},
    49  		},
    50  	}
    51  
    52  	return app
    53  }