feat: CLI
This commit is contained in:
parent
71d36d63fe
commit
c348a0ba67
8
go.mod
8
go.mod
@ -1,3 +1,11 @@
|
|||||||
module gitea.hbanafa.com/hesham/hooker
|
module gitea.hbanafa.com/hesham/hooker
|
||||||
|
|
||||||
go 1.21.1
|
go 1.21.1
|
||||||
|
|
||||||
|
require github.com/urfave/cli/v2 v2.25.7
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
||||||
|
)
|
||||||
|
8
go.sum
Normal file
8
go.sum
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
|
||||||
|
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
|
||||||
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
|
||||||
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
73
hooker.go
73
hooker.go
@ -8,12 +8,16 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Listen for git web hooks and then execute a script.
|
Listen for git web hooks and then execute a script.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var verbose bool
|
||||||
|
|
||||||
type TaskDefErr struct {
|
type TaskDefErr struct {
|
||||||
message string
|
message string
|
||||||
}
|
}
|
||||||
@ -67,16 +71,7 @@ func InitTask() TaskManifest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
TAG := "[ init ]"
|
|
||||||
l := func(msg string) {
|
|
||||||
log.Println(TAG, msg)
|
|
||||||
}
|
|
||||||
l("starting")
|
|
||||||
|
|
||||||
l("Validating Task")
|
|
||||||
task = InitTask()
|
|
||||||
|
|
||||||
l("Registering handlers")
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.HandleFunc("/", handleRoot)
|
mux.HandleFunc("/", handleRoot)
|
||||||
|
|
||||||
@ -90,12 +85,70 @@ func init() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func runServer() error {
|
||||||
|
|
||||||
log.Println("Task", task)
|
log.Println("Task", task)
|
||||||
log.Printf("Listening on %s", httpServer.Addr)
|
log.Printf("Listening on %s", httpServer.Addr)
|
||||||
log.Fatal(httpServer.ListenAndServe())
|
log.Fatal(httpServer.ListenAndServe())
|
||||||
log.Println("Server Stopped")
|
log.Println("Server Stopped")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
app := cli.App{
|
||||||
|
Name: "hooker",
|
||||||
|
Description: "Listen for git web hooks and then execute a script or executable",
|
||||||
|
Authors: []*cli.Author{
|
||||||
|
{
|
||||||
|
Name: "Hesham T. Banafa",
|
||||||
|
Email: "hishaminv@gmail.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.Uint64Flag{
|
||||||
|
Name: "repo_id",
|
||||||
|
Usage: "Target Repo ID reported by git webhook",
|
||||||
|
Destination: &task.RepoID,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "owner",
|
||||||
|
Usage: "Repo Owner username",
|
||||||
|
Destination: &task.Owner,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "auth",
|
||||||
|
Usage: "Auth Secret",
|
||||||
|
Destination: &task.Auth,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "command",
|
||||||
|
Aliases: []string{"c"},
|
||||||
|
Usage: "Command is the script or executable to be run upon webhook",
|
||||||
|
Destination: &task.Command,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "verbose",
|
||||||
|
Aliases: []string{"v"},
|
||||||
|
Value: false,
|
||||||
|
Usage: "Produce more verbose output",
|
||||||
|
Destination: &verbose,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Action: func(ctx *cli.Context) error {
|
||||||
|
err := runServer()
|
||||||
|
return err
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := app.Run(os.Args); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user