Skip to content

Commit 4eb42bc

Browse files
committed
feat: enable update checksum validation
1 parent 31133ee commit 4eb42bc

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

commands/update.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ func cmdUpdate() *cobra.Command {
1515
cobra.CheckErr(util.ErrVerNotSet)
1616
}
1717

18+
updater, err := version.NewUpdater()
19+
cobra.CheckErr(err)
20+
1821
ver := version.Get()
19-
latest, err := version.GetLatestRelease()
22+
latest, err := version.GetLatestRelease(updater)
2023
cobra.CheckErr(err)
2124

2225
if version.IsLatest(ver, latest) {
@@ -30,7 +33,7 @@ func cmdUpdate() *cobra.Command {
3033
return
3134
}
3235

33-
err = version.Update(ver, latest)
36+
err = version.Update(ver, latest, updater)
3437
cobra.CheckErr(err)
3538
},
3639
}

main.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,13 @@ pzmod --file server.ini set name "My Server"`,
2323
return
2424
}
2525

26+
updater, err := version.NewUpdater()
27+
if err != nil {
28+
return
29+
}
30+
2631
ver := version.Get()
27-
latest, err := version.GetLatestRelease()
32+
latest, err := version.GetLatestRelease(updater)
2833
if err != nil {
2934
return
3035
}

version/update.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,16 @@ import (
1111

1212
const repoSlug = "kldzj/pzmod"
1313

14-
func GetLatestRelease() (*selfupdate.Release, error) {
15-
latest, found, err := selfupdate.DetectLatest(context.Background(), selfupdate.ParseSlug(repoSlug))
14+
func NewUpdater() (*selfupdate.Updater, error) {
15+
return selfupdate.NewUpdater(selfupdate.Config{
16+
Validator: &selfupdate.ChecksumValidator{
17+
UniqueFilename: "checksums.txt",
18+
},
19+
})
20+
}
21+
22+
func GetLatestRelease(updater *selfupdate.Updater) (*selfupdate.Release, error) {
23+
latest, found, err := updater.DetectLatest(context.Background(), selfupdate.ParseSlug(repoSlug))
1624
if err != nil {
1725
return nil, fmt.Errorf("error occurred while fetching release: %w", err)
1826
}
@@ -28,7 +36,7 @@ func IsLatest(current string, latest *selfupdate.Release) bool {
2836
return latest != nil && latest.LessOrEqual(current)
2937
}
3038

31-
func Update(current string, latest *selfupdate.Release) error {
39+
func Update(current string, latest *selfupdate.Release, updater *selfupdate.Updater) error {
3240
if IsLatest(current, latest) {
3341
fmt.Printf("Current version %s is the latest", current)
3442
return nil
@@ -39,7 +47,7 @@ func Update(current string, latest *selfupdate.Release) error {
3947
return errors.New("could not locate executable path")
4048
}
4149

42-
if err := selfupdate.UpdateTo(context.Background(), latest.AssetURL, latest.AssetName, exe); err != nil {
50+
if err := updater.UpdateTo(context.Background(), latest, exe); err != nil {
4351
return fmt.Errorf("error occurred while updating binary: %w", err)
4452
}
4553

0 commit comments

Comments
 (0)