| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Copyright 2024 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package lfstransfer
-
- import (
- "context"
- "fmt"
- "os"
-
- "code.gitea.io/gitea/modules/lfstransfer/backend"
-
- "github.com/charmbracelet/git-lfs-transfer/transfer"
- )
-
- func Main(ctx context.Context, repo, verb, token string) error {
- logger := newLogger()
- pktline := transfer.NewPktline(os.Stdin, os.Stdout, logger)
- giteaBackend, err := backend.New(ctx, repo, verb, token, logger)
- if err != nil {
- return err
- }
-
- for _, cap := range backend.Capabilities {
- if err := pktline.WritePacketText(cap); err != nil {
- logger.Log("error sending capability due to error:", err)
- }
- }
- if err := pktline.WriteFlush(); err != nil {
- logger.Log("error flushing capabilities:", err)
- }
- p := transfer.NewProcessor(pktline, giteaBackend, logger)
- defer logger.Log("done processing commands")
- switch verb {
- case "upload":
- return p.ProcessCommands(transfer.UploadOperation)
- case "download":
- return p.ProcessCommands(transfer.DownloadOperation)
- default:
- return fmt.Errorf("unknown operation %q", verb)
- }
- }
|