[CLI] implement forgejo-cli actions generate-runner-token
(cherry picked from commit 08be2b226e)
			
			
This commit is contained in:
		
							parent
							
								
									51b9c9092e
								
							
						
					
					
						commit
						b6cfa88c6e
					
				
					 3 changed files with 88 additions and 4 deletions
				
			
		
							
								
								
									
										60
									
								
								cmd/forgejo/actions.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								cmd/forgejo/actions.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
// Copyright The Forgejo Authors.
 | 
			
		||||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
package forgejo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/private"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
 | 
			
		||||
	"github.com/urfave/cli"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func CmdActions(ctx context.Context) cli.Command {
 | 
			
		||||
	return cli.Command{
 | 
			
		||||
		Name:  "actions",
 | 
			
		||||
		Usage: "Commands for managing Forgejo Actions",
 | 
			
		||||
		Subcommands: []cli.Command{
 | 
			
		||||
			SubcmdActionsGenRunnerToken(ctx),
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SubcmdActionsGenRunnerToken(ctx context.Context) cli.Command {
 | 
			
		||||
	return cli.Command{
 | 
			
		||||
		Name:   "generate-runner-token",
 | 
			
		||||
		Usage:  "Generate a new token for a runner to use to register with the server",
 | 
			
		||||
		Action: func(cliCtx *cli.Context) error { return RunGenerateActionsRunnerToken(ctx, cliCtx) },
 | 
			
		||||
		Flags: []cli.Flag{
 | 
			
		||||
			cli.StringFlag{
 | 
			
		||||
				Name:  "scope, s",
 | 
			
		||||
				Value: "",
 | 
			
		||||
				Usage: "{owner}[/{repo}] - leave empty for a global runner",
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func RunGenerateActionsRunnerToken(ctx context.Context, cliCtx *cli.Context) error {
 | 
			
		||||
	if !ContextGetNoInstallSignals(ctx) {
 | 
			
		||||
		var cancel context.CancelFunc
 | 
			
		||||
		ctx, cancel = installSignals(ctx)
 | 
			
		||||
		defer cancel()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	setting.MustInstalled()
 | 
			
		||||
 | 
			
		||||
	scope := cliCtx.String("scope")
 | 
			
		||||
 | 
			
		||||
	respText, extra := private.GenerateActionsRunnerToken(ctx, scope)
 | 
			
		||||
	if extra.HasError() {
 | 
			
		||||
		return handleCliResponseExtra(extra)
 | 
			
		||||
	}
 | 
			
		||||
	if _, err := fmt.Fprintf(ContextGetStdout(ctx), "%s", respText); err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -28,10 +28,12 @@ const (
 | 
			
		|||
 | 
			
		||||
func CmdForgejo(ctx context.Context) cli.Command {
 | 
			
		||||
	return cli.Command{
 | 
			
		||||
		Name:        "forgejo-cli",
 | 
			
		||||
		Usage:       "Forgejo CLI",
 | 
			
		||||
		Flags:       []cli.Flag{},
 | 
			
		||||
		Subcommands: []cli.Command{},
 | 
			
		||||
		Name:  "forgejo-cli",
 | 
			
		||||
		Usage: "Forgejo CLI",
 | 
			
		||||
		Flags: []cli.Flag{},
 | 
			
		||||
		Subcommands: []cli.Command{
 | 
			
		||||
			CmdActions(ctx),
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								tests/integration/cmd_forgejo_actions_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tests/integration/cmd_forgejo_actions_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
// SPDX-License-Identifier: MIT
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/test"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Test_CmdForgejo_Actions(t *testing.T) {
 | 
			
		||||
	onGiteaRun(t, func(*testing.T, *url.URL) {
 | 
			
		||||
		defer test.MockVariable(&setting.Actions.Enabled, true)()
 | 
			
		||||
 | 
			
		||||
		output := cmdForgejoCaptureOutput(t, []string{"forgejo-cli", "actions", "generate-runner-token"})
 | 
			
		||||
		assert.EqualValues(t, 40, len(output))
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue