database-anonymizer/main.go
Simon Vieille 00ba7f4af9
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
add/update readme
2024-04-01 15:44:01 +02:00

55 lines
1.3 KiB
Go

package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
"github.com/urfave/cli/v2"
"gitnet.fr/deblan/database-anonymizer/app"
"gitnet.fr/deblan/database-anonymizer/config"
"gitnet.fr/deblan/database-anonymizer/faker"
"gitnet.fr/deblan/database-anonymizer/logger"
"os"
)
func main() {
app := &cli.App{
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"},
},
Flags: []cli.Flag{
&cli.StringFlag{
Name: "dsn",
Value: "",
Usage: "DSN (eg: mysql://user:pass@host/dbname)",
},
&cli.StringFlag{
Name: "schema",
Value: "schema.yaml",
Usage: "Configuration file",
},
},
Action: func(c *cli.Context) error {
databaseConfig, err := config.LoadDatabaseConfig(c.String("dsn"))
logger.LogFatalExitIf(err)
db, err := sql.Open(databaseConfig.Type, databaseConfig.Dsn)
defer db.Close()
logger.LogFatalExitIf(err)
schema, err := config.LoadSchemaConfigFromFile(c.String("schema"))
logger.LogFatalExitIf(err)
app := app.App{}
return app.Run(db, schema, faker.NewFakeManager(), databaseConfig)
},
}
if err := app.Run(os.Args); err != nil {
fmt.Println(err)
}
}