mugit/internal/cli/repo.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package cli
import (
"context"
"fmt"
"os"
"strings"
securejoin "github.com/cyphar/filepath-securejoin"
"github.com/urfave/cli/v3"
"olexsmir.xyz/mugit/internal/git"
)
func (c *Cli) repoNewAction(ctx context.Context, cmd *cli.Command) error {
name := cmd.StringArg("name")
if name == "" {
return fmt.Errorf("no name provided")
}
name = strings.TrimRight(name, ".git") + ".git"
// TODO: check if there's already such repo
path, err := securejoin.SecureJoin(c.cfg.Repo.Dir, name)
if err != nil {
return err
}
if _, err := os.Stat(path); err == nil {
return fmt.Errorf("repository already exists: %s", name)
}
return git.Init(path)
}
|