package remote import ( "fmt" "io" "text/tabwriter" "git.cryptic.systems/fh-trier/go-flucky/pkg/config" "git.cryptic.systems/fh-trier/go-flucky/pkg/types" ) func Add(remote *types.Remote, configDir string) error { configuration, err := config.Read(configDir) if err != nil { return err } // search after duplicate remote_names for _, r := range configuration.Remotes { if r.Name == remote.Name { return fmt.Errorf("Remote-Name %v already exists", remote.Name) } } configuration.Remotes = append(configuration.Remotes, remote) if err := config.Write(configuration, configDir); err != nil { return err } return nil } // Enable a remote link func Enable(remoteName string, configDir string) error { cnf, err := config.Read(configDir) if err != nil { return err } // search after duplicate remote_names var found bool for _, r := range cnf.Remotes { if r.Name == remoteName { r.Enabled = true found = true } } if !found { return fmt.Errorf("Can not find remote %v", remoteName) } if err := config.Write(cnf, configDir); err != nil { return err } return nil } // Disable a remote link func Disable(remoteName string, configDir string) error { cnf, err := config.Read(configDir) if err != nil { return err } // search after duplicate remote_names var found bool for _, r := range cnf.Remotes { if r.Name == remoteName { r.Enabled = false found = true } } if !found { return fmt.Errorf("Can not find remote %v", remoteName) } if err := config.Write(cnf, configDir); err != nil { return err } return nil } func Print(w io.Writer, configDir string, quiet bool) error { configuration, err := config.Read(configDir) if err != nil { return err } tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0) if !quiet { fmt.Fprint(tw, "name\taddress\tenabled\tregistered\n") } for _, remote := range configuration.Remotes { if quiet { fmt.Fprintf(tw, "%v\n", remote.Name) } else { fmt.Fprintf(tw, "%v\t%v\t%v\t%v\n", remote.Name, remote.Address, remote.Enabled, remote.Registered) } } tw.Flush() return nil } func Remove(name string, configDir string) error { con, err := config.Read(configDir) if err != nil { return err } var j int for _, remote := range con.Remotes { if remote.Name == name { con.Remotes = append(con.Remotes[:j], con.Remotes[j+1:]...) if j > 0 { j = j - 1 } continue } j++ } if err := config.Write(con, configDir); err != nil { return err } return nil } func RemoveAll(configDir string) error { con, err := config.Read(configDir) if err != nil { return err } con.Remotes = nil if err := config.Write(con, configDir); err != nil { return err } return nil }