feat(F3): CLI: f3 mirror to convert to/from Forgejo
feat(F3): driver stub
feat(F3): util.Logger
feat(F3): driver compliance tests
feat(F3): driver/users implementation
feat(F3): driver/user implementation
feat(F3): driver/{projects,project} implementation
feat(F3): driver/{labels,label} implementation
feat(F3): driver/{milestones,milestone} implementation
feat(F3): driver/{repositories,repository} implementation
feat(F3): driver/{organizations,organization} implementation
feat(F3): driver/{releases,release} implementation
feat(F3): driver/{issues,issue} implementation
feat(F3): driver/{comments,comment} implementation
feat(F3): driver/{assets,asset} implementation
feat(F3): driver/{pullrequests,pullrequest} implementation
feat(F3): driver/{reviews,review} implementation
feat(F3): driver/{topics,topic} implementation
feat(F3): driver/{reactions,reaction} implementation
feat(F3): driver/{reviewComments,reviewComment} implementation
feat(F3): CLI: f3 mirror
chore(F3): move to code.forgejo.org
feat(f3): upgrade to gof3 3.1.0
repositories in pull requests are represented with a reference instead
of an owner/project pair of names
2024-01-23 15:13:29 +05:30
|
|
|
// Copyright Earl Warren <contact@earl-warren.org>
|
|
|
|
// Copyright Loïc Dachary <loic@dachary.org>
|
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
|
|
|
package forgejo
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2024-06-16 16:39:52 +05:30
|
|
|
"errors"
|
feat(F3): CLI: f3 mirror to convert to/from Forgejo
feat(F3): driver stub
feat(F3): util.Logger
feat(F3): driver compliance tests
feat(F3): driver/users implementation
feat(F3): driver/user implementation
feat(F3): driver/{projects,project} implementation
feat(F3): driver/{labels,label} implementation
feat(F3): driver/{milestones,milestone} implementation
feat(F3): driver/{repositories,repository} implementation
feat(F3): driver/{organizations,organization} implementation
feat(F3): driver/{releases,release} implementation
feat(F3): driver/{issues,issue} implementation
feat(F3): driver/{comments,comment} implementation
feat(F3): driver/{assets,asset} implementation
feat(F3): driver/{pullrequests,pullrequest} implementation
feat(F3): driver/{reviews,review} implementation
feat(F3): driver/{topics,topic} implementation
feat(F3): driver/{reactions,reaction} implementation
feat(F3): driver/{reviewComments,reviewComment} implementation
feat(F3): CLI: f3 mirror
chore(F3): move to code.forgejo.org
feat(f3): upgrade to gof3 3.1.0
repositories in pull requests are represented with a reference instead
of an owner/project pair of names
2024-01-23 15:13:29 +05:30
|
|
|
|
|
|
|
"code.gitea.io/gitea/models"
|
|
|
|
"code.gitea.io/gitea/modules/git"
|
|
|
|
"code.gitea.io/gitea/modules/log"
|
2024-06-16 16:39:52 +05:30
|
|
|
"code.gitea.io/gitea/modules/setting"
|
feat(F3): CLI: f3 mirror to convert to/from Forgejo
feat(F3): driver stub
feat(F3): util.Logger
feat(F3): driver compliance tests
feat(F3): driver/users implementation
feat(F3): driver/user implementation
feat(F3): driver/{projects,project} implementation
feat(F3): driver/{labels,label} implementation
feat(F3): driver/{milestones,milestone} implementation
feat(F3): driver/{repositories,repository} implementation
feat(F3): driver/{organizations,organization} implementation
feat(F3): driver/{releases,release} implementation
feat(F3): driver/{issues,issue} implementation
feat(F3): driver/{comments,comment} implementation
feat(F3): driver/{assets,asset} implementation
feat(F3): driver/{pullrequests,pullrequest} implementation
feat(F3): driver/{reviews,review} implementation
feat(F3): driver/{topics,topic} implementation
feat(F3): driver/{reactions,reaction} implementation
feat(F3): driver/{reviewComments,reviewComment} implementation
feat(F3): CLI: f3 mirror
chore(F3): move to code.forgejo.org
feat(f3): upgrade to gof3 3.1.0
repositories in pull requests are represented with a reference instead
of an owner/project pair of names
2024-01-23 15:13:29 +05:30
|
|
|
"code.gitea.io/gitea/modules/storage"
|
|
|
|
"code.gitea.io/gitea/services/f3/util"
|
|
|
|
|
|
|
|
_ "code.gitea.io/gitea/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/v2"
|
|
|
|
)
|
|
|
|
|
|
|
|
func CmdF3(ctx context.Context) *cli.Command {
|
|
|
|
ctx = f3_logger.ContextSetLogger(ctx, util.NewF3Logger(nil, log.GetLogger(log.DEFAULT)))
|
|
|
|
return &cli.Command{
|
|
|
|
Name: "f3",
|
|
|
|
Usage: "F3",
|
|
|
|
Subcommands: []*cli.Command{
|
|
|
|
SubcmdF3Mirror(ctx),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func SubcmdF3Mirror(ctx context.Context) *cli.Command {
|
|
|
|
mirrorCmd := f3_cmd.CreateCmdMirror(ctx)
|
|
|
|
mirrorCmd.Before = prepareWorkPathAndCustomConf(ctx)
|
|
|
|
f3Action := mirrorCmd.Action
|
|
|
|
mirrorCmd.Action = func(c *cli.Context) error { return runMirror(ctx, c, f3Action) }
|
|
|
|
return mirrorCmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func runMirror(ctx context.Context, c *cli.Context, action cli.ActionFunc) error {
|
2024-06-16 16:39:52 +05:30
|
|
|
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")
|
|
|
|
}
|
|
|
|
|
feat(F3): CLI: f3 mirror to convert to/from Forgejo
feat(F3): driver stub
feat(F3): util.Logger
feat(F3): driver compliance tests
feat(F3): driver/users implementation
feat(F3): driver/user implementation
feat(F3): driver/{projects,project} implementation
feat(F3): driver/{labels,label} implementation
feat(F3): driver/{milestones,milestone} implementation
feat(F3): driver/{repositories,repository} implementation
feat(F3): driver/{organizations,organization} implementation
feat(F3): driver/{releases,release} implementation
feat(F3): driver/{issues,issue} implementation
feat(F3): driver/{comments,comment} implementation
feat(F3): driver/{assets,asset} implementation
feat(F3): driver/{pullrequests,pullrequest} implementation
feat(F3): driver/{reviews,review} implementation
feat(F3): driver/{topics,topic} implementation
feat(F3): driver/{reactions,reaction} implementation
feat(F3): driver/{reviewComments,reviewComment} implementation
feat(F3): CLI: f3 mirror
chore(F3): move to code.forgejo.org
feat(f3): upgrade to gof3 3.1.0
repositories in pull requests are represented with a reference instead
of an owner/project pair of names
2024-01-23 15:13:29 +05:30
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
err := action(c)
|
|
|
|
if panicError, ok := err.(f3_util.PanicError); ok {
|
|
|
|
log.Debug("F3 Stack trace\n%s", panicError.Stack())
|
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|