Add CLI account check mode
This commit is contained in:
parent
b1f3df679f
commit
fbec60c356
2 changed files with 28 additions and 0 deletions
|
|
@ -124,6 +124,29 @@ func migrateAccount(a Account) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CheckAccount(name string) error {
|
||||||
|
a, err := GetAccount(name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
src, err := OpenIMAPSource(a)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("open source %s: %w", a.Name, err)
|
||||||
|
}
|
||||||
|
defer src.Close()
|
||||||
|
msgs, err := src.Fetch("INBOX")
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("fetch source INBOX %s: %w", a.Name, err)
|
||||||
|
}
|
||||||
|
dst, err := OpenIMAPTarget(a)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("open target %s: %w", a.Name, err)
|
||||||
|
}
|
||||||
|
defer dst.Close()
|
||||||
|
log.Printf("account %s ok: source INBOX messages=%d, target login ok", a.Name, len(msgs))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func startJob(accountID int64) (int64, error) {
|
func startJob(accountID int64) (int64, error) {
|
||||||
res, err := DB.Exec(`INSERT INTO jobs(account_id,state) VALUES(?, 'running')`, accountID)
|
res, err := DB.Exec(`INSERT INTO jobs(account_id,state) VALUES(?, 'running')`, accountID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
5
main.go
5
main.go
|
|
@ -18,6 +18,7 @@ func main() {
|
||||||
runOnce := flag.String("run", "", "einen Umzugs-Job einmalig ausfuehren (Konto-Name oder 'all'), ohne Web-UI")
|
runOnce := flag.String("run", "", "einen Umzugs-Job einmalig ausfuehren (Konto-Name oder 'all'), ohne Web-UI")
|
||||||
watch := flag.Bool("watch", false, "Delta-Sync in Schleife bis Stop (Cutover-Fenster)")
|
watch := flag.Bool("watch", false, "Delta-Sync in Schleife bis Stop (Cutover-Fenster)")
|
||||||
seedAccount := flag.String("seed-account", "", "Konto aus lokaler JSON-Datei in die DB schreiben (nur CLI/Test)")
|
seedAccount := flag.String("seed-account", "", "Konto aus lokaler JSON-Datei in die DB schreiben (nur CLI/Test)")
|
||||||
|
checkAccount := flag.String("check-account", "", "Konto-Logins pruefen und INBOX zaehlen, ohne zu kopieren")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if err := backend.LoadConfig("config.json"); err != nil {
|
if err := backend.LoadConfig("config.json"); err != nil {
|
||||||
|
|
@ -34,6 +35,10 @@ func main() {
|
||||||
must(backend.SeedAccountFromFile(*seedAccount))
|
must(backend.SeedAccountFromFile(*seedAccount))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if *checkAccount != "" {
|
||||||
|
must(backend.CheckAccount(*checkAccount))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// CLI-Modus: ohne Web laufen lassen (Cronjob / Cutover).
|
// CLI-Modus: ohne Web laufen lassen (Cronjob / Cutover).
|
||||||
if *runOnce != "" {
|
if *runOnce != "" {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue