Using positional arguments rather than option flag to enable better shell usage

This commit is contained in:
Radtoo
2022-01-08 16:40:39 +01:00
parent fba1efb77a
commit 389002f195

View File

@@ -22,14 +22,13 @@ func init() {
} }
var cmdFix = &Command{ var cmdFix = &Command{
UsageLine: "fix -path=/tmp [-volumeId=234] [-collection=bigData]", UsageLine: "fix [-volumeId=234] [-collection=bigData] /tmp",
Short: "run weed tool fix to recreate index file(s) if corrupted", Short: "run weed tool fix on files or whole folders to recreate index file(s) if corrupted",
Long: `Fix runs the SeaweedFS fix command on dat files to re-create the index .idx file. Long: `Fix runs the SeaweedFS fix command on dat files or whole folders to re-create the index .idx file.
`, `,
} }
var ( var (
fixVolumePath = cmdFix.Flag.String("path", ".", "path to an individual .dat file or a folder of dat files")
fixVolumeCollection = cmdFix.Flag.String("collection", "", "an optional volume collection name, if specified only it will be processed") fixVolumeCollection = cmdFix.Flag.String("collection", "", "an optional volume collection name, if specified only it will be processed")
fixVolumeId = cmdFix.Flag.Int64("volumeId", 0, "an optional volume id, if not 0 (default) only it will be processed") fixVolumeId = cmdFix.Flag.Int64("volumeId", 0, "an optional volume id, if not 0 (default) only it will be processed")
) )
@@ -61,11 +60,12 @@ func (scanner *VolumeFileScanner4Fix) VisitNeedle(n *needle.Needle, offset int64
} }
func runFix(cmd *Command, args []string) bool { func runFix(cmd *Command, args []string) bool {
basePath, f := path.Split(util.ResolvePath(*fixVolumePath)) for _, arg := range args {
basePath, f := path.Split(util.ResolvePath(arg))
files := []fs.DirEntry{} files := []fs.DirEntry{}
if f == "" { if f == "" {
fileInfo, err := os.ReadDir(basePath + f) fileInfo, err := os.ReadDir(basePath)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
return false return false
@@ -105,7 +105,7 @@ func runFix(cmd *Command, args []string) bool {
} }
doFixOneVolume(basePath, baseFileName, collection, volumeId) doFixOneVolume(basePath, baseFileName, collection, volumeId)
} }
}
return true return true
} }