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-27 11:42:25 +00:00
"github.com/fatih/color"
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"
2016-07-27 11:42:25 +00:00
//description = "Run and build your applications on file changes. Watch custom paths and specific extensions. Define additional commands and multiple projects"
description = "Run and build your applications on file changes."
2016-07-27 08:49:37 +00:00
author = "Alessio Pracchia"
)
2016-07-27 11:42:25 +00:00
var blue = color . New ( color . FgBlue , color . Bold ) . SprintFunc ( )
var bluel = color . New ( color . FgBlue ) . SprintFunc ( )
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-27 11:42:25 +00:00
header := func ( ) {
fmt . Println ( blue ( name ) + " - " + blue ( version ) )
fmt . Println ( bluel ( description ) + "\n" )
}
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" ,
2016-07-27 09:14:32 +00:00
Action : func ( p * cli . Context ) error {
fmt . Printf ( "Hello %q" , p . String ( "run" ) )
2016-07-12 18:03:22 +00:00
return nil
} ,
2016-07-27 11:42:25 +00:00
Before : func ( c * cli . Context ) error {
header ( )
return nil
} ,
2016-07-12 18:03:22 +00:00
} ,
{
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" } ,
2016-07-29 23:15:47 +00:00
& cli . BoolFlag { Name : "build" , Aliases : [ ] string { "b" } , Value : false } ,
2016-07-23 22:49:19 +00:00
& cli . BoolFlag { Name : "run" , Aliases : [ ] string { "r" } , Value : true } ,
2016-07-29 23:15:47 +00:00
& cli . BoolFlag { Name : "bin" , Aliases : [ ] string { "r" } , Value : true } ,
2016-07-23 22:49:19 +00:00
} ,
2016-07-27 09:14:32 +00:00
Action : func ( p * cli . Context ) error {
y := realize . New ( p )
return handle ( y . Create ( p ) )
2016-07-12 18:03:22 +00:00
} ,
2016-07-27 11:42:25 +00:00
Before : func ( c * cli . Context ) error {
header ( )
return nil
} ,
2016-07-12 18:03:22 +00:00
} ,
2016-07-23 22:49:19 +00:00
{
Name : "add" ,
Category : "config" ,
2016-07-27 09:14:32 +00:00
Aliases : [ ] string { "a" } ,
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" } ,
2016-07-29 23:15:47 +00:00
& cli . BoolFlag { Name : "build" , Aliases : [ ] string { "b" } , Value : false } ,
2016-07-23 22:49:19 +00:00
& cli . BoolFlag { Name : "run" , Aliases : [ ] string { "r" } , Value : true } ,
2016-07-29 23:15:47 +00:00
& cli . BoolFlag { Name : "bin" , Aliases : [ ] string { "r" } , Value : true } ,
2016-07-23 22:49:19 +00:00
} ,
2016-07-27 09:14:32 +00:00
Action : func ( p * cli . Context ) error {
y := realize . New ( p )
return handle ( y . Add ( p ) )
2016-07-23 22:49:19 +00:00
} ,
2016-07-27 11:42:25 +00:00
Before : func ( c * cli . Context ) error {
header ( )
return nil
} ,
2016-07-12 18:03:22 +00:00
} ,
2016-07-26 17:04:13 +00:00
{
Name : "remove" ,
Category : "config" ,
2016-07-27 09:14:32 +00:00
Aliases : [ ] string { "r" } ,
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" } ,
} ,
2016-07-27 09:14:32 +00:00
Action : func ( p * cli . Context ) error {
y := realize . New ( p )
return handle ( y . Remove ( p ) )
2016-07-26 17:04:13 +00:00
} ,
2016-07-27 11:42:25 +00:00
Before : func ( c * cli . Context ) error {
header ( )
return nil
} ,
2016-07-26 17:04:13 +00:00
} ,
{
Name : "list" ,
Category : "config" ,
2016-07-27 09:14:32 +00:00
Aliases : [ ] string { "l" } ,
2016-07-27 08:52:11 +00:00
Usage : "Projects list" ,
2016-07-27 09:14:32 +00:00
Action : func ( p * cli . Context ) error {
y := realize . New ( p )
2016-07-26 17:04:13 +00:00
return handle ( y . List ( ) )
} ,
2016-07-27 11:42:25 +00:00
Before : func ( c * cli . Context ) error {
header ( )
return nil
} ,
2016-07-26 17:04:13 +00:00
} ,
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
}