multica-ai/multica · error

--output is required

Error message

--output is required

What it means

Simple flag guard in runPluginPack (cmd_plugin.go:192): `multica plugin pack <dir> --output <path>` was invoked without a non-empty --output value. Packing requires an explicit destination file for the produced archive; there is no default.

Source

Thrown at server/cmd/multica/cmd_plugin.go:192

	cli.PrintTable(cmd.OutOrStdout(), []string{"PLUGIN", "VERSION", "MANIFEST", "ARCHIVE", "ARTIFACT"}, [][]string{{
		result.PluginKey, result.Version, result.ManifestDigest, result.ArchiveDigest, result.ArtifactDigest,
	}})
	return nil
}

func runPluginValidate(cmd *cobra.Command, args []string) error {
	_, artifact, err := loadPluginSource(args[0])
	if err != nil {
		return fmt.Errorf("validate Plugin: %w", err)
	}
	output, _ := cmd.Flags().GetString("output")
	return printPluginDigest(cmd, pluginDigestResult(artifact), output)
}

func runPluginPack(cmd *cobra.Command, args []string) error {
	outputPath, _ := cmd.Flags().GetString("output")
	if outputPath == "" {
		return fmt.Errorf("--output is required")
	}
	archive, artifact, err := plugincontract.PackDirectory(args[0])
	if err != nil {
		return fmt.Errorf("pack Plugin: %w", err)
	}
	if err := os.WriteFile(filepath.Clean(outputPath), archive, 0o644); err != nil {
		return fmt.Errorf("write Plugin archive: %w", err)
	}
	format, _ := cmd.Flags().GetString("format")
	return printPluginDigest(cmd, pluginDigestResult(artifact), format)
}

func pluginWorkspaceID(cmd *cobra.Command) (string, error) {
	workspace, _ := cmd.Flags().GetString("workspace")
	if workspace == "" {
		return requireWorkspaceID(cmd)
	}
	ctx, cancel := cli.APIContext(context.Background())

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Pass the flag: `multica plugin pack ./my-plugin --output ./dist/my-plugin.zip`.
  2. In scripts, default the variable: `OUTPUT=${OUTPUT:-./dist/plugin.zip}` before invoking.
  3. Check for a typo'd flag name (e.g. --out) — cobra silently ignores unknown flags only with LooseParse; normally it errors, but an empty value still triggers this.

Example fix

// before
multica plugin pack ./my-plugin
// --output is required

// after
multica plugin pack ./my-plugin --output ./dist/my-plugin-0.1.0.zip
Defensive patterns

Strategy: validation

Validate before calling

outputPath := os.Getenv("PLUGIN_OUTPUT")
if outputPath == "" { outputPath = "./dist/plugin.zip" }
os.MkdirAll(filepath.Dir(outputPath), 0o755)

Prevention

When it happens

Trigger: Running `multica plugin pack ./my-plugin` with the --output flag omitted or set to the empty string.

Common situations: Assuming pack writes plugin.zip into the source directory by default; CI script built by concatenating variables where $OUTPUT is unset.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/dda53061531264f2. Report an issue: GitHub.