updateutils

package
v1.5.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2024 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Organization = "wjlin0"
)

Variables

View Source
var (
	ErrNoAssetFound        = errorutil.NewWithFmt("update: could not find release asset for your platform (%s/%s)")
	SkipCheckSumValidation = false // by default checksum of gh assets is verified with checksums file present in release
)
View Source
var (
	// By default when tool is updated release notes of latest version are printed
	HideReleaseNotes      = false
	HideProgressBar       = false
	VersionCheckTimeout   = time.Duration(5) * time.Second
	DownloadUpdateTimeout = time.Duration(30) * time.Second
	// Note: DefaultHttpClient is only used in GetToolVersionCallback
	DefaultHttpClient *http.Client
)

Functions

func GetToolVersionCallback

func GetToolVersionCallback(toolName, repoName string) func() (string, error)

GetToolVersionCallback returns a callback function that checks for updates of tool by sending a request to update check endpoint and returns latest version if repoName is empty then tool name is considered as repoName

func GetUpdateDirFromRepoCallback

func GetUpdateDirFromRepoCallback(toolName, dir, repoName string) func() error

func GetUpdateDirFromRepoNoErrCallback

func GetUpdateDirFromRepoNoErrCallback(toolName, dir, repoName string) func()

func GetUpdateToolCallback

func GetUpdateToolCallback(toolName, version string) func()

GetUpdateToolCallback returns a callback function that updates given tool if given version is older than latest gh release and exits

func GetUpdateToolFromRepoCallback

func GetUpdateToolFromRepoCallback(toolName, version, repoName string) func()

GetUpdateToolWithRepoCallback returns a callback function that is similar to GetUpdateToolCallback but it takes repoName as an argument (repoName can be either just repoName ex: `nuclei` or full repo Addr ex: `projectdiscovery/nuclei`)

func GetVersionDescription

func GetVersionDescription(current string, latest string) string

GetVersionDescription returns tags like (latest) or (outdated) or (dev)

func GetpdtmParams

func GetpdtmParams(version string) string

GetpdtmParams returns encoded query parameters sent to update check endpoint

func IsDevReleaseOutdated

func IsDevReleaseOutdated(current string, latest string) bool

IsDevReleaseOutdated returns true if installed tool (dev version) is outdated ex: if installed tools is v2.9.1-dev and latest release is v2.9.1 then it is outdated since v2.9.1-dev is released and merged into main/master branch

func IsOutdated

func IsOutdated(current, latest string) bool

IsOutdated returns true if current version is outdated

func UnpackAssetWithCallback

func UnpackAssetWithCallback(format AssetFormat, data *bytes.Reader, callback AssetFileCallback) error

UnpackAssetWithCallback unpacks asset and executes callback function on every file in data

Types

type AssetFileCallback

type AssetFileCallback func(path string, fileInfo fs.FileInfo, data io.Reader) error

AssetFileCallback function is executed on every file in unpacked asset . if returned error is not nil furthur processing of asset file is stopped

type AssetFormat

type AssetFormat uint
const (
	Zip AssetFormat = iota
	Tar
	Unknown
)

func IdentifyAssetFormat

func IdentifyAssetFormat(assetName string) AssetFormat

func (AssetFormat) FileExtension

func (a AssetFormat) FileExtension() string

FileExtension of this asset format

type GHReleaseDownloader

type GHReleaseDownloader struct {
	Format  AssetFormat
	AssetID int
	Latest  *github.RepositoryRelease
	// contains filtered or unexported fields
}

GHReleaseDownloader fetches and reads release of a gh repo

func NewghReleaseDownloader

func NewghReleaseDownloader(RepoName string) (*GHReleaseDownloader, error)

NewghReleaseDownloader returns GHRD instance

func (*GHReleaseDownloader) DownloadAssetWithName

func (d *GHReleaseDownloader) DownloadAssetWithName(assetname string, showProgressBar bool) (*bytes.Buffer, error)

DownloadAssetWithName downloads asset with given name

func (*GHReleaseDownloader) DownloadSourceWithCallback

func (d *GHReleaseDownloader) DownloadSourceWithCallback(showProgressBar bool, callback AssetFileCallback) error

DownloadSourceWithCallback downloads source code of latest release and calls callback for each file in archive

func (*GHReleaseDownloader) DownloadTool

func (d *GHReleaseDownloader) DownloadTool() (*bytes.Buffer, error)

DownloadTool downloads tool and returns bin data

func (*GHReleaseDownloader) GetExecutableFromAsset

func (d *GHReleaseDownloader) GetExecutableFromAsset() ([]byte, error)

GetExecutableFromAsset downloads , validates checksum and only returns tool Binary

func (*GHReleaseDownloader) GetReleaseChecksums

func (d *GHReleaseDownloader) GetReleaseChecksums() (map[string]string, error)

GetReleaseChecksums tries to download tool checksum if release contains any in map[asset_name]checksum_data format

func (*GHReleaseDownloader) SetToolName

func (d *GHReleaseDownloader) SetToolName(toolName string)

SetAssetName: By default RepoName is assumed as ToolName which maynot be the case always setToolName corrects that

type Tool

type Tool struct {
	Name    string            `json:"name"`
	Repo    string            `json:"repo"`
	Version string            `json:"version"`
	Assets  map[string]string `json:"assets"`
}

Tool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL