From b9cc769e5ccbcb63a536abb56e09661d50cd65b3 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Tue, 4 Apr 2023 12:10:26 -0400 Subject: [PATCH] feat(server): add repo mirror & info commands --- server/cmd/mirror.go | 28 ++++++++++++++++++++++++ server/cmd/repo.go | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 server/cmd/mirror.go diff --git a/server/cmd/mirror.go b/server/cmd/mirror.go new file mode 100644 index 0000000000000000000000000000000000000000..34e785ab7037e9badc5e2f25bcfa9d5c5242175f --- /dev/null +++ b/server/cmd/mirror.go @@ -0,0 +1,28 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +func mirrorCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "is-mirror REPOSITORY", + Short: "Whether a repository is a mirror", + Args: cobra.ExactArgs(1), + PersistentPreRunE: checkIfReadable, + RunE: func(cmd *cobra.Command, args []string) error { + cfg, _ := fromContext(cmd) + rn := args[0] + rr, err := cfg.Backend.Repository(rn) + if err != nil { + return err + } + + isMirror := rr.IsMirror() + cmd.Println(isMirror) + return nil + }, + } + + return cmd +} diff --git a/server/cmd/repo.go b/server/cmd/repo.go index a4c60d680e6444a1104d789b2d345442d4c74265..a072f19b88f88ede048c1176429842ee07026733 100644 --- a/server/cmd/repo.go +++ b/server/cmd/repo.go @@ -19,6 +19,7 @@ func repoCommand() *cobra.Command { hiddenCommand(), importCommand(), listCommand(), + mirrorCommand(), privateCommand(), projectName(), renameCommand(), @@ -26,5 +27,56 @@ func repoCommand() *cobra.Command { treeCommand(), ) + cmd.AddCommand( + &cobra.Command{ + Use: "info REPOSITORY", + Short: "Get information about a repository", + Args: cobra.ExactArgs(1), + PersistentPreRunE: checkIfReadable, + RunE: func(cmd *cobra.Command, args []string) error { + cfg, _ := fromContext(cmd) + rn := args[0] + rr, err := cfg.Backend.Repository(rn) + if err != nil { + return err + } + + r, err := rr.Open() + if err != nil { + return err + } + + head, err := r.HEAD() + if err != nil { + return err + } + + branches, _ := r.Branches() + tags, _ := r.Tags() + cmd.Println("Project Name:", rr.ProjectName()) + cmd.Println("Repository:", rr.Name()) + cmd.Println("Description:", rr.Description()) + cmd.Println("Private:", rr.IsPrivate()) + cmd.Println("Hidden:", rr.IsHidden()) + cmd.Println("Mirror:", rr.IsMirror()) + cmd.Println("Default Branch:", head.Name().Short()) + if len(branches) > 0 { + cmd.Println("Branches:") + for _, b := range branches { + cmd.Println(" -", b) + } + } + if len(tags) > 0 { + cmd.Println("Tags:") + for _, t := range tags { + cmd.Println(" -", t) + } + } + + return nil + }, + }, + ) + return cmd }