Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markbates/grift
Go based task runner
https://github.com/markbates/grift
Last synced: 18 days ago
JSON representation
Go based task runner
- Host: GitHub
- URL: https://github.com/markbates/grift
- Owner: markbates
- License: mit
- Created: 2016-10-19T20:47:26.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-05T22:30:34.000Z (over 4 years ago)
- Last Synced: 2024-10-04T10:11:40.129Z (about 1 month ago)
- Language: Go
- Size: 66.4 KB
- Stars: 433
- Watchers: 9
- Forks: 24
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- go-awesome - Grift - Go-based task runner (Open source library / Task/Timer)
- awesome - grift - Go based task runner (Go)
README
# Grift
Grift is a very simple library that allows you to write simple "task" scripts in Go and run them by name without having to write big `main` type of wrappers. Grift is similar to, and inspired by, [Rake](http://rake.rubyforge.org).
## Why?
Excellent question! When building applications there comes a point where you need different scripts to do different things. For example, you might want a script to seed your database, or perhaps a script to parse some logs, etc...
Grift lets you write these scripts using Go in a really simple and extensible way.
## Installation
Installation is really easy using `go get`.
```text
$ go get github.com/markbates/grift
```You can confirm the installation by running:
```text
$ grift jim
```## Usage/Getting Started
Apart from having the binary installed, the only other requirement is that the package you place your grifts in is called `grifts`. That's it.
By running the following command:
```text
$ grift init
```When you run the `init` sub-command Grift will generate a new `grifts` package and create a couple of simple grifts for you.
#### List available grifts
```text
$ grift list
```#### Say Hello!
```text
$ grift hello
```## That's it!
That's really it! Grift is meant to be simple. Write your grifts, use the full power of Go to do it.
For more information I would highly recommend checking out the [docs](https://godoc.org/github.com/markbates/grift/grift).
### Examples:
```go
package griftsimport (
"errors"
"fmt"
"os"
"strings". "github.com/markbates/grift/grift"
)var _ = Add("boom", func(c *Context) error {
return errors.New("boom!!!")
})var _ = Add("hello", func(c *Context) error {
fmt.Println("Hello World!")
return nil
})var _ = Add("hello", func(c *Context) error {
fmt.Println("Hello World! Again")
err := Run("db:migrate", c)
if err != nil {
return err
}
dir, err := os.Getwd()
if err != nil {
return err
}
fmt.Printf("### dir -> %+v\n", dir)
return nil
})var _ = Add("env:print", func(c *Context) error {
if len(c.Args) >= 1 {
for _, e := range c.Args {
fmt.Printf("%s=%s\n", e, os.Getenv(e))
}
} else {
for _, e := range os.Environ() {
pair := strings.Split(e, "=")
fmt.Printf("%s=%s\n", pair[0], os.Getenv(pair[0]))
}
}return nil
})var _ = Namespace("db", func() {
Desc("migrate", "Migrates the databases")
Set("migrate", func(c *Context) error {
fmt.Println("db:migrate")
fmt.Printf("### args -> %+v\n", c.Args)
return nil
})
}
```