@@ -219,33 +219,49 @@ with the release in Step 3 — no separate commit needed.
219219### Step 7: Check for Separate Plugin Changes
220220
221221After the app release is pushed, check if any ** separate plugin bundles**
222- (Oracle, ClickHouse, DuckDB, MSSQL, MongoDB, Redis, XLSX, MQL,
223- SQLImport) have changes since their last
224- release. Also check ` Plugins/TableProPluginKit/ ` — changes there affect
225- all plugins.
222+ have changes since their last release. Also check
223+ ` Plugins/TableProPluginKit/ ` — changes there affect all plugins.
226224
227- ** Detection** : For each separate plugin, find its latest tag and check
228- for commits:
225+ ** Important** : Do NOT use a hardcoded plugin list. Dynamically discover
226+ all separate plugins by scanning the ` Plugins/ ` directory and excluding
227+ built-in plugins and the shared framework.
228+
229+ ** Detection** : Dynamically find all separate plugin directories and check
230+ each for changes:
229231
230232``` bash
231- # Separate plugins and their directory + tag-name mappings:
232- # Oracle: Plugins/OracleDriverPlugin/ plugin-oracle
233- # ClickHouse: Plugins/ClickHouseDriverPlugin/ plugin-clickhouse
234- # DuckDB: Plugins/DuckDBDriverPlugin/ plugin-duckdb
235- # MSSQL: Plugins/MSSQLDriverPlugin/ plugin-mssql
236- # MongoDB: Plugins/MongoDBDriverPlugin/ plugin-mongodb
237- # Redis: Plugins/RedisDriverPlugin/ plugin-redis
238- # XLSX: Plugins/XLSXExportPlugin/ plugin-xlsx
239- # MQL: Plugins/MQLExportPlugin/ plugin-mql
240- # SQLImport: Plugins/SQLImportPlugin/ plugin-sqlimport
241-
242- # For each plugin, find the latest tag:
243- LAST_TAG=$( git tag -l " plugin-<name>-v*" --sort=-version:refname | head -1)
244-
245- # Check for changes since that tag (include PluginKit as shared dependency):
246- git log --oneline " $LAST_TAG " ..HEAD -- Plugins/< PluginDir> / Plugins/TableProPluginKit/
233+ # Built-in plugins (bundled in app) and shared framework — skip these:
234+ BUILTIN=" MySQLDriverPlugin|PostgreSQLDriverPlugin|SQLiteDriverPlugin|CSVExportPlugin|JSONExportPlugin|SQLExportPlugin|TableProPluginKit"
235+
236+ # Discover all separate plugin directories dynamically:
237+ for dir in Plugins/* /; do
238+ dirname=$( basename " $dir " )
239+ # Skip built-in plugins and PluginKit
240+ echo " $dirname " | grep -qE " ^($BUILTIN )$" && continue
241+
242+ # Derive tag name from directory (e.g., OracleDriverPlugin -> oracle,
243+ # XLSXExportPlugin -> xlsx, SQLImportPlugin -> sqlimport,
244+ # CloudflareD1DriverPlugin -> d1, EtcdDriverPlugin -> etcd)
245+ # Strip "DriverPlugin" or "ExportPlugin" or "ImportPlugin" suffix,
246+ # then lowercase. For "CloudflareD1", use "d1". Apply custom mappings
247+ # as needed based on the CI workflow's tag-name expectations.
248+ tag_name=< derived-lowercase-name>
249+
250+ LAST_TAG=$( git tag -l " plugin-${tag_name} -v*" --sort=-version:refname | head -1)
251+ # Check for changes since that tag (include PluginKit as shared dependency):
252+ if [ -z " $LAST_TAG " ]; then
253+ git log --oneline -- " Plugins/${dirname} /" " Plugins/TableProPluginKit/"
254+ else
255+ git log --oneline " ${LAST_TAG} ..HEAD" -- " Plugins/${dirname} /" " Plugins/TableProPluginKit/"
256+ fi
257+ done
247258```
248259
260+ The tag name derivation must match the CI workflow's mapping. Known
261+ mappings: ` CloudflareD1DriverPlugin ` → ` d1 ` , ` EtcdDriverPlugin ` →
262+ ` etcd ` . For standard plugins, strip the suffix and lowercase (e.g.,
263+ ` OracleDriverPlugin ` → ` oracle ` , ` XLSXExportPlugin ` → ` xlsx ` ).
264+
249265If ` LAST_TAG ` is empty (never released), check for changes since the
250266beginning of the repo.
251267
@@ -280,9 +296,8 @@ Plugin releases:
280296
281297## Plugin Releases
282298
283- Separate plugin bundles (Oracle, ClickHouse, DuckDB, MSSQL, MongoDB,
284- Redis, XLSX, MQL, SQLImport) are released independently from the main
285- app via a dedicated workflow
299+ Separate plugin bundles (any plugin not built-in) are released
300+ independently from the main app via a dedicated workflow
286301(` .github/workflows/build-plugin.yml ` ). They are also checked
287302automatically during app releases (Step 7 above).
288303
@@ -302,9 +317,9 @@ plugin-<name>-v<version>
302317
303318Examples: ` plugin-oracle-v1.0.0 ` , ` plugin-clickhouse-v1.2.0 `
304319
305- The ` <name> ` must match one of the cases in the workflow's mapping:
306- ` oracle ` , ` clickhouse ` , ` duckdb ` , ` cassandra ` , ` mssql ` , ` mongodb ` ,
307- ` redis ` , ` xlsx ` , ` mql ` , ` sqlimport ` .
320+ The ` <name> ` must match one of the cases in the workflow's mapping.
321+ Check ` .github/workflows/build-plugin.yml ` for the current list of
322+ supported names. New plugins must be added to the workflow mapping .
308323
309324### Plugin Release Steps
310325
0 commit comments