Various polishments, now validating that ws is ready to run for every command
parent
ac9376686c
commit
01dc4943b1
|
@ -19,8 +19,8 @@ const defaultNotReadySleepTime time.Duration = time.Second * 60
|
||||||
const defaultSleepTime time.Duration = time.Second
|
const defaultSleepTime time.Duration = time.Second
|
||||||
|
|
||||||
var errorMissingApplicationSlug = colorstring.Color("[red]Error: [white]Missing application slug")
|
var errorMissingApplicationSlug = colorstring.Color("[red]Error: [white]Missing application slug")
|
||||||
var errorUnexpected = colorstring.Color("[red]An unexpected error ocurring and the application crashed")
|
var errorSystemNotReady = colorstring.Color("[red]Eror: [white]The system is not ready to run. \n[white]Please run 'cd /home/system/components/ws/ && ./ws -b' first.")
|
||||||
var notYetImplemented = colorstring.Color("[yellow]This feature is not yet implemented, this command is only a stub.")
|
var errorNotYetImplemented = colorstring.Color("[yellow]This feature is not yet implemented, this command is only a stub.")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
@ -37,8 +37,7 @@ func main() {
|
||||||
Aliases: []string{"b"},
|
Aliases: []string{"b"},
|
||||||
Usage: "Sets up initial structure and dependencies for the edgebox system",
|
Usage: "Sets up initial structure and dependencies for the edgebox system",
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
fmt.Println("Edgebox Setup")
|
return cli.Exit(errorNotYetImplemented, 1)
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -50,6 +49,7 @@ func main() {
|
||||||
Name: "setup",
|
Name: "setup",
|
||||||
Aliases: []string{"s"},
|
Aliases: []string{"s"},
|
||||||
Usage: "Sets up an encrypted secure connection to a tunnel",
|
Usage: "Sets up an encrypted secure connection to a tunnel",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 4)
|
argumentError := checkArgumentsPresence(c, 4)
|
||||||
|
@ -76,16 +76,18 @@ func main() {
|
||||||
Name: "enable",
|
Name: "enable",
|
||||||
Aliases: []string{"e"},
|
Aliases: []string{"e"},
|
||||||
Usage: "enables the public tunnel (when configured)",
|
Usage: "enables the public tunnel (when configured)",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
return cli.Exit(notYetImplemented, 1)
|
return cli.Exit(errorNotYetImplemented, 1)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "disable",
|
Name: "disable",
|
||||||
Aliases: []string{"d"},
|
Aliases: []string{"d"},
|
||||||
Usage: "disables the public tunnel (when online)",
|
Usage: "disables the public tunnel (when online)",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
return cli.Exit(notYetImplemented, 1)
|
return cli.Exit(errorNotYetImplemented, 1)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -99,6 +101,7 @@ func main() {
|
||||||
Name: "list",
|
Name: "list",
|
||||||
Aliases: []string{"l"},
|
Aliases: []string{"l"},
|
||||||
Usage: "list currently installed apps and their status",
|
Usage: "list currently installed apps and their status",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
task := getCommandTask("list_edgeapps", "", true)
|
task := getCommandTask("list_edgeapps", "", true)
|
||||||
// return cli.Exit(utils.ColorJsonString(task.Result.String), 0)
|
// return cli.Exit(utils.ColorJsonString(task.Result.String), 0)
|
||||||
|
@ -109,6 +112,7 @@ func main() {
|
||||||
Name: "install",
|
Name: "install",
|
||||||
Aliases: []string{"i"},
|
Aliases: []string{"i"},
|
||||||
Usage: "install the specified app (slug or package file)",
|
Usage: "install the specified app (slug or package file)",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -125,6 +129,7 @@ func main() {
|
||||||
Name: "remove",
|
Name: "remove",
|
||||||
Aliases: []string{"r"},
|
Aliases: []string{"r"},
|
||||||
Usage: "remove the specified app",
|
Usage: "remove the specified app",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -141,6 +146,7 @@ func main() {
|
||||||
Name: "start",
|
Name: "start",
|
||||||
Aliases: []string{"s"},
|
Aliases: []string{"s"},
|
||||||
Usage: "start the specified app",
|
Usage: "start the specified app",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -157,6 +163,7 @@ func main() {
|
||||||
Name: "stop",
|
Name: "stop",
|
||||||
Aliases: []string{"k"},
|
Aliases: []string{"k"},
|
||||||
Usage: "stop the specified app",
|
Usage: "stop the specified app",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -178,6 +185,7 @@ func main() {
|
||||||
Name: "enable",
|
Name: "enable",
|
||||||
Aliases: []string{"e"},
|
Aliases: []string{"e"},
|
||||||
Usage: "set an app as accessible online",
|
Usage: "set an app as accessible online",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 2)
|
argumentError := checkArgumentsPresence(c, 2)
|
||||||
|
@ -202,6 +210,7 @@ func main() {
|
||||||
Name: "disable",
|
Name: "disable",
|
||||||
Aliases: []string{"d"},
|
Aliases: []string{"d"},
|
||||||
Usage: "set an app as local-network private",
|
Usage: "set an app as local-network private",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -227,6 +236,7 @@ func main() {
|
||||||
Name: "enable",
|
Name: "enable",
|
||||||
Aliases: []string{"e"},
|
Aliases: []string{"e"},
|
||||||
Usage: "enable dashboard access",
|
Usage: "enable dashboard access",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
if argumentError != nil {
|
if argumentError != nil {
|
||||||
|
@ -241,6 +251,7 @@ func main() {
|
||||||
Name: "disable",
|
Name: "disable",
|
||||||
Aliases: []string{"d"},
|
Aliases: []string{"d"},
|
||||||
Usage: "disable dashboard access",
|
Usage: "disable dashboard access",
|
||||||
|
Before: canRunCommands,
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
|
|
||||||
argumentError := checkArgumentsPresence(c, 1)
|
argumentError := checkArgumentsPresence(c, 1)
|
||||||
|
@ -264,6 +275,14 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func canRunCommands(c *cli.Context) error {
|
||||||
|
if !utils.IsSystemReady() {
|
||||||
|
return cli.Exit(errorSystemNotReady, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func checkArgumentsPresence(c *cli.Context, count int) error {
|
func checkArgumentsPresence(c *cli.Context, count int) error {
|
||||||
if count != 0 {
|
if count != 0 {
|
||||||
for i := 0; i < count; i++ {
|
for i := 0; i < count; i++ {
|
||||||
|
@ -309,7 +328,6 @@ func startService() {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
printVersion()
|
printVersion()
|
||||||
|
|
||||||
printDbDetails()
|
printDbDetails()
|
||||||
|
|
||||||
tick := 0
|
tick := 0
|
||||||
|
@ -317,7 +335,7 @@ func startService() {
|
||||||
// infinite loop
|
// infinite loop
|
||||||
for {
|
for {
|
||||||
|
|
||||||
if isSystemReady() {
|
if utils.IsSystemReady() {
|
||||||
tick++ // Tick is an int, so eventually will "go out of ticks?" Maybe we want to reset the ticks every once in a while, to avoid working with big numbers...
|
tick++ // Tick is an int, so eventually will "go out of ticks?" Maybe we want to reset the ticks every once in a while, to avoid working with big numbers...
|
||||||
systemIterator(tick)
|
systemIterator(tick)
|
||||||
} else {
|
} else {
|
||||||
|
@ -348,17 +366,6 @@ func printDbDetails() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsSystemReady : Checks hability of the service to execute commands (Only after "edgebox --build" is ran at least once via SSH, or if built for distribution)
|
|
||||||
func isSystemReady() bool {
|
|
||||||
_, err := os.Stat("/home/system/components/ws/.ready")
|
|
||||||
return !os.IsNotExist(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsDatabaseReady : Checks is it can successfully connect to the task queue db
|
|
||||||
func isDatabaseReady() bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func systemIterator(tick int) {
|
func systemIterator(tick int) {
|
||||||
|
|
||||||
log.Printf("Tick is %d", tick)
|
log.Printf("Tick is %d", tick)
|
||||||
|
@ -376,7 +383,7 @@ func systemIterator(tick int) {
|
||||||
log.Printf("No tasks to execute.")
|
log.Printf("No tasks to execute.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait about 1 second before resumming operations.
|
// Wait about 1 second before resuming operations.
|
||||||
log.Printf("Next instruction will be executed 1 second")
|
log.Printf("Next instruction will be executed 1 second")
|
||||||
time.Sleep(defaultSleepTime)
|
time.Sleep(defaultSleepTime)
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ func GetSQLiteDbConnectionDetails() string {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetFormattedDateTime: Given a Time, Returns a string that is formatted ready to be inserted into an SQLite Datetime field using sql.Prepare.
|
// GetFormattedDateTime: Given a Time, Returns a string that is formatted to be passed around the application, including correctly inserting SQLite Datetime field using sql.Prepare.
|
||||||
func GetFormattedDateTime(t time.Time) string {
|
func GetFormattedDateTime(t time.Time) string {
|
||||||
// This date is used to indicate the layout.
|
// This date is used to indicate the layout.
|
||||||
const datetimeLayout = "2006-01-02 15:04:05"
|
const datetimeLayout = "2006-01-02 15:04:05"
|
||||||
|
@ -189,6 +189,17 @@ func WriteOption(optionKey string, optionValue string) {
|
||||||
db.Close()
|
db.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSystemReady : Checks hability of the service to execute commands (Only after "edgebox --build" is ran at least once via SSH, or if built for distribution)
|
||||||
|
func IsSystemReady() bool {
|
||||||
|
_, err := os.Stat("/home/system/components/ws/.ready")
|
||||||
|
return !os.IsNotExist(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsDatabaseReady : Checks is it can successfully connect to the task queue db
|
||||||
|
func IsDatabaseReady() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func ColorJsonString(jsonString string) string {
|
func ColorJsonString(jsonString string) string {
|
||||||
var obj map[string]interface{}
|
var obj map[string]interface{}
|
||||||
json.Unmarshal([]byte(jsonString), &obj)
|
json.Unmarshal([]byte(jsonString), &obj)
|
||||||
|
|
Loading…
Reference in New Issue