From 7a7529f475cde2cc44004b5af3b5353a99e001e1 Mon Sep 17 00:00:00 2001 From: Norwin Date: Tue, 28 Sep 2021 12:50:11 +0200 Subject: [PATCH 1/2] add `tea org create` --- cmd/organizations.go | 1 + cmd/organizations/create.go | 89 +++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 cmd/organizations/create.go diff --git a/cmd/organizations.go b/cmd/organizations.go index b879a13..711f782 100644 --- a/cmd/organizations.go +++ b/cmd/organizations.go @@ -23,6 +23,7 @@ var CmdOrgs = cli.Command{ Action: runOrganizations, Subcommands: []*cli.Command{ &organizations.CmdOrganizationList, + &organizations.CmdOrganizationCreate, &organizations.CmdOrganizationDelete, }, Flags: organizations.CmdOrganizationList.Flags, diff --git a/cmd/organizations/create.go b/cmd/organizations/create.go new file mode 100644 index 0000000..3e341ef --- /dev/null +++ b/cmd/organizations/create.go @@ -0,0 +1,89 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package organizations + +import ( + "fmt" + + "code.gitea.io/tea/cmd/flags" + "code.gitea.io/tea/modules/context" + + "code.gitea.io/sdk/gitea" + "github.com/urfave/cli/v2" +) + +// CmdOrganizationCreate represents a sub command of organizations to delete a given user organization +var CmdOrganizationCreate = cli.Command{ + Name: "create", + Aliases: []string{"c"}, + Usage: "Create an organization", + Description: "Create an organization", + Action: RunOrganizationCreate, + ArgsUsage: "", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "name", + Aliases: []string{"n"}, + }, + &cli.StringFlag{ + Name: "description", + Aliases: []string{"d"}, + }, + &cli.StringFlag{ + Name: "website", + Aliases: []string{"w"}, + }, + &cli.StringFlag{ + Name: "location", + Aliases: []string{"L"}, + }, + &cli.StringFlag{ + Name: "visibility", + Aliases: []string{"v"}, + }, + &cli.BoolFlag{ + Name: "repo-admins-can-change-team-access", + }, + &flags.LoginFlag, + }, +} + +// RunOrganizationCreate sets up a new organization +func RunOrganizationCreate(cmd *cli.Context) error { + ctx := context.InitCommand(cmd) + + if ctx.Args().Len() < 1 { + return fmt.Errorf("You have to specify the organization name you want to create") + } + + var visibility gitea.VisibleType + switch ctx.String("visibility") { + case "", "public": + visibility = gitea.VisibleTypePublic + case "private": + visibility = gitea.VisibleTypePrivate + case "limited": + visibility = gitea.VisibleTypeLimited + default: + return fmt.Errorf("unknown visibility '%s'", ctx.String("visibility")) + } + + _, _, err := ctx.Login.Client().CreateOrg(gitea.CreateOrgOption{ + Name: ctx.Args().First(), + // FullName: , // not really meaningful for orgs (not displayed in webui, use description instead?) + Description: ctx.String("description"), + Website: ctx.String("website"), + Location: ctx.String("location"), + RepoAdminChangeTeamAccess: ctx.Bool("repo-admins-can-change-team-access"), + Visibility: visibility, + }) + if err != nil { + return err + } + + // TODO: print resulting org. + + return err +} -- 2.40.1 From 25700be7822a6f18ee2c1e8a21239667308ad2d6 Mon Sep 17 00:00:00 2001 From: Norwin Date: Tue, 28 Sep 2021 13:06:56 +0200 Subject: [PATCH 2/2] add print.OrganizationDetails() --- cmd/organizations.go | 21 ++++++++++++++------- cmd/organizations/create.go | 5 +++-- modules/print/organization.go | 12 ++++++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/cmd/organizations.go b/cmd/organizations.go index 711f782..c541fda 100644 --- a/cmd/organizations.go +++ b/cmd/organizations.go @@ -5,9 +5,9 @@ package cmd import ( - "fmt" - "code.gitea.io/tea/cmd/organizations" + "code.gitea.io/tea/modules/context" + "code.gitea.io/tea/modules/print" "github.com/urfave/cli/v2" ) @@ -29,13 +29,20 @@ var CmdOrgs = cli.Command{ Flags: organizations.CmdOrganizationList.Flags, } -func runOrganizations(ctx *cli.Context) error { +func runOrganizations(cmd *cli.Context) error { + ctx := context.InitCommand(cmd) if ctx.Args().Len() == 1 { - return runOrganizationDetail(ctx.Args().First()) + return runOrganizationDetail(ctx) } - return organizations.RunOrganizationList(ctx) + return organizations.RunOrganizationList(cmd) } -func runOrganizationDetail(path string) error { - return fmt.Errorf("Not yet implemented") +func runOrganizationDetail(ctx *context.TeaContext) error { + org, _, err := ctx.Login.Client().GetOrg(ctx.Args().First()) + if err != nil { + return err + } + + print.OrganizationDetails(org) + return nil } diff --git a/cmd/organizations/create.go b/cmd/organizations/create.go index 3e341ef..e5fbfcf 100644 --- a/cmd/organizations/create.go +++ b/cmd/organizations/create.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/tea/cmd/flags" "code.gitea.io/tea/modules/context" + "code.gitea.io/tea/modules/print" "code.gitea.io/sdk/gitea" "github.com/urfave/cli/v2" @@ -70,7 +71,7 @@ func RunOrganizationCreate(cmd *cli.Context) error { return fmt.Errorf("unknown visibility '%s'", ctx.String("visibility")) } - _, _, err := ctx.Login.Client().CreateOrg(gitea.CreateOrgOption{ + org, _, err := ctx.Login.Client().CreateOrg(gitea.CreateOrgOption{ Name: ctx.Args().First(), // FullName: , // not really meaningful for orgs (not displayed in webui, use description instead?) Description: ctx.String("description"), @@ -83,7 +84,7 @@ func RunOrganizationCreate(cmd *cli.Context) error { return err } - // TODO: print resulting org. + print.OrganizationDetails(org) return err } diff --git a/modules/print/organization.go b/modules/print/organization.go index f073d90..a9e10c6 100644 --- a/modules/print/organization.go +++ b/modules/print/organization.go @@ -10,6 +10,18 @@ import ( "code.gitea.io/sdk/gitea" ) +// OrganizationDetails prints details of an org with formatting +func OrganizationDetails(org *gitea.Organization) { + outputMarkdown(fmt.Sprintf( + "# %s\n%s\n\n- Visibility: %s\n- Location: %s\n- Website: %s\n", + org.UserName, + org.Description, + org.Visibility, + org.Location, + org.Website, + ), "") +} + // OrganizationsList prints a listing of the organizations func OrganizationsList(organizations []*gitea.Organization, output string) { if len(organizations) == 0 { -- 2.40.1