πŸ“š realize - Awesome Go Library for Build Automation

Go Gopher mascot for realize

Go build a system with file watchers and live to reload. Run, build and watch file changes with custom paths.

🏷️ Build Automation
πŸ“‚ Libraries and tools help with build automation.
⭐ 4,459 stars
View on GitHub πŸ”—

Detailed Description of realize

Build status GoReport GoDoc License Gitter


#1 Golang live reload and task runner


Content

- ⭐️ Top Features

- πŸ’ƒπŸ» Get started

- πŸ“„ Config sample

- πŸ“š Commands List

- πŸ›  Support and Suggestions

- 😎 Backers and Sponsors

Top Features

  • High performance Live Reload.
  • Manage multiple projects at the same time.
  • Watch by custom extensions and paths.
  • All Go commands supported.
  • Switch between different Go builds.
  • Custom env variables for project.
  • Execute custom commands before and after a file changes or globally.
  • Export logs and errors to an external file.
  • Step-by-step project initialization.
  • Redesigned panel that displays build errors, console outputs and warnings.
  • Any suggestion? Suggest an amazing feature! πŸ•ΊπŸ»

Supporters


Quickstart

go get github.com/oxequa/realize

Commands List

Run Command

From project/projects root execute:

$ realize start

It will create a .realize.yaml file if doesn't already exist, add the working directory as project and run your workflow.

start command supports the following custom parameters:

--name="name"               -> Run by name on existing configuration
--path="realize/server"     -> Custom Path (if not specified takes the working directory name)
--generate                  -> Enable go generate
--fmt                       -> Enable go fmt
--test                      -> Enable go test
--vet                       -> Enable go vet
--install                   -> Enable go install
--build                     -> Enable go build
--run                       -> Enable go run
--server                    -> Enable the web server
--open                      -> Open web ui in default browser
--no-config                 -> Ignore an existing config / skip the creation of a new one

Some examples:

$ realize start
$ realize start --path="mypath"
$ realize start --name="realize" --build
$ realize start --path="realize" --run --no-config
$ realize start --install --test --fmt --no-config
$ realize start --path="/Users/username/go/src/github.com/oxequa/realize-examples/coin/"

If you want, you can specify additional arguments for your project:

βœ… $ realize start --path="/print/printer" --run yourParams --yourFlags // right
❌ $ realize start yourParams --yourFlags --path="/print/printer" --run // wrong

⚠️ The additional arguments must go after the params:
πŸ’‘ The start command can be used with a project from its working directory without make a config file (--no-config).

Add Command

Add a project to an existing config file or create a new one.

$ realize add

πŸ’‘ add supports the same parameters as start command.

Init Command

This command allows you to create a custom configuration step-by-step.

$ realize init

πŸ’‘ init is the only command that supports a complete customization of all supported options.

Remove Command

Remove a project by its name

$ realize remove --name="myname"

Color reference

πŸ’™ BLUE: Outputs of the project.
πŸ’” RED: Errors.
πŸ’œ PURPLE: Times or changed files.
πŸ’š GREEN: Successfully completed action.

Config sample

*** there is no more a .realize dir, but only a .realize.yaml file ***

For more examples check: Realize Examples

settings:
    legacy:
        force: true             // force polling watcher instead fsnotifiy
        interval: 100ms         // polling interval
    resources:                  // files names
        outputs: outputs.log
        logs: logs.log
        errors: errors.log
server:
    status: false               // server status
    open: false                 // open browser at start
    host: localhost             // server host
    port: 5001                  // server port
schema:
- name: coin
  path: coin              // project path
  env:            // env variables available at startup
        test: test
        myvar: value
  commands:               // go commands supported
    vet:
        status: true
    fmt:
        status: true
        args:
        - -s
        - -w
    test:
        status: true
        method: gb test    // support different build tools
    generate:
        status: true
    install:
        status: true
    build:
        status: false
        method: gb build    // support differents build tool
        args:               // additional params for the command
        - -race
    run:
        status: true
  args:                     // arguments to pass at the project
  - --myarg
  watcher:
      paths:                 // watched paths
      - /
      ignore_paths:          // ignored paths
      - vendor
      extensions:                  // watched extensions
      - go
      - html
      scripts:
      - type: before
        command: echo before global
        global: true
        output: true
      - type: before
        command: echo before change
        output: true
      - type: after
        command: echo after change
        output: true
      - type: after
        command: echo after global
        global: true
        output: true
      errorOutputPattern: mypattern   //custom error pattern

Support and Suggestions

πŸ’¬ Chat with us Gitter
⭐️ Suggest a new Feature

Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

Sponsors

Become a sponsor and get your logo here! [Become a sponsor]