2016-07-12 08:18:02 +00:00
package main
import (
2016-07-12 18:03:22 +00:00
"os"
2016-07-12 20:48:05 +00:00
"fmt"
"gopkg.in/urfave/cli.v2"
"github.com/tockins/realize/realize"
2016-07-12 08:18:02 +00:00
)
2016-07-27 08:49:37 +00:00
const (
name = "Realize"
version = "v1.0"
email = "pracchia@hastega.it"
description = "Run and build your applications on file changes. Watch custom paths and specific extensions. Define additional commands and multiple projects"
author = "Alessio Pracchia"
)
2016-07-12 08:18:02 +00:00
func main ( ) {
2016-07-13 10:32:54 +00:00
handle := func ( err error ) error {
if err != nil {
2016-07-23 22:49:19 +00:00
return cli . Exit ( err . Error ( ) , 86 )
2016-07-13 10:32:54 +00:00
}
return nil
}
2016-07-12 18:03:22 +00:00
app := & cli . App {
2016-07-27 08:49:37 +00:00
Name : name ,
Version : version ,
2016-07-23 22:49:19 +00:00
Authors : [ ] * cli . Author {
& cli . Author {
2016-07-27 08:49:37 +00:00
Name : author ,
Email : email ,
2016-07-23 22:49:19 +00:00
} ,
} ,
2016-07-27 08:49:37 +00:00
Usage : description ,
2016-07-12 18:03:22 +00:00
Commands : [ ] * cli . Command {
{
Name : "run" ,
Usage : "Build and watch file changes" ,
Action : func ( c * cli . Context ) error {
fmt . Printf ( "Hello %q" , c . String ( "run" ) )
return nil
} ,
} ,
{
Name : "start" ,
Category : "config" ,
2016-07-23 22:49:19 +00:00
Aliases : [ ] string { "s" } ,
2016-07-27 08:52:11 +00:00
Usage : "Create the initial config" ,
2016-07-23 22:49:19 +00:00
Flags : [ ] cli . Flag {
2016-07-26 17:04:13 +00:00
& cli . StringFlag { Name : "name" , Aliases : [ ] string { "n" } , Value : "Sample App" } ,
2016-07-23 22:49:19 +00:00
& cli . StringFlag { Name : "main" , Aliases : [ ] string { "m" } , Value : "main.go" } ,
& cli . BoolFlag { Name : "build" , Aliases : [ ] string { "b" } , Value : true } ,
& cli . BoolFlag { Name : "run" , Aliases : [ ] string { "r" } , Value : true } ,
} ,
Action : func ( params * cli . Context ) error {
2016-07-24 23:02:18 +00:00
y := realize . New ( params )
return handle ( y . Create ( params ) )
2016-07-12 18:03:22 +00:00
} ,
} ,
2016-07-23 22:49:19 +00:00
{
Name : "add" ,
Category : "config" ,
Aliases : [ ] string { "s" } ,
2016-07-27 08:52:11 +00:00
Usage : "Add another project" ,
2016-07-23 22:49:19 +00:00
Flags : [ ] cli . Flag {
2016-07-26 17:04:13 +00:00
& cli . StringFlag { Name : "name" , Aliases : [ ] string { "n" } , Value : "Sample App" } ,
2016-07-23 22:49:19 +00:00
& cli . StringFlag { Name : "main" , Aliases : [ ] string { "m" } , Value : "main.go" } ,
& cli . BoolFlag { Name : "build" , Aliases : [ ] string { "b" } , Value : true } ,
& cli . BoolFlag { Name : "run" , Aliases : [ ] string { "r" } , Value : true } ,
} ,
Action : func ( params * cli . Context ) error {
2016-07-24 23:02:18 +00:00
y := realize . New ( params )
return handle ( y . Add ( params ) )
2016-07-23 22:49:19 +00:00
} ,
2016-07-12 18:03:22 +00:00
} ,
2016-07-26 17:04:13 +00:00
{
Name : "remove" ,
Category : "config" ,
Aliases : [ ] string { "s" } ,
2016-07-27 08:52:11 +00:00
Usage : "Remove a project" ,
2016-07-26 17:04:13 +00:00
Flags : [ ] cli . Flag {
& cli . StringFlag { Name : "name" , Aliases : [ ] string { "n" } , Value : "Sample App" } ,
} ,
Action : func ( params * cli . Context ) error {
y := realize . New ( params )
return handle ( y . Remove ( params ) )
} ,
} ,
{
Name : "list" ,
Category : "config" ,
Aliases : [ ] string { "s" } ,
2016-07-27 08:52:11 +00:00
Usage : "Projects list" ,
2016-07-26 17:04:13 +00:00
Action : func ( params * cli . Context ) error {
y := realize . New ( params )
return handle ( y . List ( ) )
} ,
} ,
2016-07-12 18:03:22 +00:00
} ,
}
2016-07-12 08:18:02 +00:00
2016-07-12 18:03:22 +00:00
app . Run ( os . Args )
2016-07-12 08:18:02 +00:00
}