/
main.go
107 lines (100 loc) · 2.59 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package main
import (
"fmt"
"os"
"github.com/Goalt/FileSharer/cmd/subcomands"
_ "github.com/Goalt/FileSharer/cmd/subcomands/file_sharer_migrations"
"github.com/Goalt/FileSharer/cmd/variables"
"github.com/Goalt/FileSharer/internal/config"
"github.com/Goalt/FileSharer/internal/provider"
"github.com/urfave/cli/v2"
"golang.org/x/net/context"
)
func main() {
app := &cli.App{
Name: "FileSharer",
Usage: "./filesharer",
HelpName: "Web Server for filesharer app",
Commands: subcomands.Get(),
Flags: []cli.Flag{
&cli.IntFlag{
Name: variables.DebugLevel,
Value: 1,
EnvVars: []string{variables.DebugLevel},
},
&cli.IntFlag{
Name: variables.MaxFileSize,
Value: 1,
EnvVars: []string{variables.MaxFileSize},
},
&cli.StringFlag{
Name: variables.RootPath,
EnvVars: []string{variables.RootPath},
},
&cli.StringFlag{
Name: variables.SecretKey,
EnvVars: []string{variables.SecretKey},
DefaultText: "G-KaPdSgVkYp2s5v8y/B?E(H+MbQeThq",
},
&cli.StringFlag{
Name: variables.MysqlDatabaseName,
EnvVars: []string{variables.MysqlDatabaseName},
},
&cli.StringFlag{
Name: variables.MysqlUser,
EnvVars: []string{variables.MysqlUser},
},
&cli.StringFlag{
Name: variables.MysqlPassword,
EnvVars: []string{variables.MysqlPassword},
},
&cli.StringFlag{
Name: variables.MysqlHost,
EnvVars: []string{variables.MysqlHost},
},
&cli.StringFlag{
Name: variables.MysqlPort,
EnvVars: []string{variables.MysqlPort},
},
},
Action: func(ctx *cli.Context) error {
cfg := config.Config{
MaxFileSize: ctx.Int(variables.MaxFileSize),
RootPath: ctx.String(variables.RootPath),
Key: []byte(ctx.String(variables.SecretKey)),
Logger: config.Logger{
SetReportCaller: true,
Level: config.InfoLevel,
},
Database: config.Database{
Host: ctx.String(variables.MysqlHost),
Port: ctx.String(variables.MysqlPort),
User: ctx.String(variables.MysqlUser),
Password: ctx.String(variables.MysqlPassword),
DBName: ctx.String(variables.MysqlDatabaseName),
},
Server: config.Server{
Port: 33333,
},
}
fmt.Printf("%+v\n", cfg)
signalCtx, _ := context.WithCancel(context.Background())
app, cleanup, err := provider.InitializeApp(cfg, signalCtx)
if cleanup != nil {
defer cleanup()
}
if err != nil {
fmt.Println(err)
}
err = app.Run()
if err != nil {
fmt.Println(err)
}
return nil
},
}
err := app.Run(os.Args)
if err != nil {
fmt.Println(err)
}
}