reload – github.com/teamwork/reload Index | Files | Directories

package reload

import "github.com/teamwork/reload"

Package reload offers lightweight automatic reloading of running processes.

After initialisation with reload.Do() any changes to the binary will restart the process.

Example:

go func() {
    err := reload.Do(log.Printf)
    if err != nil {
        panic(err)
    }
}()

A list of additional directories to watch can be added:

go func() {
    err := reload.Do(log.Printf, reload.Dir("tpl", reloadTpl)
    if err != nil {
        panic(err)
    }
}()

Note that this package won't prevent race conditions (e.g. when assigning to a global templates variable). You'll need to use sync.RWMutex yourself.

Index

Functions

func Dir

func Dir(path string, cb func()) dir

Dir is an additional directory to watch for changes. Directories are watched non-recursively.

The second argument is the callback that to run when the directory changes. Use reload.Exec() to restart the process.

func Do

func Do(log func(string, ...interface{}), additional ...dir) error

Do reload the current process when its binary changes.

The log function is used to display an informational startup message and errors. It works well with e.g. the standard log package or Logrus.

The error return will only return initialisation errors. Once initialized it will use the log function to print errors, rather than return.

func Exec

func Exec()

Exec replaces the current process with a new copy of itself.

Source Files

reload.go

Directories

PathSynopsis
example
Version
v1.4.2 (latest)
Published
Oct 14, 2022
Platform
js/wasm
Imports
8 packages
Last checked
now

Tools for package owners.