mirror of
https://github.com/larksuite/cli.git
synced 2026-07-07 09:11:44 +08:00
fix(plugin): resolve real paths in dry-run output for instance commands
Replace <capabilities_dir> placeholders with resolved paths so models can see actual file locations before execution. Add version_source, types_output, and scan_dir fields to describe implicit behaviors.
This commit is contained in:
@@ -44,12 +44,18 @@ var AppsPluginInstanceCreate = common.Shortcut{
|
||||
if pluginVersion != "" {
|
||||
pluginRef += "@" + pluginVersion
|
||||
}
|
||||
// Resolve output paths for preview (read-only, safe in dry-run)
|
||||
projectPath, _ := pluginResolveProjectPath(rctx.Str("project-path"))
|
||||
capDir, _ := pluginResolveCapDir(projectPath, rctx.Str("capabilities-dir"))
|
||||
return common.NewDryRunAPI().
|
||||
Desc("Create plugin instance (write capability JSON)").
|
||||
Desc("Create plugin instance: validate formValue, write capability JSON, auto-generate TypeScript types").
|
||||
Set("action", "create").
|
||||
Set("id", id).
|
||||
Set("plugin", pluginRef).
|
||||
Set("target", fmt.Sprintf("<capabilities_dir>/%s.json", id))
|
||||
Set("target", fmt.Sprintf("<capabilities_dir>/%s.json", id)).
|
||||
Set("version_source", "resolved from package.json actionPlugins").
|
||||
Set("output", filepath.Join(capDir, id+".json")).
|
||||
Set("types_output", filepath.Join(projectPath, "shared", "plugin-types.ts"))
|
||||
},
|
||||
Validate: func(ctx context.Context, rctx *common.RuntimeContext) error {
|
||||
if strings.TrimSpace(rctx.Str("plugin")) == "" {
|
||||
|
||||
@@ -28,11 +28,13 @@ var AppsPluginInstanceDelete = common.Shortcut{
|
||||
},
|
||||
DryRun: func(ctx context.Context, rctx *common.RuntimeContext) *common.DryRunAPI {
|
||||
id := strings.TrimSpace(rctx.Str("id"))
|
||||
projectPath, _ := pluginResolveProjectPath(rctx.Str("project-path"))
|
||||
capDir, _ := pluginResolveCapDir(projectPath, rctx.Str("capabilities-dir"))
|
||||
return common.NewDryRunAPI().
|
||||
Desc("Delete plugin instance (remove capability JSON)").
|
||||
Desc("Delete plugin instance (remove capability JSON, idempotent)").
|
||||
Set("action", "delete").
|
||||
Set("id", id).
|
||||
Set("target", fmt.Sprintf("<capabilities_dir>/%s.json", id))
|
||||
Set("target", filepath.Join(capDir, id+".json"))
|
||||
},
|
||||
Validate: func(ctx context.Context, rctx *common.RuntimeContext) error {
|
||||
if strings.TrimSpace(rctx.Str("id")) == "" {
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/larksuite/cli/shortcuts/common"
|
||||
@@ -26,11 +27,13 @@ var AppsPluginInstanceGet = common.Shortcut{
|
||||
},
|
||||
DryRun: func(ctx context.Context, rctx *common.RuntimeContext) *common.DryRunAPI {
|
||||
id := strings.TrimSpace(rctx.Str("id"))
|
||||
projectPath, _ := pluginResolveProjectPath(rctx.Str("project-path"))
|
||||
capDir, _ := pluginResolveCapDir(projectPath, rctx.Str("capabilities-dir"))
|
||||
return common.NewDryRunAPI().
|
||||
Desc("Get plugin instance (read capability JSON)").
|
||||
Set("action", "get").
|
||||
Set("id", id).
|
||||
Set("source", fmt.Sprintf("<capabilities_dir>/%s.json", id))
|
||||
Set("source", filepath.Join(capDir, id+".json"))
|
||||
},
|
||||
Validate: func(ctx context.Context, rctx *common.RuntimeContext) error {
|
||||
id := strings.TrimSpace(rctx.Str("id"))
|
||||
|
||||
@@ -25,9 +25,12 @@ var AppsPluginInstanceList = common.Shortcut{
|
||||
{Name: "capabilities-dir", Desc: "explicit capabilities directory (relative to project or absolute)"},
|
||||
},
|
||||
DryRun: func(ctx context.Context, rctx *common.RuntimeContext) *common.DryRunAPI {
|
||||
projectPath, _ := pluginResolveProjectPath(rctx.Str("project-path"))
|
||||
capDir, _ := pluginResolveCapDir(projectPath, rctx.Str("capabilities-dir"))
|
||||
return common.NewDryRunAPI().
|
||||
Desc("List plugin instances (scan capabilities directory)").
|
||||
Set("action", "list").
|
||||
Set("scan_dir", capDir).
|
||||
Set("summary", fmt.Sprintf("%v", rctx.Bool("summary")))
|
||||
},
|
||||
Validate: func(ctx context.Context, rctx *common.RuntimeContext) error {
|
||||
|
||||
@@ -32,11 +32,15 @@ var AppsPluginInstanceUpdate = common.Shortcut{
|
||||
},
|
||||
DryRun: func(ctx context.Context, rctx *common.RuntimeContext) *common.DryRunAPI {
|
||||
id := strings.TrimSpace(rctx.Str("id"))
|
||||
projectPath, _ := pluginResolveProjectPath(rctx.Str("project-path"))
|
||||
capDir, _ := pluginResolveCapDir(projectPath, rctx.Str("capabilities-dir"))
|
||||
return common.NewDryRunAPI().
|
||||
Desc("Update plugin instance (modify capability JSON)").
|
||||
Desc("Update plugin instance: merge partial updates to existing capability, validate formValue, write back, auto-regenerate TypeScript types").
|
||||
Set("action", "update").
|
||||
Set("id", id).
|
||||
Set("target", fmt.Sprintf("<capabilities_dir>/%s.json", id))
|
||||
Set("target", fmt.Sprintf("<capabilities_dir>/%s.json", id)).
|
||||
Set("output", filepath.Join(capDir, id+".json")).
|
||||
Set("types_output", filepath.Join(projectPath, "shared", "plugin-types.ts"))
|
||||
},
|
||||
Validate: func(ctx context.Context, rctx *common.RuntimeContext) error {
|
||||
id := strings.TrimSpace(rctx.Str("id"))
|
||||
|
||||
Reference in New Issue
Block a user