Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/equinox-io/equinox

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/equinox-io/equinox

  • v1.2.0
  • Source
  • Go
  • Socket score

Version published
Created
Source

equinox client SDK godoc reference

Package equinox allows applications to remotely update themselves with the equinox.io service.

Minimal Working Example

import "github.com/equinox-io/equinox"

const appID = "<YOUR EQUINOX APP ID>"

var publicKey = []byte(`
-----BEGIN PUBLIC KEY-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEtrVmBxQvheRArXjg2vG1xIprWGuCyESx
MMY8pjmjepSy2kuz+nl9aFLqmr+rDNdYvEBqQaZrYMc6k29gjvoQnQ==
-----END PUBLIC KEY-----
`)

func update(channel string) error {
    opts := equinox.Options{Channel: channel}
    if err := opts.SetPublicKeyPEM(publicKey); err != nil {
        return err
    }

    // check for the update
    resp, err := equinox.Check(appID, opts)
    switch {
    case err == equinox.NotAvailableErr:
        fmt.Println("No update available, already at the latest version!")
        return nil
    case err != nil:
        return err
    }

    // fetch the update and apply it
    err = resp.Apply()
    if err != nil {
        return err
    }

    fmt.Printf("Updated to new version: %s!\n", resp.ReleaseVersion)
    return nil
}

Update To Specific Version

When you specify a channel in the update options, equinox will try to update the application to the latest release of your application published to that channel. Instead, you may wish to update the application to a specific (possibly older) version. You can do this by explicitly setting Version in the Options struct:

opts := equinox.Options{Version: "0.1.2"}

Prompt For Update

You may wish to ask the user for approval before updating to a new version. This is as simple as calling the Check function and only calling Apply on the returned result if the user approves. Example:

// check for the update
resp, err := equinox.Check(appID, opts)
switch {
case err == equinox.NotAvailableErr:
    fmt.Println("No update available, already at the latest version!")
    return nil
case err != nil:
    return err
}

fmt.Println("New version available!")
fmt.Println("Version:", resp.ReleaseVersion)
fmt.Println("Name:", resp.ReleaseTitle)
fmt.Println("Details:", resp.ReleaseDescription)

ok := prompt("Would you like to update?")

if !ok {
    return
}

err = resp.Apply()
// ...

Generating Keys

All equinox releases must be signed with a private ECDSA key, and all updates verified with the public key portion. To do that, you'll need to generate a key pair. The equinox release tool can generate an ecdsa key pair for you easily:

equinox genkey

FAQs

Package last updated on 25 Sep 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc