database-anonymizer/main.go

55 lines
1.3 KiB
Go
Raw Normal View History

2024-03-12 06:59:49 +01:00
package main
import (
2024-03-16 15:23:47 +01:00
"database/sql"
2024-03-12 06:59:49 +01:00
"fmt"
2024-03-16 15:23:47 +01:00
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
2024-03-12 06:59:49 +01:00
"github.com/urfave/cli/v2"
2024-03-16 15:23:47 +01:00
"gitnet.fr/deblan/database-anonymizer/app"
2024-03-12 06:59:49 +01:00
"gitnet.fr/deblan/database-anonymizer/config"
2024-03-19 16:09:59 +01:00
"gitnet.fr/deblan/database-anonymizer/faker"
2024-03-16 15:23:47 +01:00
"gitnet.fr/deblan/database-anonymizer/logger"
2024-03-12 06:59:49 +01:00
"os"
)
func main() {
app := &cli.App{
2024-04-01 15:44:01 +02:00
Name: "database-anonymizer",
Usage: "Allows anonymizing or deleting data from a MySQL or PostgreSQL database",
Authors: []*cli.Author{
&cli.Author{Name: "Simon Vieille", Email: "contact@deblan.fr"},
},
2024-03-12 06:59:49 +01:00
Flags: []cli.Flag{
&cli.StringFlag{
Name: "dsn",
Value: "",
Usage: "DSN (eg: mysql://user:pass@host/dbname)",
},
&cli.StringFlag{
2024-03-16 15:23:47 +01:00
Name: "schema",
Value: "schema.yaml",
2024-03-12 06:59:49 +01:00
Usage: "Configuration file",
},
},
Action: func(c *cli.Context) error {
2024-03-16 15:23:47 +01:00
databaseConfig, err := config.LoadDatabaseConfig(c.String("dsn"))
logger.LogFatalExitIf(err)
2024-03-12 06:59:49 +01:00
2024-03-16 15:23:47 +01:00
db, err := sql.Open(databaseConfig.Type, databaseConfig.Dsn)
2024-03-18 08:57:42 +01:00
defer db.Close()
2024-03-16 15:23:47 +01:00
logger.LogFatalExitIf(err)
2024-03-12 06:59:49 +01:00
2024-03-16 15:23:47 +01:00
schema, err := config.LoadSchemaConfigFromFile(c.String("schema"))
logger.LogFatalExitIf(err)
2024-03-12 06:59:49 +01:00
2024-03-16 15:23:47 +01:00
app := app.App{}
2024-03-20 11:42:18 +01:00
return app.Run(db, schema, faker.NewFakeManager(), databaseConfig)
2024-03-12 06:59:49 +01:00
},
}
if err := app.Run(os.Args); err != nil {
fmt.Println(err)
}
}