github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/updater/README.md (about)

     1  # Updater
     2  
     3  [![Build Status](https://github.com/keybase/client/go/updater/actions/workflows/ci.yml/badge.svg)](https://github.com/keybase/client/go/updater/actions)
     4  [![GoDoc](https://godoc.org/github.com/keybase/client/go/updater?status.svg)](https://godoc.org/github.com/keybase/client/go/updater)
     5  
     6  **Warning**: This isn't ready for non-Keybase libraries to use yet!
     7  
     8  The goals of this library are to provide an updater that:
     9  
    10  - Is simple
    11  - Works on all our platforms (at least OS X, Windows, Linux)
    12  - Recovers from non-fatal errors
    13  - Every request or command execution should timeout (nothing blocks)
    14  - Can recover from failures in its environment
    15  - Can run as an unprivileged background service
    16  - Has minimal, vendored dependencies
    17  - Is well tested
    18  - Is secure
    19  - Reports failures and activity
    20  - Can notify the user of any non-transient failures
    21  
    22  This updater library is used to support updating (in background and on-demand)
    23  for Keybase apps and services.
    24  
    25  ### Packages
    26  
    27  The main package is the updater core, there are other support packages:
    28  
    29  - command: Executes a command with a timeout
    30  - keybase: Keybase specific behavior for updates
    31  - osx: MacOS specific UI
    32  - process: Utilities to find and terminate Processes
    33  - saltpack: Verify updates with [saltpack](https://saltpack.org/)
    34  - service: Runs the updater as a background service
    35  - sources: Update sources for remote locations (like S3), or locally (for testing)
    36  - test: Test resources
    37  - util: Utilities for updating, such as digests, env, file, http, unzip, etc.
    38  - watchdog: Utility to monitor processes and restart them (like launchd), for use with updater service
    39  - windows: Windows specific UI
    40  
    41  ### Development
    42  
    43  This library should pass the [gometalinter](https://github.com/alecthomas/gometalinter).
    44  
    45  There is a pre-commit hook available:
    46  
    47  ```
    48  pip install pre-commit
    49  go get -u github.com/alecthomas/gometalinter
    50  gometalinter --install --update
    51  pre-commit install
    52  pre-commit run -a
    53  ```