Skip to content

Commit 594d13d

Browse files
committed
wip
Signed-off-by: Jakob Borg <jakob@kastelo.net>
1 parent e51f46f commit 594d13d

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

_script/histver/synver.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,17 +210,25 @@ func getVersionFromReader(r io.Reader) (tableRow, error) {
210210
return tableRow{}, err
211211
}
212212

213+
var errs []error
213214
if row, err := getVersionFromCommand(fd.Name()); err == nil {
214215
return row, nil
216+
} else {
217+
errs = append(errs, err)
218+
}
219+
if row, err := getVersionFromGo(fd.Name()); err == nil {
220+
return row, nil
221+
} else {
222+
errs = append(errs, err)
215223
}
216-
return getVersionFromGo(fd.Name())
224+
return tableRow{}, errors.Join(errs...)
217225
}
218226

219227
func getVersionFromGo(name string) (tableRow, error) {
220228
cmd := exec.Command("go", "version", "-m", name)
221-
out, err := cmd.Output()
229+
out, err := cmd.CombinedOutput()
222230
if err != nil {
223-
return tableRow{}, err
231+
return tableRow{}, fmt.Errorf("go version -m: %w: %s", err, out)
224232
}
225233

226234
// % go version -m ~/bin/syncthing
@@ -229,28 +237,28 @@ func getVersionFromGo(name string) (tableRow, error) {
229237
// ...
230238

231239
if idx := bytes.Index(out, []byte{'\n'}); idx < 0 {
232-
return tableRow{}, errors.New("no version")
240+
return tableRow{}, errors.New("go version -m: no version")
233241
} else {
234242
out = out[:idx]
235243
}
236244

237245
if idx := bytes.LastIndex(out, []byte{' '}); idx < 0 {
238-
return tableRow{}, errors.New("no version")
246+
return tableRow{}, errors.New("go version -m: no version")
239247
} else {
240248
return tableRow{Runtime: string(out[idx+1:])}, nil
241249
}
242250
}
243251

244252
func getVersionFromCommand(name string) (tableRow, error) {
245253
cmd := exec.Command(name, "--version")
246-
out, err := cmd.Output()
254+
out, err := cmd.CombinedOutput()
247255
if err != nil {
248-
return tableRow{}, err
256+
return tableRow{}, fmt.Errorf("syncthing: running: %w: %s", err, out)
249257
}
250258

251259
var r tableRow
252260
if err := r.fromVersion(string(out)); err != nil {
253-
return tableRow{}, err
261+
return tableRow{}, fmt.Errorf("syncthing: parse version: %w: %s", err, out)
254262
}
255263
return r, nil
256264
}

0 commit comments

Comments
 (0)