Skip to content
This repository was archived by the owner on Feb 3, 2023. It is now read-only.

Commit 095aa3d

Browse files
committed
adjust cmd
1 parent 8d55680 commit 095aa3d

File tree

7 files changed

+69
-36
lines changed

7 files changed

+69
-36
lines changed

cmd/del.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

cmd/group.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ var (
2222
Run: func(cmd *cobra.Command, args []string) {
2323
hostName := args[0]
2424
if groupDel != "" {
25-
host.Manager.DeleteGroup(hostName, strings.Split(groupDel, ","))
25+
host.Manager.DeleteHostGroups(hostName, strings.Split(groupDel, ","))
2626
}
2727
if groupAdd != "" {
2828
host.Manager.AddGroup(hostName, strings.Split(groupAdd, ","))

cmd/remove.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
@Author: ingbyr
3+
*/
4+
5+
package cmd
6+
7+
import (
8+
"github.com/ingbyr/gohost/host"
9+
"github.com/spf13/cobra"
10+
)
11+
12+
var (
13+
removeGroup bool
14+
removeCmd = &cobra.Command{
15+
Use: "rm",
16+
Short: "Delete host or group",
17+
Run: func(cmd *cobra.Command, args []string) {
18+
if removeGroup {
19+
host.Manager.DeleteGroups(args)
20+
} else {
21+
host.Manager.DeleteHostsByNames(args)
22+
}
23+
},
24+
}
25+
)
26+
27+
func init() {
28+
removeCmd.Flags().BoolVarP(&removeGroup, "group", "g", false, "remove group")
29+
}

cmd/root.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111

1212
var rootCmd = &cobra.Command{
1313
Use: "gohost",
14-
Short: "Host switcher written in go",
14+
Short: "Host switcher made by ingbyr",
1515
}
1616

1717
func Execute() {
@@ -22,9 +22,9 @@ func Execute() {
2222
rootCmd.AddCommand(renameCmd)
2323
rootCmd.AddCommand(sysCmd)
2424
rootCmd.AddCommand(groupCommand)
25-
rootCmd.AddCommand(delCmd)
25+
rootCmd.AddCommand(removeCmd)
2626
if err := rootCmd.Execute(); err != nil {
27-
display.Err(err)
27+
display.ErrExit(err)
2828
return
2929
}
3030
}

display/display.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ func Warn(warn string) {
1717
}
1818

1919
func Err(err error) {
20+
if err != nil {
21+
fmt.Printf("[error] %s\n", err.Error())
22+
}
23+
}
24+
25+
func ErrExit(err error) {
2026
if err != nil {
2127
fmt.Printf("[error] %s\n", err.Error())
2228
os.Exit(1)

host/host.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ func NewHost(fileName string, path string) *Host {
2929
Path: path,
3030
Groups: groups,
3131
}
32-
}
32+
}

host/manger.go

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func init() {
5656
func (m *manager) LoadHosts() {
5757
files, err := ioutil.ReadDir(m.HostDir)
5858
if err != nil {
59-
display.Err(fmt.Errorf("failed to load gohost dir"))
59+
display.ErrExit(fmt.Errorf("failed to load gohost dir"))
6060
os.Exit(1)
6161
}
6262
for _, file := range files {
@@ -112,12 +112,26 @@ func (m *manager) PrintGroup(hostName string) {
112112
display.Table(header, data)
113113
}
114114

115-
func (m *manager) DeleteGroup(hostName string, delGroups []string) {
115+
func (m *manager) DeleteGroups(delGroups []string) {
116+
deleted := make([]string, 0)
117+
for _, delGroup := range delGroups {
118+
if hosts, exist := m.Groups[delGroup]; exist {
119+
// delete hosts which belongs to delGroup
120+
for _, host := range hosts {
121+
_ = os.Remove(host.Path)
122+
}
123+
deleted = append(deleted, delGroup)
124+
}
125+
}
126+
fmt.Printf("deleted group %s\n", strings.Join(deleted, ","))
127+
}
128+
129+
func (m *manager) DeleteHostGroups(hostName string, delGroups []string) {
116130
host := m.mustHost(hostName)
117131
newGroups, removedGroups := sub(host.Groups, delGroups)
118132
err := os.Rename(host.Path, m.fullPath(m.hostName(hostName, newGroups)))
119133
if err != nil {
120-
display.Err(fmt.Errorf("failed to delete groups"))
134+
display.ErrExit(fmt.Errorf("failed to delete groups"))
121135
}
122136
host.Groups = newGroups
123137
fmt.Printf("removed groups '%s'\n", strings.Join(removedGroups, ", "))
@@ -128,15 +142,15 @@ func (m *manager) AddGroup(hostName string, groups []string) {
128142
newGroups, addGroups := union(host.Groups, groups)
129143
err := os.Rename(host.Path, m.fullPath(m.hostName(hostName, newGroups)))
130144
if err != nil {
131-
display.Err(fmt.Errorf("failed to delete groups"))
145+
display.ErrExit(fmt.Errorf("failed to delete groups"))
132146
}
133147
host.Groups = newGroups
134148
fmt.Printf("added groups '%s'\n", strings.Join(addGroups, ", "))
135149
}
136150

137151
func (m *manager) CreateNewHost(name string, groups []string) {
138152
if _, exist := m.Hosts[name]; exist {
139-
display.Err(fmt.Errorf("host file '%s' is existed\n", name))
153+
display.ErrExit(fmt.Errorf("host file '%s' is existed\n", name))
140154
return
141155
}
142156
filePath := m.fullPath(m.hostName(name, groups))
@@ -146,13 +160,13 @@ func (m *manager) CreateNewHost(name string, groups []string) {
146160
}
147161
}
148162

149-
func (m *manager) DeleteHosts(hostNames []string) {
163+
func (m *manager) DeleteHostsByNames(hostNames []string) {
150164
deleted := make([]string, 0)
151165
for _, hostName := range hostNames {
152166
if host, exist := m.Hosts[hostName]; exist {
153167
err := os.Remove(host.Path)
154168
if err != nil {
155-
display.Err(err)
169+
display.ErrExit(err)
156170
continue
157171
}
158172
deleted = append(deleted, host.Name)
@@ -165,7 +179,7 @@ func (m *manager) ChangeHostName(hostName string, newHostName string) {
165179
h := m.mustHost(hostName)
166180
_newHostName := m.hostName(newHostName, h.Groups)
167181
if err := os.Rename(h.Path, m.fullPath(_newHostName)); err != nil {
168-
display.Err(err)
182+
display.ErrExit(err)
169183
}
170184
fmt.Printf("renamed '%s' to '%s'\n", h.Name, newHostName)
171185
}
@@ -174,31 +188,31 @@ func (m *manager) ChangeGroups(hostName string, newGroups []string) {
174188
host := m.mustHost(hostName)
175189
newFile := m.hostName(hostName, newGroups)
176190
if err := os.Rename(host.Path, m.fullPath(newFile)); err != nil {
177-
display.Err(err)
191+
display.ErrExit(err)
178192
}
179193
fmt.Printf("chanaged group '%v' to '%v\n", host.Groups, newGroups)
180194
}
181195

182196
func (m *manager) EditHostFile(hostName string) {
183197
host := m.mustHost(hostName)
184198
if err := editor.Open(host.Path); err != nil {
185-
display.Err(err)
199+
display.ErrExit(err)
186200
}
187201
}
188202

189203
func (m *manager) ApplyGroup(group string) {
190204
hosts, exist := m.Groups[group]
191205
if !exist {
192-
display.Err(fmt.Errorf("not found group '%s'", group))
206+
display.ErrExit(fmt.Errorf("not found group '%s'", group))
193207
return
194208
}
195209
combinedHostContent := m.combineHosts(hosts, "# Auto generated from group "+group)
196210
combinedHost := m.fullPath(TmpCombinedHost)
197211
if err := ioutil.WriteFile(combinedHost, combinedHostContent, 0664); err != nil {
198-
display.Err(err)
212+
display.ErrExit(err)
199213
}
200214
if err := os.Rename(combinedHost, sysHost); err != nil {
201-
display.Err(err)
215+
display.ErrExit(err)
202216
}
203217
fmt.Printf("applied group '%s' to system host:\n", group)
204218
m.PrintSysHost(10)
@@ -227,7 +241,7 @@ func (m *manager) PrintSysHost(max int) {
227241
func (m *manager) host(hostName string) (*Host, bool) {
228242
host, exist := m.Hosts[hostName]
229243
if !exist {
230-
display.Err(fmt.Errorf("host file '%s' is not existed\n", hostName))
244+
display.ErrExit(fmt.Errorf("host file '%s' is not existed\n", hostName))
231245
return nil, exist
232246
}
233247
return host, exist
@@ -236,7 +250,7 @@ func (m *manager) host(hostName string) (*Host, bool) {
236250
func (m *manager) mustHost(hostName string) *Host {
237251
host, exist := m.Hosts[hostName]
238252
if !exist {
239-
display.Err(fmt.Errorf("host file '%s' is not existed\n", hostName))
253+
display.ErrExit(fmt.Errorf("host file '%s' is not existed\n", hostName))
240254
os.Exit(0)
241255
}
242256
return host

0 commit comments

Comments
 (0)