agentcmd

package
v0.23.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AgentCmd = &cli.Command{
	Name:        "agent",
	Usage:       "Knot agent",
	Description: `Knot agent commands.`,
	Commands: []*cli.Command{
		agentServerCmd,
		space.SpaceNoteCmd,
		space.SpaceSetFieldCmd,
		space.SpaceGetFieldCmd,
		space.SpaceShutdownCmd,
		space.SpaceRestartCmd,
	},
}
View Source
var RunScriptCmd = &cli.Command{
	Name:        "run-script",
	Usage:       "Run a scriptling script",
	Description: "Execute a scriptling script from disk or by name from the server.",
	MaxArgs:     cli.UnlimitedArgs,
	Arguments: []cli.Argument{
		&cli.StringArg{
			Name:     "script",
			Usage:    "Script name or file path",
			Required: true,
		},
	},
	Flags: []cli.Flag{
		&cli.StringFlag{
			Name:         "alias",
			Aliases:      []string{"a"},
			Usage:        "Server alias to use for fetching scripts.",
			DefaultValue: "default",
		},
		&cli.BoolFlag{
			Name:    "tls-skip-verify",
			Usage:   "Skip TLS verification.",
			EnvVars: []string{"KNOT_TLS_SKIP_VERIFY"},
		},
		&cli.StringSliceFlag{
			Name:    "libpath",
			Aliases: []string{"L"},
			Usage:   "Additional directories to search for libraries (script dir is always searched first)",
			EnvVars: []string{"SCRIPTLING_LIBPATH"},
		},
	},
	Run: func(ctx context.Context, cmd *cli.Command) error {
		script := cmd.GetStringArg("script")
		args := cmd.GetArgs()

		client, err := cmdutil.GetClient(cmd)
		if err != nil {
			return fmt.Errorf("failed to create API client: %w", err)
		}
		client.SetTimeout(5 * time.Minute)

		user, err := client.WhoAmI(ctx)
		if err != nil {
			return fmt.Errorf("failed to get user: %w", err)
		}

		var scriptContent string
		var scriptFile string

		if _, err := os.Stat(script); err == nil {
			content, err := os.ReadFile(script)
			if err != nil {
				return fmt.Errorf("failed to read script file: %w", err)
			}
			scriptContent = string(content)
			scriptFile = script
		} else {
			scriptContent, err = client.GetScriptByName(ctx, script)
			if err != nil {
				return fmt.Errorf("failed to get script: %w", err)
			}
		}

		argv := append([]string{script}, args...)

		_, err = service.RunScript(ctx, scriptContent, argv, client, user.Id, scriptFile, cmd.GetStringSlice("libpath"))
		if err != nil {
			return fmt.Errorf("script execution failed: %w", err)
		}
		return nil
	},
}

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL