WTC is a simple utility you can use to watch files and execute commands.
From master branch
$ go get -u github.com/rafaelsq/wtc
You can also install by release(linux64 only);
$ curl -sfL --silent https://github.com/rafaelsq/wtc/releases/latest/download/wtc.linux64.tar.gz | tar -xzv && mv wtc $(go env GOPATH)/bin/
Or just head to the releases page and download the latest version for you platform.
Before you begin, ensure you have installed the latest version of Go. See the Go documentation for details.
$ go get -u github.com/rafaelsq/wtc
$ wtc --help
USAGE:
wtc [[flags] [regex command]]
ex.: wtc
// will read [.]wtc.y[a]ml
ex.: wtc "_test\.go$" "go test -cover {PKG}"
wtc [flags]] [rule-name]
ex.: wtc -t rule-name
wtc --no-trace "rule ruleb"
FLAGS:
-debounce int
global debounce (default 300)
-f string
wtc config file (default try to find [.]wtc.y[a]ml)
-ignore string
regex
-no-trace
disable messages.
-t string
trig one or more rules by name
ex.: wtc -t ruleA
wtc -t "ruleA ruleB"
You can configure WTC by creating an YAML file with your own rules.
Example with all options:
no_trace: false
debounce: 300 # if rule has no debounce, this will be used instead
ignore: \.git/
format:
time: "15:04:05" # golang format
ok: "\u001b[38;5;244m[{{.Time}}] \u001b[38;5;2m[{{.Title}}]\u001b[0m \u001b[38;5;238m{{.Message}}\u001b[0m\n"
fail: "\u001b[38;5;244m[{{.Time}}] \u001b[38;5;1m[{{.Title}}] \u001b[38;5;238m{{.Message}}\u001b[0m\n"
command_ok: "\u001b[38;5;240m[{{.Time}}] [{{.Title}}] \u001b[0m{{.Message}}\n"
command_err: "\u001b[38;5;240m[{{.Time}}] [{{.Title}}] \u001b[38;5;1m{{.Message}}\u001b[0m\n"
trig: [start, buildNRun] # will run start and after buildNRun
trig_async: # will run test and async concurrently
- test
- async
env:
- name: PORT
value: 2000
- name: BASE_FILE
value: ./base.env
rules:
- name: start
- name: buildNRun
match: \.go$
ignore: _test\.go$
command: go build
env:
- name: ENV
value: development
- name: %{BASE_FILE}% # replace from environment
type: file
trig:
- done build
- run
- test
- name: done build
- name: run
command: ./$(basename `pwd`)
- name: test
env:
- name: ENV
value: test
- name: %{BASE_FILE}%
type: file
match: _test\.go$
command: go test -cover {PKG}
- name: async
command: echo async
Example base.env
export PORT=3000
# replace from environment
ENVIRONMENT=%{ENV}%
You can also trig a rule using wtc -t
, example;
wtc -t "start buildNRun"
wtc --no-trace buildNRun
$ make
will watch for changes and run go install
or just run $ go run main.go
debounce: 100
ignore: "\\.git/"
trig: install
rules:
- name: install
match: "\\.go$"
command: "go install"