git-lfs/commands/command_uninstall.go
brian m. carlson 2e911a347e
commands/uninstall: add a --skip-repo option
git lfs install has a --skip-repo option, which prevents any attempt to
modify the repo if run from within one.  Add such an option for git lfs
uninstall as well.  Document it and add tests for its functionality.
2018-10-17 18:53:04 +00:00

41 lines
1.2 KiB
Go

package commands
import (
"github.com/spf13/cobra"
)
// uninstallCmd removes any configuration and hooks set by Git LFS.
func uninstallCommand(cmd *cobra.Command, args []string) {
if err := cmdInstallOptions().Uninstall(); err != nil {
Error(err.Error())
}
if !skipRepoInstall && (localInstall || cfg.InRepo()) {
uninstallHooksCommand(cmd, args)
}
if systemInstall {
Print("System Git LFS configuration has been removed.")
} else if !localInstall {
Print("Global Git LFS configuration has been removed.")
}
}
// uninstallHooksCmd removes any hooks created by Git LFS.
func uninstallHooksCommand(cmd *cobra.Command, args []string) {
if err := uninstallHooks(); err != nil {
Error(err.Error())
}
Print("Hooks for this repository have been removed.")
}
func init() {
RegisterCommand("uninstall", uninstallCommand, func(cmd *cobra.Command) {
cmd.Flags().BoolVarP(&localInstall, "local", "l", false, "Set the Git LFS config for the local Git repository only.")
cmd.Flags().BoolVarP(&systemInstall, "system", "", false, "Set the Git LFS config in system-wide scope.")
cmd.Flags().BoolVarP(&skipRepoInstall, "skip-repo", "", false, "Skip repo setup, just uninstall global filters.")
cmd.AddCommand(NewCommand("hooks", uninstallHooksCommand))
})
}