@@ -56,7 +56,7 @@ func init() {
56
56
func (m * manager ) LoadHosts () {
57
57
files , err := ioutil .ReadDir (m .HostDir )
58
58
if err != nil {
59
- display .Err (fmt .Errorf ("failed to load gohost dir" ))
59
+ display .ErrExit (fmt .Errorf ("failed to load gohost dir" ))
60
60
os .Exit (1 )
61
61
}
62
62
for _ , file := range files {
@@ -112,12 +112,26 @@ func (m *manager) PrintGroup(hostName string) {
112
112
display .Table (header , data )
113
113
}
114
114
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 ) {
116
130
host := m .mustHost (hostName )
117
131
newGroups , removedGroups := sub (host .Groups , delGroups )
118
132
err := os .Rename (host .Path , m .fullPath (m .hostName (hostName , newGroups )))
119
133
if err != nil {
120
- display .Err (fmt .Errorf ("failed to delete groups" ))
134
+ display .ErrExit (fmt .Errorf ("failed to delete groups" ))
121
135
}
122
136
host .Groups = newGroups
123
137
fmt .Printf ("removed groups '%s'\n " , strings .Join (removedGroups , ", " ))
@@ -128,15 +142,15 @@ func (m *manager) AddGroup(hostName string, groups []string) {
128
142
newGroups , addGroups := union (host .Groups , groups )
129
143
err := os .Rename (host .Path , m .fullPath (m .hostName (hostName , newGroups )))
130
144
if err != nil {
131
- display .Err (fmt .Errorf ("failed to delete groups" ))
145
+ display .ErrExit (fmt .Errorf ("failed to delete groups" ))
132
146
}
133
147
host .Groups = newGroups
134
148
fmt .Printf ("added groups '%s'\n " , strings .Join (addGroups , ", " ))
135
149
}
136
150
137
151
func (m * manager ) CreateNewHost (name string , groups []string ) {
138
152
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 ))
140
154
return
141
155
}
142
156
filePath := m .fullPath (m .hostName (name , groups ))
@@ -146,13 +160,13 @@ func (m *manager) CreateNewHost(name string, groups []string) {
146
160
}
147
161
}
148
162
149
- func (m * manager ) DeleteHosts (hostNames []string ) {
163
+ func (m * manager ) DeleteHostsByNames (hostNames []string ) {
150
164
deleted := make ([]string , 0 )
151
165
for _ , hostName := range hostNames {
152
166
if host , exist := m .Hosts [hostName ]; exist {
153
167
err := os .Remove (host .Path )
154
168
if err != nil {
155
- display .Err (err )
169
+ display .ErrExit (err )
156
170
continue
157
171
}
158
172
deleted = append (deleted , host .Name )
@@ -165,7 +179,7 @@ func (m *manager) ChangeHostName(hostName string, newHostName string) {
165
179
h := m .mustHost (hostName )
166
180
_newHostName := m .hostName (newHostName , h .Groups )
167
181
if err := os .Rename (h .Path , m .fullPath (_newHostName )); err != nil {
168
- display .Err (err )
182
+ display .ErrExit (err )
169
183
}
170
184
fmt .Printf ("renamed '%s' to '%s'\n " , h .Name , newHostName )
171
185
}
@@ -174,31 +188,31 @@ func (m *manager) ChangeGroups(hostName string, newGroups []string) {
174
188
host := m .mustHost (hostName )
175
189
newFile := m .hostName (hostName , newGroups )
176
190
if err := os .Rename (host .Path , m .fullPath (newFile )); err != nil {
177
- display .Err (err )
191
+ display .ErrExit (err )
178
192
}
179
193
fmt .Printf ("chanaged group '%v' to '%v\n " , host .Groups , newGroups )
180
194
}
181
195
182
196
func (m * manager ) EditHostFile (hostName string ) {
183
197
host := m .mustHost (hostName )
184
198
if err := editor .Open (host .Path ); err != nil {
185
- display .Err (err )
199
+ display .ErrExit (err )
186
200
}
187
201
}
188
202
189
203
func (m * manager ) ApplyGroup (group string ) {
190
204
hosts , exist := m .Groups [group ]
191
205
if ! exist {
192
- display .Err (fmt .Errorf ("not found group '%s'" , group ))
206
+ display .ErrExit (fmt .Errorf ("not found group '%s'" , group ))
193
207
return
194
208
}
195
209
combinedHostContent := m .combineHosts (hosts , "# Auto generated from group " + group )
196
210
combinedHost := m .fullPath (TmpCombinedHost )
197
211
if err := ioutil .WriteFile (combinedHost , combinedHostContent , 0664 ); err != nil {
198
- display .Err (err )
212
+ display .ErrExit (err )
199
213
}
200
214
if err := os .Rename (combinedHost , sysHost ); err != nil {
201
- display .Err (err )
215
+ display .ErrExit (err )
202
216
}
203
217
fmt .Printf ("applied group '%s' to system host:\n " , group )
204
218
m .PrintSysHost (10 )
@@ -227,7 +241,7 @@ func (m *manager) PrintSysHost(max int) {
227
241
func (m * manager ) host (hostName string ) (* Host , bool ) {
228
242
host , exist := m .Hosts [hostName ]
229
243
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 ))
231
245
return nil , exist
232
246
}
233
247
return host , exist
@@ -236,7 +250,7 @@ func (m *manager) host(hostName string) (*Host, bool) {
236
250
func (m * manager ) mustHost (hostName string ) * Host {
237
251
host , exist := m .Hosts [hostName ]
238
252
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 ))
240
254
os .Exit (0 )
241
255
}
242
256
return host
0 commit comments