feat: use cobra to provide subcommands, move sources to lib (#506)
- Use cobra in order to provide subcommands `serve` and `db`. - Subdir `cmd` is removed. - Subdir `cli` is created, which is a standard cobra structure. - Sources related to the core are moved to subdir `lib`. - #497 and #504 are merged. - Deprecated flags are added. See https://github.com/filebrowser/filebrowser/pull/497#discussion_r209428120. - [`viper.BindPFlags`](https://godoc.org/github.com/spf13/viper#BindPFlags) is used in order to reduce the verbosity in `serve.go`. Former-commit-id: 4b37ad82e91e01f7718cd389469814674bdf7032 [formerly c84d7fcf9c362b2aa1f9e5b57196152f53835e61] [formerly 2fef43c0382f3cc7d13e0297ccb467e38fac6982 [formerly 69a3f853bd2821d2c52a435277aaac68a468d39b]] Former-commit-id: 2f7dc1b8ee6735382cedae2053f40c546c21de45 [formerly b438417178b47ad5f7caf9cb728f4a5011a09f5e] Former-commit-id: 07bc58ab2e1ab10c30be8d0a5e760288bfc4d4dc
This commit is contained in:
46
cli/cmd/rootalias.go
Normal file
46
cli/cmd/rootalias.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
// checkRootAlias compares the first argument provided in the CLI with a list of
|
||||
// subcmds and aliases. If no match is found, the first alias of rootCmd is added.
|
||||
func checkRootAlias() {
|
||||
l := len(rootCmd.Aliases)
|
||||
if l == 0 {
|
||||
return
|
||||
}
|
||||
if l > 1 {
|
||||
log.Printf("rootCmd.Aliases should contain a single string. '%s' is used.\n", rootCmd.Aliases[0])
|
||||
}
|
||||
if len(os.Args) > 1 {
|
||||
for _, v := range append(nonRootSubCmds(), []string{"--help", "--version"}...) {
|
||||
if os.Args[1] == v {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
os.Args = append([]string{os.Args[0], rootCmd.Aliases[0]}, os.Args[1:]...)
|
||||
}
|
||||
|
||||
// nonRootSubCmds traverses the list of subcommands of rootCmd and returns a string
|
||||
// slice containing the names and aliases of all the subcmds, except the one defined
|
||||
// in the Aliases field of rootCmd.
|
||||
func nonRootSubCmds() (l []string) {
|
||||
for _, c := range rootCmd.Commands() {
|
||||
isAlias := false
|
||||
for _, a := range append(c.Aliases, c.Name()) {
|
||||
if a == rootCmd.Aliases[0] {
|
||||
isAlias = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !isAlias {
|
||||
l = append(l, c.Name())
|
||||
l = append(l, c.Aliases...)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user