filepathplugin

package
v0.16.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2025 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Plugin = plugin.Plugin{
	Name: "filepath",
	MethodMap: map[string]plugin.MethodSpec{
		"base": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"str"},
				ResultType: "str",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "base"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}

				filepathStr, err := safeArgs.StrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				result := filepath.Base(filepathStr)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: result}, nil
			},
		},
		"clean": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"str"},
				ResultType: "str",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "clean"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}

				filepathStr, err := safeArgs.StrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				result := filepath.Clean(filepathStr)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: result}, nil
			},
		},
		"dir": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"str"},
				ResultType: "str",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "dir"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}

				filepathStr, err := safeArgs.StrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				result := filepath.Dir(filepathStr)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: result}, nil
			},
		},
		"ext": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"str"},
				ResultType: "str",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "ext"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}

				filepathStr, err := safeArgs.StrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				result := filepath.Ext(filepathStr)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: result}, nil
			},
		},
		"join": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"[str]"},
				ResultType: "str",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "join"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}

				filepaths, err := safeArgs.ListStrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				result := filepath.Join(filepaths...)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: result}, nil
			},
		},
		"split": {
			Type: &plugin.MethodType{
				ArgsType:   []string{"str"},
				ResultType: "[str]",
			},
			Body: func(args *plugin.MethodArgs) (*plugin.MethodResult, error) {
				logger := slog.With(
					slog.String("plugin", "filepath"),
					slog.String("method", "split"),
				)
				logger.Debug("invoking kcl plugin")

				safeArgs := plugins.SafeMethodArgs{Args: args}
				filepathStr, err := safeArgs.StrArg(0)
				if err != nil {
					return nil, NewInvalidArgumentError(err)
				}

				dir, file := filepath.Split(filepathStr)

				logger.Debug("returning results")

				return &plugin.MethodResult{V: []string{dir, file}}, nil
			},
		},
	},
}

Functions

func Register

func Register()

Types

type InvalidArgumentError

type InvalidArgumentError struct {
	Err error
}

func NewInvalidArgumentError

func NewInvalidArgumentError(err error) *InvalidArgumentError

func (*InvalidArgumentError) Error

func (e *InvalidArgumentError) Error() string

Jump to

Keyboard shortcuts

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