mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-05-13 22:40:24 +00:00
Update the Forgejo driver for gof3 with modifications for non-backward compatible changes. The changes are isolated behind the f3.Enable flag and not yet functional. The purpose of this upgrade is to not drift from the gof3 implementation while the work continues.
The `fix: include remote users when counting users` commit is a functional change to Forgejo itself but does not change the behavior because the remote users are only created in fixtures or by F3.
59c721d26b/models/user/user.go (L65-L66)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/10673
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: limiting-factor <limiting-factor@posteo.com>
Co-committed-by: limiting-factor <limiting-factor@posteo.com>
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
// Copyright Earl Warren <contact@earl-warren.org>
|
|
// Copyright Loïc Dachary <loic@dachary.org>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package forgejo
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"forgejo.org/models"
|
|
"forgejo.org/modules/git"
|
|
"forgejo.org/modules/log"
|
|
"forgejo.org/modules/setting"
|
|
"forgejo.org/modules/storage"
|
|
"forgejo.org/services/f3/util"
|
|
|
|
_ "forgejo.org/services/f3/driver" // register the driver
|
|
|
|
f3_cmd "code.forgejo.org/f3/gof3/v3/cmd"
|
|
f3_logger "code.forgejo.org/f3/gof3/v3/logger"
|
|
f3_util "code.forgejo.org/f3/gof3/v3/util"
|
|
"github.com/urfave/cli/v3"
|
|
)
|
|
|
|
func CmdF3(ctx context.Context) *cli.Command {
|
|
return &cli.Command{
|
|
Name: "f3",
|
|
Usage: "F3",
|
|
Commands: []*cli.Command{
|
|
SubcmdF3Mirror(ctx),
|
|
},
|
|
}
|
|
}
|
|
|
|
func SubcmdF3Mirror(ctx context.Context) *cli.Command {
|
|
mirrorCmd := f3_cmd.CreateCmdMirror()
|
|
mirrorCmd.Before = prepareWorkPathAndCustomConf(ctx)
|
|
f3Action := mirrorCmd.Action
|
|
mirrorCmd.Action = func(ctx context.Context, cli *cli.Command) error {
|
|
return runMirror(ctx, cli, f3Action)
|
|
}
|
|
return mirrorCmd
|
|
}
|
|
|
|
func runMirror(ctx context.Context, c *cli.Command, action cli.ActionFunc) error {
|
|
setting.LoadF3Setting()
|
|
if !setting.F3.Enabled {
|
|
return errors.New("F3 is disabled, it is not ready to be used and is only present for development purposes")
|
|
}
|
|
|
|
var cancel context.CancelFunc
|
|
if !ContextGetNoInit(ctx) {
|
|
ctx, cancel = installSignals(ctx)
|
|
defer cancel()
|
|
|
|
if err := initDB(ctx); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := storage.Init(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := git.InitSimple(ctx); err != nil {
|
|
return err
|
|
}
|
|
if err := models.Init(ctx); err != nil {
|
|
return err
|
|
}
|
|
|
|
ctx = f3_logger.ContextSetLogger(ctx, util.NewF3Logger(nil, log.GetLogger(log.DEFAULT)))
|
|
}
|
|
|
|
err := action(ctx, c)
|
|
if panicError, ok := err.(f3_util.PanicError); ok {
|
|
log.Debug("F3 Stack trace\n%s", panicError.Stack())
|
|
}
|
|
return err
|
|
}
|