composer

command module
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2023 License: MIT Imports: 20 Imported by: 0

README

Composer

Composer is CLI software for managing processes in development environment.

Requirements

  • Golang 1.13.x

Installation

Manual build
  1. Install Go 1.13+
  2. Clone this project
  • git clone https://github.com/mdouchement/composer
  1. Build the binary
  • go build -o composer *.go
  1. Install the compiled binary
  • mv composer /usr/bin/composer

Usage

$ composer start -c ~/server-stack.yml

Configuration file

command is interpreted as shell script.

  • Basic
services:
  risuto:
    pwd: $GOPATH/src/github.com/mdouchement/risuto
    command: go run risuto.go -p 5000 -b localhost
    environment:
      RISUTO_DATABASE: /tmp/data/tiedot_db

  breizhtrip:
    pwd: $GOPATH/src/github.com/mdouchement/breizhtrip-go
    command: go run breizhtrip.go -p 5005 -b localhost

  machinery:
    pwd: $GOPATH/src/github.com/mdouchement/machnery-app
    command: go run app.go worker -c 5

  random_shell_script:
    pwd: /tmp
    command: |
      for i in 0 1 2 3 4 5 6 7 8 9
      do
        echo "Hello $i times"
      done
  • Full options
services:
  ggpull:
    pwd: /home/$USER/myapp
    command: git pull

  app:
    hooks:
      wait:
        - ggpull
    pwd: /home/$USER/myapp
    command: bundle exec rails s
    log_trim_pattern: '\[.*\] \w+  (?P<message>.*)'
    environment:
      RAILS_ENV: production

  worker:
    ignore_error: true # Do not stop other services on error
    hooks:
      wait: # wait for other processes before start
        - ggpull
      kill: # kill other processes on exit
        - app
    pwd: /home/$USER/myapp
    command: bundle exec sidekiq -c config/sidekiq.yml
Trim logs

Outputed logs can be trimed to remove useless data like timestamp. This option is based on the Golang's regexp package and you can test your regexp with the following website Regex Tester - Golang.

The captured group must be named message like the following example:

log_trim_pattern: '\[.*\] \w+  (?P<message>.*)'

The result is the following:

# Without trim:
[Feb 13 10:38:09]  INFO my_app: [2017-02-13 10:38:09] INFO  WEBrick 1.3.1

# With trim:
[Feb 13 10:38:09]  INFO my_app: WEBrick 1.3.1

# When the trim regexp does not match, the message is prefixed with `[!]`
[Feb 13 10:38:09]  INFO my_app: [!] => Booting WEBrick

License

MIT

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL