Store circle emoji in a map (fix #34)
This commit is contained in:
parent
4ecd4b06b8
commit
e62d7fe0c2
@ -7,21 +7,20 @@ import (
|
|||||||
|
|
||||||
// DeployError contains important information about an error if something went wrong.
|
// DeployError contains important information about an error if something went wrong.
|
||||||
type DeployError struct {
|
type DeployError struct {
|
||||||
code int
|
code int
|
||||||
where string
|
where string
|
||||||
details string
|
details string
|
||||||
command_output string
|
command_output string
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendOverMatrix provides an easy way to send the contents of a DeployError over Matrix
|
// SendOverMatrix provides an easy way to send the contents of a DeployError over Matrix
|
||||||
func (deploy_error *DeployError) SendOverMatrix() {
|
func (deploy_error *DeployError) SendOverMatrix() {
|
||||||
sendMessage(MatrixMessage{text: fmt.Sprintf("🔴 **Error in **`%s`**!**\n- *%s*\n- Code: %d",
|
sendMessage(MatrixMessage{text: fmt.Sprintf("%s**Error in **`%s`**!**\n- *%s*\n- Code: %d",
|
||||||
deploy_error.where, deploy_error.details, deploy_error.code),
|
Circles["red"], deploy_error.where, deploy_error.details, deploy_error.code),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// newDeployError creates a DeployError
|
// newDeployError creates a DeployError
|
||||||
func newDeployError(code int, where string, details string, command_output string) DeployError {
|
func newDeployError(code int, where string, details string, command_output string) DeployError {
|
||||||
return DeployError{ code: code, where: where, details: details, command_output: command_output }
|
return DeployError{code: code, where: where, details: details, command_output: command_output}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
main.go
22
main.go
@ -10,6 +10,15 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Circle emoji storage.
|
||||||
|
var Circles = map[string]string{
|
||||||
|
"white": "⚪️ ",
|
||||||
|
"green": "🟢 ",
|
||||||
|
"yellow": "🟡 ",
|
||||||
|
"red": "🔴 ",
|
||||||
|
"orange": "🟠 ",
|
||||||
|
}
|
||||||
|
|
||||||
// Create a configuration struct
|
// Create a configuration struct
|
||||||
var configuration = Configuration{}
|
var configuration = Configuration{}
|
||||||
|
|
||||||
@ -29,7 +38,8 @@ func fileExists(path string) (bool, error) {
|
|||||||
func handler(data map[string]interface{}) {
|
func handler(data map[string]interface{}) {
|
||||||
repository := data["repository"].(map[string]interface{})
|
repository := data["repository"].(map[string]interface{})
|
||||||
log.Default().Printf("Repo: %s", repository["full_name"])
|
log.Default().Printf("Repo: %s", repository["full_name"])
|
||||||
sendMessage(MatrixMessage{text: fmt.Sprintf("⚪️ Handling webhook for `%s`...", repository["full_name"])})
|
sendMessage(MatrixMessage{text: fmt.Sprintf("%sHandling webhook for `%s`...",
|
||||||
|
Circles["white"], repository["full_name"])})
|
||||||
|
|
||||||
repo_name := repository["name"].(string)
|
repo_name := repository["name"].(string)
|
||||||
|
|
||||||
@ -40,7 +50,7 @@ func handler(data map[string]interface{}) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if exists {
|
if exists {
|
||||||
sendMessage(MatrixMessage{text: "⚪️ Updating repository..."})
|
sendMessage(MatrixMessage{text: Circles["white"] + "Updating repository..."})
|
||||||
if deploy_error := site.Update(); deploy_error.code != 0 {
|
if deploy_error := site.Update(); deploy_error.code != 0 {
|
||||||
deploy_error.SendOverMatrix()
|
deploy_error.SendOverMatrix()
|
||||||
return
|
return
|
||||||
@ -50,18 +60,18 @@ func handler(data map[string]interface{}) {
|
|||||||
newDeployError(1, "main", "Failed to update site data on a site we just created!", fmt.Sprint(err))
|
newDeployError(1, "main", "Failed to update site data on a site we just created!", fmt.Sprint(err))
|
||||||
}
|
}
|
||||||
site = new_site
|
site = new_site
|
||||||
sendMessage(MatrixMessage{text: "⚪️ Restarting server..."})
|
sendMessage(MatrixMessage{text: Circles["white"] + "Restarting server..."})
|
||||||
if deploy_error := site.Restart(); deploy_error.code != 0 {
|
if deploy_error := site.Restart(); deploy_error.code != 0 {
|
||||||
deploy_error.SendOverMatrix()
|
deploy_error.SendOverMatrix()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sendMessage(MatrixMessage{text: "⚪️ Cloning repository..."})
|
sendMessage(MatrixMessage{text: Circles["white"] + "Cloning repository..."})
|
||||||
if deploy_error := CloneSite(repository["ssh_url"].(string), repo_name); deploy_error.code != 0 {
|
if deploy_error := CloneSite(repository["ssh_url"].(string), repo_name); deploy_error.code != 0 {
|
||||||
deploy_error.SendOverMatrix()
|
deploy_error.SendOverMatrix()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
sendMessage(MatrixMessage{text: "⚪️ Starting server..."})
|
sendMessage(MatrixMessage{text: Circles["white"] + "Starting server..."})
|
||||||
if site, exists, err = getSite(repo_name); err != nil {
|
if site, exists, err = getSite(repo_name); err != nil {
|
||||||
deploy_error := newDeployError(1, "handler",
|
deploy_error := newDeployError(1, "handler",
|
||||||
fmt.Sprintf("Failed to get site '%s' after creation!", repo_name), fmt.Sprint(err))
|
fmt.Sprintf("Failed to get site '%s' after creation!", repo_name), fmt.Sprint(err))
|
||||||
@ -73,7 +83,7 @@ func handler(data map[string]interface{}) {
|
|||||||
}
|
}
|
||||||
defer sendMessage(MatrixMessage{text: "🚀 Launched for the first time!"})
|
defer sendMessage(MatrixMessage{text: "🚀 Launched for the first time!"})
|
||||||
}
|
}
|
||||||
sendMessage(MatrixMessage{text: "🟢 Deployed successfully!"})
|
sendMessage(MatrixMessage{text: Circles["green"] + "Deployed successfully!"})
|
||||||
}
|
}
|
||||||
|
|
||||||
// main is the starting point of the program
|
// main is the starting point of the program
|
||||||
|
@ -15,7 +15,8 @@ import (
|
|||||||
|
|
||||||
// MatrixMessage stores information about a matrix message.
|
// MatrixMessage stores information about a matrix message.
|
||||||
type MatrixMessage struct {
|
type MatrixMessage struct {
|
||||||
text string
|
text string
|
||||||
|
level int
|
||||||
}
|
}
|
||||||
|
|
||||||
// MatrixCommandCallback is a function that gets called when the bot is issued a command over Matrix
|
// MatrixCommandCallback is a function that gets called when the bot is issued a command over Matrix
|
||||||
@ -87,7 +88,7 @@ func initMatrix() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found_command {
|
if !found_command {
|
||||||
client.SendText(ctx, evt.RoomID, "🔴 Command not found")
|
client.SendText(ctx, evt.RoomID, Circles["red"]+" Command not found")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -25,10 +25,10 @@ func registerChatCommands() {
|
|||||||
cmd: "sites",
|
cmd: "sites",
|
||||||
description: "Display all available sites",
|
description: "Display all available sites",
|
||||||
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
||||||
text := "⚪️ Getting sites...\n"
|
text := Circles["white"] + "Getting sites...\n"
|
||||||
sites, err := getAllSites()
|
sites, err := getAllSites()
|
||||||
if err.code != 0 {
|
if err.code != 0 {
|
||||||
return text + "🔴 Failed to get sites!"
|
return text + Circles["red"] + "Failed to get sites!"
|
||||||
}
|
}
|
||||||
for _, site := range sites {
|
for _, site := range sites {
|
||||||
text = fmt.Sprintf("%s- %s\n", text, site.getName())
|
text = fmt.Sprintf("%s- %s\n", text, site.getName())
|
||||||
@ -44,21 +44,21 @@ func registerChatCommands() {
|
|||||||
description: "Restart a site.",
|
description: "Restart a site.",
|
||||||
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
||||||
if len(args) < 2 {
|
if len(args) < 2 {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
site, found, err := getSite(args[1])
|
site, found, err := getSite(args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "🔴 Failed to get site " + args[2] + "!"
|
return Circles["red"] + "Failed to get site " + args[2] + "!"
|
||||||
} else if !found {
|
} else if !found {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
text := "⚪️ Restarting server..."
|
text := Circles["white"] + "Restarting server..."
|
||||||
derr := site.Restart()
|
derr := site.Restart()
|
||||||
if derr.code != 0 {
|
if derr.code != 0 {
|
||||||
derr.SendOverMatrix()
|
derr.SendOverMatrix()
|
||||||
return text + "\n🔴 Failed to restart site!"
|
return text + "\n" + Circles["red"] + "Failed to restart site!"
|
||||||
}
|
}
|
||||||
return text + "\n🟢 Successfully restarted site."
|
return text + "\n" + Circles["green"] + "Successfully restarted site."
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -66,21 +66,21 @@ func registerChatCommands() {
|
|||||||
description: "Start a site.",
|
description: "Start a site.",
|
||||||
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
||||||
if len(args) < 2 {
|
if len(args) < 2 {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
site, found, err := getSite(args[1])
|
site, found, err := getSite(args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "🔴 Failed to get site " + args[2] + "!"
|
return Circles["red"] + "Failed to get site " + args[2] + "!"
|
||||||
} else if !found {
|
} else if !found {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
|
|
||||||
text := "⚪️ Starting server..."
|
text := Circles["white"] + "Starting server..."
|
||||||
if derr := site.Start(); derr.code != 0 {
|
if derr := site.Start(); derr.code != 0 {
|
||||||
derr.SendOverMatrix()
|
derr.SendOverMatrix()
|
||||||
return text + "\n🔴 Failed to stop site!"
|
return text + "\n" + Circles["red"] + "Failed to stop site!"
|
||||||
}
|
}
|
||||||
return text + "\n🟢 Successfully started site."
|
return text + "\n" + Circles["green"] + "Successfully started site."
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -88,20 +88,20 @@ func registerChatCommands() {
|
|||||||
description: "Stop a site.",
|
description: "Stop a site.",
|
||||||
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
callback: func(ctx context.Context, evt *event.Event, args []string) string {
|
||||||
if len(args) < 2 {
|
if len(args) < 2 {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
site, found, err := getSite(args[1])
|
site, found, err := getSite(args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "🔴 Failed to get site " + args[2] + "!"
|
return Circles["red"] + "Failed to get site " + args[2] + "!"
|
||||||
} else if !found {
|
} else if !found {
|
||||||
return "🔴 Invalid site."
|
return Circles["red"] + "Invalid site."
|
||||||
}
|
}
|
||||||
text := "⚪️ Stopping server..."
|
text := Circles["white"] + "Stopping server..."
|
||||||
if derr := site.Stop(); derr.code != 0 {
|
if derr := site.Stop(); derr.code != 0 {
|
||||||
derr.SendOverMatrix()
|
derr.SendOverMatrix()
|
||||||
return text + "\n🔴 Failed to stop site!"
|
return text + "\n" + Circles["red"] + "Failed to stop site!"
|
||||||
}
|
}
|
||||||
return text + "\n🟢 Successfully stopped site."
|
return text + "\n" + Circles["green"] + "Successfully stopped site."
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
4
site.go
4
site.go
@ -63,7 +63,7 @@ func (site *Site) getConfig() (bool, error) {
|
|||||||
config := SiteConfig{}
|
config := SiteConfig{}
|
||||||
log.Printf("Loading per-site config %s", path)
|
log.Printf("Loading per-site config %s", path)
|
||||||
|
|
||||||
warning := fmt.Sprintf("🟠 %s : Site config warning : ", site.getName())
|
warning := fmt.Sprintf("%s%s : Site config warning : ", Circles["orange"], site.getName())
|
||||||
|
|
||||||
if _, err := getStringFromTable(L, table, "name", &config.name); err != nil { // Name
|
if _, err := getStringFromTable(L, table, "name", &config.name); err != nil { // Name
|
||||||
sendMessage(MatrixMessage{text: warning + fmt.Sprint(err)})
|
sendMessage(MatrixMessage{text: warning + fmt.Sprint(err)})
|
||||||
@ -77,8 +77,6 @@ func (site *Site) getConfig() (bool, error) {
|
|||||||
} else if _, ok := raw_gitt.(*lua.LNilType); !ok { // If 'git' is neither a table or nil (undefined),
|
} else if _, ok := raw_gitt.(*lua.LNilType); !ok { // If 'git' is neither a table or nil (undefined),
|
||||||
sendMessage(MatrixMessage{text: warning + "'git' is neither a table or nil!"})
|
sendMessage(MatrixMessage{text: warning + "'git' is neither a table or nil!"})
|
||||||
}
|
}
|
||||||
log.Print(config)
|
|
||||||
|
|
||||||
site.config = config
|
site.config = config
|
||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user