mirror of
https://github.com/onyx-and-iris/exclude.git
synced 2026-04-16 14:13:39 +00:00
exclude initial commit
This commit is contained in:
65
cmd/root.go
Normal file
65
cmd/root.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// rootCmd represents the base command when called without any subcommands
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "exclude",
|
||||
Short: "A command line tool to manage .git/info/exclude files",
|
||||
Long: `Exclude is a command line tool designed to help you manage your .git/info/exclude files.
|
||||
It allows you to add, list, and remove patterns from the exclude file easily.
|
||||
This tool is particularly useful for developers who want to keep their repository clean
|
||||
by excluding certain files or directories from version control.`,
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {
|
||||
// This function runs before any command is executed.
|
||||
// You can use it to set up global configurations or checks.
|
||||
// For example, you might want to check if the .git directory exists
|
||||
if _, err := os.Stat(".git"); os.IsNotExist(err) {
|
||||
cmd.Println("Error: This command must be run in a Git repository.")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(".git/info/exclude", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
|
||||
if err != nil {
|
||||
cmd.Println("Error opening .git/info/exclude file:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
ctx := context.WithValue(context.Background(), fileContextKey, f)
|
||||
cmd.SetContext(ctx)
|
||||
},
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {
|
||||
if f, ok := FileFromContext(cmd.Context()); ok {
|
||||
defer f.Close()
|
||||
}
|
||||
},
|
||||
// Uncomment the following line if your bare application
|
||||
// has an action associated with it:
|
||||
// Run: func(cmd *cobra.Command, args []string) { },
|
||||
}
|
||||
|
||||
// Execute adds all child commands to the root command and sets flags appropriately.
|
||||
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
||||
func Execute() {
|
||||
err := rootCmd.Execute()
|
||||
if err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
// Here you will define your flags and configuration settings.
|
||||
// Cobra supports persistent flags, which, if defined here,
|
||||
// will be global for your application.
|
||||
|
||||
// rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.exclude.yaml)")
|
||||
|
||||
// Cobra also supports local flags, which will only run
|
||||
// when this action is called directly.
|
||||
// rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||
}
|
||||
Reference in New Issue
Block a user