Skip to content

Support directory-based plugins without zip files #1978

@bpamiri

Description

@bpamiri

Summary

Currently, plugins must be distributed as .zip files in the plugins/ directory. The $pluginDelete() function actively removes directories that lack a matching zip — which means git-cloned, symlinked, or manually installed plugin directories are deleted on application start.

Current Behavior

  1. $pluginsExtract() unzips .zip files from plugins/ to subdirectories
  2. $pluginDelete() removes any directory in plugins/ that doesn't have a matching .zip file
  3. Directory-only plugins are destroyed on every reload

Proposed Behavior

  • Recognize plugin directories that contain a valid plugin CFC (or plugin.json) as first-class plugins
  • $pluginDelete() should only remove directories that are orphaned extraction artifacts, not intentionally placed directories
  • A directory with a plugin.json or a CFC with init() returning this.version is treated as a valid plugin
  • This enables: git clone, git submodule, symlinks, and package-manager-installed plugins

Files

  • vendor/wheels/Plugins.cfc:128-144 — modify $pluginDelete() to skip valid plugin directories
  • vendor/wheels/Plugins.cfc:146-178 — modify $pluginsProcess() to discover directory-based plugins

Phase

Phase 1 — Cleanup & Foundation (3.x, no breaking changes)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions