aboutsummaryrefslogtreecommitdiff
path: root/weed/command
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-08-03 21:20:05 -0700
committerChris Lu <chris.lu@gmail.com>2021-08-03 21:20:05 -0700
commit42969c9c6247117f99ece43194912cd098acceb0 (patch)
tree804a7b7a666b2714082acdae396d04e0707f70c7 /weed/command
parent81b255df8b7352e7a420e7dc4a56cf58bcb9075f (diff)
parent8cf0c515bfb45c5d8e6c71f96c43f91cae30ea9d (diff)
downloadseaweedfs-42969c9c6247117f99ece43194912cd098acceb0.tar.xz
seaweedfs-42969c9c6247117f99ece43194912cd098acceb0.zip
Merge branch 'master' into add_remote_storage
Diffstat (limited to 'weed/command')
-rw-r--r--weed/command/autocomplete.go109
-rw-r--r--weed/command/command.go2
-rw-r--r--weed/command/filer_backup.go4
-rw-r--r--weed/command/filer_meta_backup.go1
-rw-r--r--weed/command/filer_meta_tail.go1
-rw-r--r--weed/command/filer_sync.go1
-rw-r--r--weed/command/iam.go1
-rw-r--r--weed/command/scaffold/master.toml2
-rw-r--r--weed/command/upload.go4
9 files changed, 120 insertions, 5 deletions
diff --git a/weed/command/autocomplete.go b/weed/command/autocomplete.go
new file mode 100644
index 000000000..9a545a183
--- /dev/null
+++ b/weed/command/autocomplete.go
@@ -0,0 +1,109 @@
+package command
+
+import (
+ "fmt"
+ flag "github.com/chrislusf/seaweedfs/weed/util/fla9"
+ "github.com/posener/complete"
+ completeinstall "github.com/posener/complete/cmd/install"
+ "runtime"
+)
+
+func AutocompleteMain(commands []*Command) bool {
+ subCommands := make(map[string]complete.Command)
+ helpSubCommands := make(map[string]complete.Command)
+ for _, cmd := range commands {
+ flags := make(map[string]complete.Predictor)
+ cmd.Flag.VisitAll(func(flag *flag.Flag) {
+ flags["-"+flag.Name] = complete.PredictAnything
+ })
+
+ subCommands[cmd.Name()] = complete.Command{
+ Flags: flags,
+ }
+ helpSubCommands[cmd.Name()] = complete.Command{}
+ }
+ subCommands["help"] = complete.Command{Sub: helpSubCommands}
+
+ globalFlags := make(map[string]complete.Predictor)
+ flag.VisitAll(func(flag *flag.Flag) {
+ globalFlags["-"+flag.Name] = complete.PredictAnything
+ })
+
+ weedCmd := complete.Command{
+ Sub: subCommands,
+ Flags: globalFlags,
+ GlobalFlags: complete.Flags{"-h": complete.PredictNothing},
+ }
+ cmp := complete.New("weed", weedCmd)
+
+ return cmp.Complete()
+}
+
+func installAutoCompletion() bool {
+ if runtime.GOOS == "windows" {
+ fmt.Println("windows is not supported")
+ return false
+ }
+
+ err := completeinstall.Install("weed")
+ if err != nil {
+ fmt.Printf("install failed! %s\n", err)
+ return false
+ }
+ fmt.Printf("autocompletion is enabled. Please restart your shell.\n")
+ return true
+}
+
+func uninstallAutoCompletion() bool {
+ if runtime.GOOS == "windows" {
+ fmt.Println("windows is not supported")
+ return false
+ }
+
+ err := completeinstall.Uninstall("weed")
+ if err != nil {
+ fmt.Printf("uninstall failed! %s\n", err)
+ return false
+ }
+ fmt.Printf("autocompletion is disable. Please restart your shell.\n")
+ return true
+}
+
+var cmdAutocomplete = &Command{
+ Run: runAutocomplete,
+ UsageLine: "autocomplete",
+ Short: "install autocomplete",
+ Long: `weed autocomplete is installed in the shell.
+
+ Supported shells are bash, zsh, and fish.
+ Windows is not supported.
+
+`,
+}
+
+func runAutocomplete(cmd *Command, args []string) bool {
+ if len(args) != 0 {
+ cmd.Usage()
+ }
+
+ return installAutoCompletion()
+}
+
+var cmdUnautocomplete = &Command{
+ Run: runUnautocomplete,
+ UsageLine: "autocomplete.uninstall",
+ Short: "uninstall autocomplete",
+ Long: `weed autocomplete is uninstalled in the shell.
+
+ Windows is not supported.
+
+`,
+}
+
+func runUnautocomplete(cmd *Command, args []string) bool {
+ if len(args) != 0 {
+ cmd.Usage()
+ }
+
+ return uninstallAutoCompletion()
+}
diff --git a/weed/command/command.go b/weed/command/command.go
index 0bac56442..9ae93fe61 100644
--- a/weed/command/command.go
+++ b/weed/command/command.go
@@ -8,6 +8,8 @@ import (
)
var Commands = []*Command{
+ cmdAutocomplete,
+ cmdUnautocomplete,
cmdBackup,
cmdBenchmark,
cmdCompact,
diff --git a/weed/command/filer_backup.go b/weed/command/filer_backup.go
index 888b46fe7..fc4dd8298 100644
--- a/weed/command/filer_backup.go
+++ b/weed/command/filer_backup.go
@@ -52,11 +52,11 @@ var cmdFilerBackup = &Command{
func runFilerBackup(cmd *Command, args []string) bool {
- grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
-
util.LoadConfiguration("security", false)
util.LoadConfiguration("replication", true)
+ grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
+
for {
err := doFilerBackup(grpcDialOption, &filerBackupOptions)
if err != nil {
diff --git a/weed/command/filer_meta_backup.go b/weed/command/filer_meta_backup.go
index ba0b44659..28bd367e7 100644
--- a/weed/command/filer_meta_backup.go
+++ b/weed/command/filer_meta_backup.go
@@ -53,6 +53,7 @@ The backup writes to another filer store specified in a backup_filer.toml.
func runFilerMetaBackup(cmd *Command, args []string) bool {
+ util.LoadConfiguration("security", false)
metaBackup.grpcDialOption = security.LoadClientTLS(util.GetViper(), "grpc.client")
// load backup_filer.toml
diff --git a/weed/command/filer_meta_tail.go b/weed/command/filer_meta_tail.go
index 8451ffd78..76699bb5e 100644
--- a/weed/command/filer_meta_tail.go
+++ b/weed/command/filer_meta_tail.go
@@ -45,6 +45,7 @@ var (
func runFilerMetaTail(cmd *Command, args []string) bool {
+ util.LoadConfiguration("security", false)
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
var filterFunc func(dir, fname string) bool
diff --git a/weed/command/filer_sync.go b/weed/command/filer_sync.go
index 211c34aea..7cfc8a7fe 100644
--- a/weed/command/filer_sync.go
+++ b/weed/command/filer_sync.go
@@ -89,6 +89,7 @@ var cmdFilerSynchronize = &Command{
func runFilerSynchronize(cmd *Command, args []string) bool {
+ util.LoadConfiguration("security", false)
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
grace.SetupProfiling(*syncCpuProfile, *syncMemProfile)
diff --git a/weed/command/iam.go b/weed/command/iam.go
index 17d0832cb..ed4eea543 100644
--- a/weed/command/iam.go
+++ b/weed/command/iam.go
@@ -49,6 +49,7 @@ func (iamopt *IamOptions) startIamServer() bool {
return false
}
+ util.LoadConfiguration("security", false)
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
for {
err = pb.WithGrpcFilerClient(filerGrpcAddress, grpcDialOption, func(client filer_pb.SeaweedFilerClient) error {
diff --git a/weed/command/scaffold/master.toml b/weed/command/scaffold/master.toml
index cdd92016c..020f48e36 100644
--- a/weed/command/scaffold/master.toml
+++ b/weed/command/scaffold/master.toml
@@ -11,7 +11,7 @@ scripts = """
ec.encode -fullPercent=95 -quietFor=1h
ec.rebuild -force
ec.balance -force
- volume.deleteEmpty -quietFor=24h
+ volume.deleteEmpty -quietFor=24h -force
volume.balance -force
volume.fix.replication
unlock
diff --git a/weed/command/upload.go b/weed/command/upload.go
index ccdec561f..9ae1befab 100644
--- a/weed/command/upload.go
+++ b/weed/command/upload.go
@@ -71,13 +71,13 @@ func runUpload(cmd *Command, args []string) bool {
util.LoadConfiguration("security", false)
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
- defaultCollection, err := readMasterConfiguration(grpcDialOption, *upload.master)
+ defaultReplication, err := readMasterConfiguration(grpcDialOption, *upload.master)
if err != nil {
fmt.Printf("upload: %v", err)
return false
}
if *upload.replication == "" {
- *upload.replication = defaultCollection
+ *upload.replication = defaultReplication
}
if len(args) == 0 {