mattn / goemon

五右衛門
182 stars 14 forks source link
devops go

goemon

Go Extensible Monitoring

Speed up your development. If you updated js files, the page should be reloaded. If you updated go files, the app should be recompiled, and should be restarted. And also, the page should be reloaded

Expected directory structure

+---assets
|   +- index.html
|   +- app.css
|   +- app.js
+- main.go

Usage

For example:

Run web server

$ goemon -g > goemon.yml
$ goemon go run main.go

Writing markdown

$ goemon -g md > goemon.yml
$ goemon --

Writing C code

$ goemon -g c > goemon.yml
$ goemon --

Default configuration

# Generated by goemon -g
livereload: :35730
tasks:
- match: './assets/*.js'
  commands:
  - minifyjs -m -i ${GOEMON_TARGET_FILE} > ${GOEMON_TARGET_DIR}/${GOEMON_TARGET_NAME}.min.js
  - :livereload /
- match: './assets/*.css'
  commands:
  - :livereload /
- match: './assets/*.html'
  commands:
  - :livereload /
- match: '*.go'
  commands:
  - go build
  - :restart
  - :livereload /
Internal Command Behavior
:livereload /path reload path
:minify minify js/css(work in progress)
:restart restart app
:sleep 3000 sleep 3000ms
:fizzbuzz 100 do fizzbuzz(1 to 100)
:event :Foo fire event :Foo

:event :Foo fire event defined - match: :Foo.

Currently, :minify is work in progress. So you should run minifyjs command to do it. For example, configuration in above works as below.

Pattern Behavior
./assets/*.css reload page
./assets/*.js minify js/css, reload page
./assets/*.html reload page
./assets/*.go build, restart app, reload page

LiveReload

You can use livereload feature.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script src="http://localhost:35730/livereload.js"></script>
  <script src="https://github.com/mattn/goemon/raw/master/app.css"></script>
  <script src="https://github.com/mattn/goemon/raw/master/app.min.js"></script>
  <title>Your App</title>
</head>
<body>
<!-- Your Code -->  
</body>
</html>

Use goemon as library

cat > goemon.go
package main

import (
    _ "github.com/mattn/goemon/auto"
)
^D

Then go build. You don't need to use goemon command.

Installation

$ go get github.com/mattn/goemon/cmd/goemon

If you want to minify js, install minifyjs like below.

$ npm install -g minifyjs

License

MIT

Author

Yasuhiro Matsumoto (a.k.a mattn)