mirror of
https://github.com/MedzikUser/go-github-selfupdate.git
synced 2024-08-15 03:25:29 +00:00
add description about Updater
struct usage for GitHub Enterprise
This commit is contained in:
parent
d0de60fba1
commit
f637165ab7
2 changed files with 54 additions and 1 deletions
53
README.md
53
README.md
|
@ -26,6 +26,8 @@ If newer version than itself is detected, it downloads released binary from GitH
|
|||
- Update the binary with rollback support on failure
|
||||
- Tested on Linux, macOS and Windows (using Travis CI and AppVeyor)
|
||||
- Many archive and compression formats are supported (zip, tar, gzip, xzip)
|
||||
- Support private repositories
|
||||
- Support [GitHub Enterprise][]
|
||||
|
||||
And small wrapper CLIs are provided:
|
||||
|
||||
|
@ -81,6 +83,9 @@ It provides `selfupdate` package.
|
|||
- `selfupdate.UpdateCommand()`: Detect the latest version of given repository and update given command.
|
||||
- `selfupdate.DetectLatest()`: Detect the latest version of given repository.
|
||||
- `selfupdate.UpdateTo()`: Update given command to the binary hosted on given URL.
|
||||
- `selfupdate.Updater`: Context manager of self-upadte process. If you want to customize some behavior
|
||||
of self-update (e.g. specify API token, use GitHub Enterprise, ...), please make an instance of
|
||||
`Updater` and use its methods.
|
||||
|
||||
Following is the easiest way to use this package.
|
||||
|
||||
|
@ -154,8 +159,55 @@ func confirmAndSelfUpdate() {
|
|||
}
|
||||
```
|
||||
|
||||
If GitHub API token is set to `[token]` section in `gitconfig` or `$GITHUB_TOKEN` environment variable,
|
||||
this library will use it to call GitHub REST API. It's useful when reaching rate limits or when using
|
||||
this library with private repositories.
|
||||
|
||||
Please see [the documentation page][GoDoc] for more detail.
|
||||
|
||||
This library should work with [GitHub Enterprise][]. To configure API base URL, please setup `Updater`
|
||||
instance and use its method instead (Actually all functions above are just a shortcuts of methods of
|
||||
`Updater` instance).
|
||||
|
||||
Following is an example of usage with GitHub Enterprise.
|
||||
|
||||
```go
|
||||
import (
|
||||
"log"
|
||||
"github.com/blang/semver"
|
||||
"github.com/rhysd/go-github-selfupdate/selfupdate"
|
||||
)
|
||||
|
||||
const version = "1.2.3"
|
||||
|
||||
func doSelfUpdate(token string) {
|
||||
v := semver.MustParse(version)
|
||||
up, err := selfupdate.NewUpdater(selfupdate.Config{
|
||||
APIToken: token,
|
||||
EnterpriseBaseURL: "https://github.your.company.com/api/v3",
|
||||
})
|
||||
latest, err := up.UpdateSelf(v, "myname/myrepo")
|
||||
if err != nil {
|
||||
log.Println("Binary update failed:", err)
|
||||
return
|
||||
}
|
||||
if latest.Version.Equals(v) {
|
||||
// latest version is the same as current version. It means current binary is up to date.
|
||||
log.Println("Current binary is the latest version", version)
|
||||
} else {
|
||||
log.Println("Successfully updated to version", latest.Version)
|
||||
log.Println("Release note:\n", latest.ReleaseNotes)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If `APIToken` field is not given, it tries to retrieve API token from `[token]` section of `.gitconfig`
|
||||
or `$GITHUB_TOKEN` environment variable. If no token is found, it raises an error because GitHub Enterprise
|
||||
API does not work without authentication.
|
||||
|
||||
If your GitHub Enterprise instance's upload URL is different from the base URL, please also set `EnterpriseUploadURL`
|
||||
field
|
||||
|
||||
### Naming Rules of Released Binaries
|
||||
|
||||
go-github-selfupdate assumes that released binaries are put for each combination of platforms and archs.
|
||||
|
@ -279,3 +331,4 @@ Distributed under the [MIT License](LICENSE)
|
|||
[AppVeyor]: https://ci.appveyor.com/project/rhysd/go-github-selfupdate/branch/master
|
||||
[Codecov Status]: https://codecov.io/gh/rhysd/go-github-selfupdate/branch/master/graph/badge.svg
|
||||
[Codecov]: https://codecov.io/gh/rhysd/go-github-selfupdate
|
||||
[GitHub Enterprise]: https://enterprise.github.com/home
|
||||
|
|
|
@ -46,7 +46,7 @@ func (up *Updater) downloadDirectlyFromURL(assetURL string) (io.ReadCloser, erro
|
|||
}
|
||||
|
||||
if res.StatusCode != 200 {
|
||||
return nil, fmt.Errorf("Failed to download a release file from %s: Not successfull status %d", assetURL, res.StatusCode)
|
||||
return nil, fmt.Errorf("Failed to download a release file from %s: Not successful status %d", assetURL, res.StatusCode)
|
||||
}
|
||||
|
||||
return res.Body, nil
|
||||
|
|
Loading…
Reference in a new issue