diff --git a/accounts/accounts.go b/accounts/accounts.go new file mode 100644 index 0000000000000000000000000000000000000000..32412dd489ffa0b5714fbae70a4f63c2f17d24ac --- /dev/null +++ b/accounts/accounts.go @@ -0,0 +1,12 @@ +// Package accounts manages accounts. +package accounts + +import "errors" + +// Verify verifies that an account exists. +func Verify(acc string) error { + if acc == "" { + return errors.New("Empty account is invalid") + } + return nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000000000000000000000000000000000000..a82526a6e502dfec887a738223b22fb03a5595ff --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module git.lyda.ie/kevin/bulletin + +go 1.24.2 + +require github.com/urfave/cli/v3 v3.3.2 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000000000000000000000000000000000000..80dc36d5fb7c9d6272c40569bcad852a0bb49e34 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/urfave/cli/v3 v3.3.2 h1:BYFVnhhZ8RqT38DxEYVFPPmGFTEf7tJwySTXsVRrS/o= +github.com/urfave/cli/v3 v3.3.2/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= diff --git a/main.go b/main.go new file mode 100644 index 0000000000000000000000000000000000000000..6df8ee6c8e51616777344a7807dc47ed67e98369 --- /dev/null +++ b/main.go @@ -0,0 +1,44 @@ +// Package main is the main program for bulletin. +// It is based off the 1989 version of bulletin. +package main + +import ( + "context" + "fmt" + "os" + + "git.lyda.ie/kevin/bulletin/accounts" + + "github.com/urfave/cli/v3" +) + +func main() { + cmd := &cli.Command{ + Name: "bulletin", + Usage: "a bulletin system", + Description: "An interpretation of the VMS BULLETIN program.", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "user", + Aliases: []string{"u"}, + Usage: "user to run bulletin as", + Value: "", + Required: true, + }, + }, + Action: func(_ context.Context, cmd *cli.Command) error { + user := cmd.String("user") + err := accounts.Verify(user) + if err != nil { + return err + } + fmt.Println("Running as", user) + return nil + }, + } + + err := cmd.Run(context.Background(), os.Args) + if err != nil { + fmt.Println(err) + } +}