this repo has no description
1package main 2 3import ( 4 "fmt" 5 "os" 6 7 "github.com/haileyok/cocoon/server" 8 _ "github.com/joho/godotenv/autoload" 9 "github.com/urfave/cli/v2" 10) 11 12var Version = "dev" 13 14func main() { 15 app := &cli.App{ 16 Name: "cocoon", 17 Usage: "An atproto PDS", 18 Flags: []cli.Flag{ 19 &cli.StringFlag{ 20 Name: "addr", 21 Value: ":8080", 22 EnvVars: []string{"COCOON_ADDR"}, 23 }, 24 &cli.StringFlag{ 25 Name: "db-name", 26 Value: "cocoon.db", 27 EnvVars: []string{"COCOON_DB_NAME"}, 28 }, 29 &cli.StringFlag{ 30 Name: "did", 31 Required: true, 32 EnvVars: []string{"COCOON_DID"}, 33 }, 34 &cli.StringFlag{ 35 Name: "hostname", 36 Required: true, 37 EnvVars: []string{"COCOON_HOSTNAME"}, 38 }, 39 &cli.StringFlag{ 40 Name: "rotation-key-path", 41 Required: true, 42 EnvVars: []string{"COCOON_ROTATION_KEY_PATH"}, 43 }, 44 &cli.StringFlag{ 45 Name: "jwk-path", 46 Required: true, 47 EnvVars: []string{"COCOON_JWK_PATH"}, 48 }, 49 &cli.StringFlag{ 50 Name: "contact-email", 51 Required: true, 52 EnvVars: []string{"COCOON_CONTACT_EMAIL"}, 53 }, 54 &cli.StringSliceFlag{ 55 Name: "relays", 56 Required: true, 57 EnvVars: []string{"COCOON_RELAYS"}, 58 }, 59 &cli.StringFlag{ 60 Name: "smtp-user", 61 Required: false, 62 EnvVars: []string{"COCOON_SMTP_USER"}, 63 }, 64 &cli.StringFlag{ 65 Name: "smtp-pass", 66 Required: false, 67 EnvVars: []string{"COCOON_SMTP_PASS"}, 68 }, 69 &cli.StringFlag{ 70 Name: "smtp-host", 71 Required: false, 72 EnvVars: []string{"COCOON_SMTP_HOST"}, 73 }, 74 &cli.StringFlag{ 75 Name: "smtp-port", 76 Required: false, 77 EnvVars: []string{"COCOON_SMTP_PORT"}, 78 }, 79 &cli.StringFlag{ 80 Name: "smtp-email", 81 Required: false, 82 EnvVars: []string{"COCOON_SMTP_EMAIL"}, 83 }, 84 &cli.StringFlag{ 85 Name: "smtp-name", 86 Required: false, 87 EnvVars: []string{"COCOON_SMTP_NAME"}, 88 }, 89 }, 90 Commands: []*cli.Command{ 91 run, 92 }, 93 ErrWriter: os.Stdout, 94 Version: Version, 95 } 96 97 app.Run(os.Args) 98} 99 100var run = &cli.Command{ 101 Name: "run", 102 Usage: "Start the cocoon PDS", 103 Flags: []cli.Flag{}, 104 Action: func(cmd *cli.Context) error { 105 s, err := server.New(&server.Args{ 106 Addr: cmd.String("addr"), 107 DbName: cmd.String("db-name"), 108 Did: cmd.String("did"), 109 Hostname: cmd.String("hostname"), 110 RotationKeyPath: cmd.String("rotation-key-path"), 111 JwkPath: cmd.String("jwk-path"), 112 ContactEmail: cmd.String("contact-email"), 113 Version: Version, 114 Relays: cmd.StringSlice("relays"), 115 SmtpUser: cmd.String("smtp-user"), 116 SmtpPass: cmd.String("smtp-pass"), 117 SmtpHost: cmd.String("smtp-host"), 118 SmtpPort: cmd.String("smtp-port"), 119 SmtpEmail: cmd.String("smtp-email"), 120 SmtpName: cmd.String("smtp-name"), 121 }) 122 if err != nil { 123 fmt.Printf("error creating cocoon: %v", err) 124 return err 125 } 126 127 if err := s.Serve(cmd.Context); err != nil { 128 fmt.Printf("error starting cocoon: %v", err) 129 return err 130 } 131 132 return nil 133 }, 134}