@cicore/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/ci.js +13 -0
- package/dist/commands/addon/api-actions.d.ts +45 -0
- package/dist/commands/addon/api-actions.d.ts.map +1 -0
- package/dist/commands/addon/api-actions.js +281 -0
- package/dist/commands/addon/api-actions.js.map +1 -0
- package/dist/commands/addon/build.d.ts +11 -0
- package/dist/commands/addon/build.d.ts.map +1 -0
- package/dist/commands/addon/build.js +182 -0
- package/dist/commands/addon/build.js.map +1 -0
- package/dist/commands/addon/create.d.ts +11 -0
- package/dist/commands/addon/create.d.ts.map +1 -0
- package/dist/commands/addon/create.js +1186 -0
- package/dist/commands/addon/create.js.map +1 -0
- package/dist/commands/addon/delete.d.ts +13 -0
- package/dist/commands/addon/delete.d.ts.map +1 -0
- package/dist/commands/addon/delete.js +83 -0
- package/dist/commands/addon/delete.js.map +1 -0
- package/dist/commands/addon/deploy.d.ts +27 -0
- package/dist/commands/addon/deploy.d.ts.map +1 -0
- package/dist/commands/addon/deploy.js +459 -0
- package/dist/commands/addon/deploy.js.map +1 -0
- package/dist/commands/addon/dev-deploy.d.ts +31 -0
- package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
- package/dist/commands/addon/dev-deploy.js +128 -0
- package/dist/commands/addon/dev-deploy.js.map +1 -0
- package/dist/commands/addon/dev.d.ts +36 -0
- package/dist/commands/addon/dev.d.ts.map +1 -0
- package/dist/commands/addon/dev.js +323 -0
- package/dist/commands/addon/dev.js.map +1 -0
- package/dist/commands/addon/extract-classes.d.ts +23 -0
- package/dist/commands/addon/extract-classes.d.ts.map +1 -0
- package/dist/commands/addon/extract-classes.js +281 -0
- package/dist/commands/addon/extract-classes.js.map +1 -0
- package/dist/commands/addon/generate-safelist.d.ts +24 -0
- package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
- package/dist/commands/addon/generate-safelist.js +276 -0
- package/dist/commands/addon/generate-safelist.js.map +1 -0
- package/dist/commands/addon/index.d.ts +19 -0
- package/dist/commands/addon/index.d.ts.map +1 -0
- package/dist/commands/addon/index.js +296 -0
- package/dist/commands/addon/index.js.map +1 -0
- package/dist/commands/addon/init-repo.d.ts +25 -0
- package/dist/commands/addon/init-repo.d.ts.map +1 -0
- package/dist/commands/addon/init-repo.js +171 -0
- package/dist/commands/addon/init-repo.js.map +1 -0
- package/dist/commands/addon/install.d.ts +23 -0
- package/dist/commands/addon/install.d.ts.map +1 -0
- package/dist/commands/addon/install.js +84 -0
- package/dist/commands/addon/install.js.map +1 -0
- package/dist/commands/addon/list.d.ts +10 -0
- package/dist/commands/addon/list.d.ts.map +1 -0
- package/dist/commands/addon/list.js +102 -0
- package/dist/commands/addon/list.js.map +1 -0
- package/dist/commands/addon/manifest-refresh.d.ts +17 -0
- package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
- package/dist/commands/addon/manifest-refresh.js +48 -0
- package/dist/commands/addon/manifest-refresh.js.map +1 -0
- package/dist/commands/addon/migrate.d.ts +40 -0
- package/dist/commands/addon/migrate.d.ts.map +1 -0
- package/dist/commands/addon/migrate.js +236 -0
- package/dist/commands/addon/migrate.js.map +1 -0
- package/dist/commands/addon/publish.d.ts +33 -0
- package/dist/commands/addon/publish.d.ts.map +1 -0
- package/dist/commands/addon/publish.js +236 -0
- package/dist/commands/addon/publish.js.map +1 -0
- package/dist/commands/addon/scaffold-quality.d.ts +21 -0
- package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
- package/dist/commands/addon/scaffold-quality.js +90 -0
- package/dist/commands/addon/scaffold-quality.js.map +1 -0
- package/dist/commands/addon/sign.d.ts +9 -0
- package/dist/commands/addon/sign.d.ts.map +1 -0
- package/dist/commands/addon/sign.js +83 -0
- package/dist/commands/addon/sign.js.map +1 -0
- package/dist/commands/addon/toggle.d.ts +6 -0
- package/dist/commands/addon/toggle.d.ts.map +1 -0
- package/dist/commands/addon/toggle.js +46 -0
- package/dist/commands/addon/toggle.js.map +1 -0
- package/dist/commands/agent/index.d.ts +34 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +564 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/brand/index.d.ts +54 -0
- package/dist/commands/brand/index.d.ts.map +1 -0
- package/dist/commands/brand/index.js +367 -0
- package/dist/commands/brand/index.js.map +1 -0
- package/dist/commands/build/index.d.ts +53 -0
- package/dist/commands/build/index.d.ts.map +1 -0
- package/dist/commands/build/index.js +726 -0
- package/dist/commands/build/index.js.map +1 -0
- package/dist/commands/cache/flush-local.d.ts +31 -0
- package/dist/commands/cache/flush-local.d.ts.map +1 -0
- package/dist/commands/cache/flush-local.js +161 -0
- package/dist/commands/cache/flush-local.js.map +1 -0
- package/dist/commands/cache/index.d.ts +14 -0
- package/dist/commands/cache/index.d.ts.map +1 -0
- package/dist/commands/cache/index.js +453 -0
- package/dist/commands/cache/index.js.map +1 -0
- package/dist/commands/check/index.d.ts +8 -0
- package/dist/commands/check/index.d.ts.map +1 -0
- package/dist/commands/check/index.js +1316 -0
- package/dist/commands/check/index.js.map +1 -0
- package/dist/commands/cloudflare/index.d.ts +8 -0
- package/dist/commands/cloudflare/index.d.ts.map +1 -0
- package/dist/commands/cloudflare/index.js +453 -0
- package/dist/commands/cloudflare/index.js.map +1 -0
- package/dist/commands/core/create.d.ts +12 -0
- package/dist/commands/core/create.d.ts.map +1 -0
- package/dist/commands/core/create.js +206 -0
- package/dist/commands/core/create.js.map +1 -0
- package/dist/commands/core/delete.d.ts +11 -0
- package/dist/commands/core/delete.d.ts.map +1 -0
- package/dist/commands/core/delete.js +64 -0
- package/dist/commands/core/delete.js.map +1 -0
- package/dist/commands/core/env.d.ts +12 -0
- package/dist/commands/core/env.d.ts.map +1 -0
- package/dist/commands/core/env.js +95 -0
- package/dist/commands/core/env.js.map +1 -0
- package/dist/commands/core/health.d.ts +6 -0
- package/dist/commands/core/health.d.ts.map +1 -0
- package/dist/commands/core/health.js +215 -0
- package/dist/commands/core/health.js.map +1 -0
- package/dist/commands/core/index.d.ts +15 -0
- package/dist/commands/core/index.d.ts.map +1 -0
- package/dist/commands/core/index.js +86 -0
- package/dist/commands/core/index.js.map +1 -0
- package/dist/commands/core/list.d.ts +11 -0
- package/dist/commands/core/list.d.ts.map +1 -0
- package/dist/commands/core/list.js +58 -0
- package/dist/commands/core/list.js.map +1 -0
- package/dist/commands/core/rebuild.d.ts +13 -0
- package/dist/commands/core/rebuild.d.ts.map +1 -0
- package/dist/commands/core/rebuild.js +119 -0
- package/dist/commands/core/rebuild.js.map +1 -0
- package/dist/commands/db/index.d.ts +23 -0
- package/dist/commands/db/index.d.ts.map +1 -0
- package/dist/commands/db/index.js +355 -0
- package/dist/commands/db/index.js.map +1 -0
- package/dist/commands/db/promote-silo.d.ts +320 -0
- package/dist/commands/db/promote-silo.d.ts.map +1 -0
- package/dist/commands/db/promote-silo.js +930 -0
- package/dist/commands/db/promote-silo.js.map +1 -0
- package/dist/commands/db/relocate.d.ts +41 -0
- package/dist/commands/db/relocate.d.ts.map +1 -0
- package/dist/commands/db/relocate.js +482 -0
- package/dist/commands/db/relocate.js.map +1 -0
- package/dist/commands/db/rollback-silo.d.ts +44 -0
- package/dist/commands/db/rollback-silo.d.ts.map +1 -0
- package/dist/commands/db/rollback-silo.js +402 -0
- package/dist/commands/db/rollback-silo.js.map +1 -0
- package/dist/commands/deploy/index.d.ts +26 -0
- package/dist/commands/deploy/index.d.ts.map +1 -0
- package/dist/commands/deploy/index.js +107 -0
- package/dist/commands/deploy/index.js.map +1 -0
- package/dist/commands/devops/index.d.ts +6 -0
- package/dist/commands/devops/index.d.ts.map +1 -0
- package/dist/commands/devops/index.js +220 -0
- package/dist/commands/devops/index.js.map +1 -0
- package/dist/commands/domain/index.d.ts +8 -0
- package/dist/commands/domain/index.d.ts.map +1 -0
- package/dist/commands/domain/index.js +386 -0
- package/dist/commands/domain/index.js.map +1 -0
- package/dist/commands/image/index.d.ts +8 -0
- package/dist/commands/image/index.d.ts.map +1 -0
- package/dist/commands/image/index.js +308 -0
- package/dist/commands/image/index.js.map +1 -0
- package/dist/commands/install/factory-reset.d.ts +21 -0
- package/dist/commands/install/factory-reset.d.ts.map +1 -0
- package/dist/commands/install/factory-reset.js +83 -0
- package/dist/commands/install/factory-reset.js.map +1 -0
- package/dist/commands/install/index.d.ts +17 -0
- package/dist/commands/install/index.d.ts.map +1 -0
- package/dist/commands/install/index.js +44 -0
- package/dist/commands/install/index.js.map +1 -0
- package/dist/commands/install/install.d.ts +35 -0
- package/dist/commands/install/install.d.ts.map +1 -0
- package/dist/commands/install/install.js +171 -0
- package/dist/commands/install/install.js.map +1 -0
- package/dist/commands/login/index.d.ts +15 -0
- package/dist/commands/login/index.d.ts.map +1 -0
- package/dist/commands/login/index.js +58 -0
- package/dist/commands/login/index.js.map +1 -0
- package/dist/commands/nginx/index.d.ts +11 -0
- package/dist/commands/nginx/index.d.ts.map +1 -0
- package/dist/commands/nginx/index.js +580 -0
- package/dist/commands/nginx/index.js.map +1 -0
- package/dist/commands/server/bootstrap.d.ts +25 -0
- package/dist/commands/server/bootstrap.d.ts.map +1 -0
- package/dist/commands/server/bootstrap.js +260 -0
- package/dist/commands/server/bootstrap.js.map +1 -0
- package/dist/commands/server/index.d.ts +8 -0
- package/dist/commands/server/index.d.ts.map +1 -0
- package/dist/commands/server/index.js +2524 -0
- package/dist/commands/server/index.js.map +1 -0
- package/dist/commands/setup/index.d.ts +34 -0
- package/dist/commands/setup/index.d.ts.map +1 -0
- package/dist/commands/setup/index.js +423 -0
- package/dist/commands/setup/index.js.map +1 -0
- package/dist/commands/ssl/index.d.ts +8 -0
- package/dist/commands/ssl/index.d.ts.map +1 -0
- package/dist/commands/ssl/index.js +275 -0
- package/dist/commands/ssl/index.js.map +1 -0
- package/dist/commands/superadmin/index.d.ts +16 -0
- package/dist/commands/superadmin/index.d.ts.map +1 -0
- package/dist/commands/superadmin/index.js +81 -0
- package/dist/commands/superadmin/index.js.map +1 -0
- package/dist/commands/tenant/index.d.ts +6 -0
- package/dist/commands/tenant/index.d.ts.map +1 -0
- package/dist/commands/tenant/index.js +192 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/addon-sign.d.ts +23 -0
- package/dist/lib/addon-sign.d.ts.map +1 -0
- package/dist/lib/addon-sign.js +39 -0
- package/dist/lib/addon-sign.js.map +1 -0
- package/dist/lib/addon-sign.test.d.ts +2 -0
- package/dist/lib/addon-sign.test.d.ts.map +1 -0
- package/dist/lib/addon-sign.test.js +27 -0
- package/dist/lib/addon-sign.test.js.map +1 -0
- package/dist/lib/cdn.d.ts +25 -0
- package/dist/lib/cdn.d.ts.map +1 -0
- package/dist/lib/cdn.js +131 -0
- package/dist/lib/cdn.js.map +1 -0
- package/dist/lib/cloudflare.d.ts +133 -0
- package/dist/lib/cloudflare.d.ts.map +1 -0
- package/dist/lib/cloudflare.js +435 -0
- package/dist/lib/cloudflare.js.map +1 -0
- package/dist/lib/config.d.ts +96 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +132 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/env.d.ts +8 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +64 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/hosts.d.ts +194 -0
- package/dist/lib/hosts.d.ts.map +1 -0
- package/dist/lib/hosts.js +183 -0
- package/dist/lib/hosts.js.map +1 -0
- package/dist/lib/logger.d.ts +68 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +130 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/nginx-config.d.ts +78 -0
- package/dist/lib/nginx-config.d.ts.map +1 -0
- package/dist/lib/nginx-config.js +736 -0
- package/dist/lib/nginx-config.js.map +1 -0
- package/dist/lib/ops/addon-dev.d.ts +93 -0
- package/dist/lib/ops/addon-dev.d.ts.map +1 -0
- package/dist/lib/ops/addon-dev.js +237 -0
- package/dist/lib/ops/addon-dev.js.map +1 -0
- package/dist/lib/ops/addon-quality.d.ts +38 -0
- package/dist/lib/ops/addon-quality.d.ts.map +1 -0
- package/dist/lib/ops/addon-quality.js +338 -0
- package/dist/lib/ops/addon-quality.js.map +1 -0
- package/dist/lib/ops/addon-routes.d.ts +49 -0
- package/dist/lib/ops/addon-routes.d.ts.map +1 -0
- package/dist/lib/ops/addon-routes.js +189 -0
- package/dist/lib/ops/addon-routes.js.map +1 -0
- package/dist/lib/ops/addon.d.ts +120 -0
- package/dist/lib/ops/addon.d.ts.map +1 -0
- package/dist/lib/ops/addon.js +260 -0
- package/dist/lib/ops/addon.js.map +1 -0
- package/dist/lib/ops/cdn.d.ts +87 -0
- package/dist/lib/ops/cdn.d.ts.map +1 -0
- package/dist/lib/ops/cdn.js +170 -0
- package/dist/lib/ops/cdn.js.map +1 -0
- package/dist/lib/ops/cf.d.ts +36 -0
- package/dist/lib/ops/cf.d.ts.map +1 -0
- package/dist/lib/ops/cf.js +114 -0
- package/dist/lib/ops/cf.js.map +1 -0
- package/dist/lib/ops/compose.d.ts +95 -0
- package/dist/lib/ops/compose.d.ts.map +1 -0
- package/dist/lib/ops/compose.js +165 -0
- package/dist/lib/ops/compose.js.map +1 -0
- package/dist/lib/ops/core.d.ts +117 -0
- package/dist/lib/ops/core.d.ts.map +1 -0
- package/dist/lib/ops/core.js +322 -0
- package/dist/lib/ops/core.js.map +1 -0
- package/dist/lib/ops/db.d.ts +116 -0
- package/dist/lib/ops/db.d.ts.map +1 -0
- package/dist/lib/ops/db.js +351 -0
- package/dist/lib/ops/db.js.map +1 -0
- package/dist/lib/ops/dns.d.ts +111 -0
- package/dist/lib/ops/dns.d.ts.map +1 -0
- package/dist/lib/ops/dns.js +306 -0
- package/dist/lib/ops/dns.js.map +1 -0
- package/dist/lib/ops/image.d.ts +94 -0
- package/dist/lib/ops/image.d.ts.map +1 -0
- package/dist/lib/ops/image.js +159 -0
- package/dist/lib/ops/image.js.map +1 -0
- package/dist/lib/ops/nginx.d.ts +114 -0
- package/dist/lib/ops/nginx.d.ts.map +1 -0
- package/dist/lib/ops/nginx.js +388 -0
- package/dist/lib/ops/nginx.js.map +1 -0
- package/dist/lib/ops/redis.d.ts +7 -0
- package/dist/lib/ops/redis.d.ts.map +1 -0
- package/dist/lib/ops/redis.js +35 -0
- package/dist/lib/ops/redis.js.map +1 -0
- package/dist/lib/ops/ssh.d.ts +127 -0
- package/dist/lib/ops/ssh.d.ts.map +1 -0
- package/dist/lib/ops/ssh.js +269 -0
- package/dist/lib/ops/ssh.js.map +1 -0
- package/dist/lib/prompts.d.ts +46 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +113 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/sast.d.ts +43 -0
- package/dist/lib/sast.d.ts.map +1 -0
- package/dist/lib/sast.js +79 -0
- package/dist/lib/sast.js.map +1 -0
- package/dist/lib/sast.test.d.ts +2 -0
- package/dist/lib/sast.test.d.ts.map +1 -0
- package/dist/lib/sast.test.js +33 -0
- package/dist/lib/sast.test.js.map +1 -0
- package/dist/lib/shell.d.ts +61 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +183 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/ssh-config.d.ts +37 -0
- package/dist/lib/ssh-config.d.ts.map +1 -0
- package/dist/lib/ssh-config.js +122 -0
- package/dist/lib/ssh-config.js.map +1 -0
- package/dist/lib/tenant-scope.d.ts +38 -0
- package/dist/lib/tenant-scope.d.ts.map +1 -0
- package/dist/lib/tenant-scope.js +129 -0
- package/dist/lib/tenant-scope.js.map +1 -0
- package/dist/lib/tenant-scope.test.d.ts +2 -0
- package/dist/lib/tenant-scope.test.d.ts.map +1 -0
- package/dist/lib/tenant-scope.test.js +223 -0
- package/dist/lib/tenant-scope.test.js.map +1 -0
- package/package.json +58 -0
- package/templates/bootstrap/.env.template +54 -0
- package/templates/bootstrap/docker-compose.yml +145 -0
- package/templates/vhost.conf.tmpl +446 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CiCore CLI - Cache Management Commands
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive cache clearing for all layers:
|
|
5
|
+
* - PHP OPcache + Route Cache
|
|
6
|
+
* - Redis cache
|
|
7
|
+
* - Nuxt/Vue cache
|
|
8
|
+
* - Nginx cache
|
|
9
|
+
* - Cloudflare CDN cache
|
|
10
|
+
* - Addon cache
|
|
11
|
+
*/
|
|
12
|
+
import { log, spinner } from '../../lib/logger.js';
|
|
13
|
+
import { exec, ssh } from '../../lib/shell.js';
|
|
14
|
+
import { confirm } from '../../lib/prompts.js';
|
|
15
|
+
import { getSSHHost, buildSSHCommand } from '../../lib/ssh-config.js';
|
|
16
|
+
import { getCloudflareToken, getZoneByDomain, purgeAllCache, purgeCacheByUrls } from '../../lib/cloudflare.js';
|
|
17
|
+
import { flushLocalCaches } from './flush-local.js';
|
|
18
|
+
export function registerCacheCommands(program) {
|
|
19
|
+
const cache = program
|
|
20
|
+
.command('cache')
|
|
21
|
+
.description('Cache management commands');
|
|
22
|
+
// vu cache:clear - Main command with full functionality
|
|
23
|
+
cache
|
|
24
|
+
.command('clear')
|
|
25
|
+
.description('Clear all caches (PHP, Redis, Nuxt, Nginx, Addon, Cloudflare)')
|
|
26
|
+
.option('-h, --host <host>', 'SSH host for remote server', 'cicore')
|
|
27
|
+
.option('-c, --core <core>', 'Core name', 'core1')
|
|
28
|
+
.option('-d, --domain <domain>', 'Domain for Cloudflare purge (auto-detected if not provided)')
|
|
29
|
+
.option('--php', 'Clear only PHP OPcache + Route cache')
|
|
30
|
+
.option('--redis', 'Clear only Redis cache')
|
|
31
|
+
.option('--nuxt', 'Clear only Nuxt cache')
|
|
32
|
+
.option('--nginx', 'Clear only Nginx cache')
|
|
33
|
+
.option('--addon', 'Clear only addon route cache')
|
|
34
|
+
.option('--cf', 'Clear only Cloudflare cache')
|
|
35
|
+
.option('--no-cloudflare', 'Skip Cloudflare cache purge')
|
|
36
|
+
.option('-y, --yes', 'Skip confirmation')
|
|
37
|
+
.action(async (options) => {
|
|
38
|
+
await clearAllCaches(options);
|
|
39
|
+
});
|
|
40
|
+
// ci cache:flush — local dev-shell (addon_dev_* containers, no SSH)
|
|
41
|
+
cache
|
|
42
|
+
.command('flush')
|
|
43
|
+
.description('Lokal dev-shell cache temizle: nginx PHP routes regenerate + PHP/Nuxt restart + Redis FLUSHALL + addon route cache')
|
|
44
|
+
.option('--skip-php', 'PHP container restart atla')
|
|
45
|
+
.option('--skip-nuxt', 'Nuxt container restart atla')
|
|
46
|
+
.option('--skip-redis', 'Redis FLUSHALL atla')
|
|
47
|
+
.option('--skip-addon-routes', 'Addon route cache file silme atla')
|
|
48
|
+
.option('--no-rebuild-routes', 'nginx PHP routes regex regenerate atla (Faz 4)')
|
|
49
|
+
.action(async (options) => {
|
|
50
|
+
await flushLocalCaches(options);
|
|
51
|
+
});
|
|
52
|
+
// vu cache:cloudflare
|
|
53
|
+
cache
|
|
54
|
+
.command('cloudflare <domain>')
|
|
55
|
+
.alias('cf')
|
|
56
|
+
.description('Clear Cloudflare CDN cache')
|
|
57
|
+
.option('-u, --urls <urls...>', 'Specific URLs to purge')
|
|
58
|
+
.action(async (domain, options) => {
|
|
59
|
+
await clearCloudflareCache(domain, options);
|
|
60
|
+
});
|
|
61
|
+
// vu cache:status
|
|
62
|
+
cache
|
|
63
|
+
.command('status')
|
|
64
|
+
.description('Show cache status')
|
|
65
|
+
.option('-h, --host <host>', 'SSH host for remote server', 'cicore')
|
|
66
|
+
.action(async (options) => {
|
|
67
|
+
await cacheStatus(options);
|
|
68
|
+
});
|
|
69
|
+
// vu cache:warm
|
|
70
|
+
cache
|
|
71
|
+
.command('warm')
|
|
72
|
+
.description('Warm up caches (preload)')
|
|
73
|
+
.option('-h, --host <host>', 'SSH host for remote server', 'cicore')
|
|
74
|
+
.option('-d, --domain <domain>', 'Domain to warm')
|
|
75
|
+
.action(async (options) => {
|
|
76
|
+
await warmCache(options);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// ============================================
|
|
80
|
+
// HELPERS
|
|
81
|
+
// ============================================
|
|
82
|
+
async function getHost(hostName) {
|
|
83
|
+
if (!hostName)
|
|
84
|
+
return null;
|
|
85
|
+
const host = await getSSHHost(hostName);
|
|
86
|
+
if (!host) {
|
|
87
|
+
log.error(`SSH host '${hostName}' not found`);
|
|
88
|
+
}
|
|
89
|
+
return host;
|
|
90
|
+
}
|
|
91
|
+
async function runCommand(host, localCmd, remoteCmd, options = {}) {
|
|
92
|
+
if (host) {
|
|
93
|
+
const args = buildSSHCommand(host, remoteCmd);
|
|
94
|
+
return await exec('ssh', args, { silent: options.silent ?? true });
|
|
95
|
+
}
|
|
96
|
+
// Local command - check if it's a docker command
|
|
97
|
+
if (localCmd.startsWith('docker ')) {
|
|
98
|
+
const parts = localCmd.split(' ');
|
|
99
|
+
return await exec(parts[0], parts.slice(1), { silent: options.silent ?? true });
|
|
100
|
+
}
|
|
101
|
+
return await exec('sh', ['-c', localCmd], { silent: options.silent ?? true });
|
|
102
|
+
}
|
|
103
|
+
async function clearAllCaches(options) {
|
|
104
|
+
const host = options.host || 'cicore';
|
|
105
|
+
const coreName = options.core || 'core1';
|
|
106
|
+
log.title('🗑️ Clear All Caches');
|
|
107
|
+
log.blank();
|
|
108
|
+
log.kv('Host', host);
|
|
109
|
+
log.kv('Core', coreName);
|
|
110
|
+
// Auto-detect domain from server if not provided
|
|
111
|
+
let domain = options.domain;
|
|
112
|
+
if (!domain) {
|
|
113
|
+
const domainSpinner = spinner('Auto-detecting domain...').start();
|
|
114
|
+
const domainResult = await ssh(`grep -E '^(APP_DOMAIN|NUXT_PUBLIC_HOST)=' /home/cores/${coreName}/.env 2>/dev/null | head -1 | cut -d= -f2`, { silent: true, host });
|
|
115
|
+
if (domainResult.success && domainResult.stdout.trim()) {
|
|
116
|
+
domain = domainResult.stdout.trim();
|
|
117
|
+
domainSpinner.succeed(`Domain detected: ${domain}`);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
domainSpinner.warn('Could not detect domain - Cloudflare purge will be skipped');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log.kv('Domain', domain);
|
|
125
|
+
}
|
|
126
|
+
log.blank();
|
|
127
|
+
// Determine which caches to clear
|
|
128
|
+
const specificCache = options.php || options.redis || options.nuxt || options.nginx || options.addon || options.cf;
|
|
129
|
+
const clearAll = !specificCache;
|
|
130
|
+
const results = [];
|
|
131
|
+
// Confirmation
|
|
132
|
+
if (!options.yes && clearAll) {
|
|
133
|
+
const confirmed = await confirm(`Clear ALL caches for ${coreName}${domain ? ` (${domain})` : ''}?`, true);
|
|
134
|
+
if (!confirmed) {
|
|
135
|
+
log.warn('Cancelled');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// 1. PHP OPcache + Route Cache
|
|
140
|
+
if (clearAll || options.php) {
|
|
141
|
+
const phpSpinner = spinner('Clearing PHP OPcache...').start();
|
|
142
|
+
// Clear OPcache via PHP-FPM restart (most reliable)
|
|
143
|
+
const opcacheResult = await ssh('docker restart cicore_php', { silent: true, host });
|
|
144
|
+
if (opcacheResult.success) {
|
|
145
|
+
phpSpinner.succeed('PHP OPcache cleared (container restarted)');
|
|
146
|
+
results.push({ name: 'PHP OPcache', success: true, message: 'Container restarted' });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
phpSpinner.warn('PHP OPcache clear failed');
|
|
150
|
+
results.push({ name: 'PHP OPcache', success: false, message: opcacheResult.stderr });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// 2. Addon Route Cache (Critical for new addons!)
|
|
154
|
+
if (clearAll || options.addon) {
|
|
155
|
+
const addonSpinner = spinner('Clearing addon route cache...').start();
|
|
156
|
+
// Delete all PHP cache files including addon_routes.cache.php
|
|
157
|
+
const cacheResult = await ssh(`docker exec cicore_php rm -rf /var/www/storage/cache/*.php /var/www/storage/cache/*.json 2>/dev/null; echo "cleared"`, { silent: true, host });
|
|
158
|
+
if (cacheResult.success) {
|
|
159
|
+
addonSpinner.succeed('Addon route cache cleared');
|
|
160
|
+
results.push({ name: 'Addon Routes', success: true, message: 'Cache files deleted' });
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
addonSpinner.warn('Addon route cache clear failed');
|
|
164
|
+
results.push({ name: 'Addon Routes', success: false, message: cacheResult.stderr });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// 3. Redis Cache
|
|
168
|
+
if (clearAll || options.redis) {
|
|
169
|
+
const redisSpinner = spinner('Clearing Redis cache...').start();
|
|
170
|
+
// Get Redis password from services .env
|
|
171
|
+
const redisPassResult = await ssh(`grep REDIS_PASSWORD /home/services/.env 2>/dev/null | cut -d= -f2`, { silent: true, host });
|
|
172
|
+
const redisPassword = redisPassResult.stdout.trim();
|
|
173
|
+
let redisCmd = 'docker exec cicore_global_redis redis-cli FLUSHALL';
|
|
174
|
+
if (redisPassword) {
|
|
175
|
+
redisCmd = `docker exec cicore_global_redis redis-cli -a "${redisPassword}" FLUSHALL 2>/dev/null`;
|
|
176
|
+
}
|
|
177
|
+
const redisResult = await ssh(redisCmd, { silent: true, host });
|
|
178
|
+
if (redisResult.success && redisResult.stdout.includes('OK')) {
|
|
179
|
+
redisSpinner.succeed('Redis cache cleared');
|
|
180
|
+
results.push({ name: 'Redis', success: true, message: 'FLUSHALL OK' });
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
redisSpinner.warn('Redis cache clear failed');
|
|
184
|
+
results.push({ name: 'Redis', success: false, message: redisResult.stderr || 'Auth failed or container not found' });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// 4. Nuxt Cache
|
|
188
|
+
if (clearAll || options.nuxt) {
|
|
189
|
+
const nuxtSpinner = spinner('Clearing Nuxt cache...').start();
|
|
190
|
+
// Clear Nuxt cache and restart
|
|
191
|
+
const nuxtResult = await ssh('docker exec cicore_nuxt rm -rf /app/.nuxt/cache /app/.output/cache 2>/dev/null; docker restart cicore_nuxt', { silent: true, host });
|
|
192
|
+
if (nuxtResult.success) {
|
|
193
|
+
nuxtSpinner.succeed('Nuxt cache cleared (container restarted)');
|
|
194
|
+
results.push({ name: 'Nuxt', success: true, message: 'Cache cleared & restarted' });
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
nuxtSpinner.warn('Nuxt cache clear had issues');
|
|
198
|
+
results.push({ name: 'Nuxt', success: false, message: nuxtResult.stderr });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// 5. Nginx Cache
|
|
202
|
+
if (clearAll || options.nginx) {
|
|
203
|
+
const nginxSpinner = spinner('Clearing Nginx cache...').start();
|
|
204
|
+
const nginxResult = await ssh('docker exec cicore_global_nginx sh -c "rm -rf /var/cache/nginx/* 2>/dev/null; nginx -s reload"', { silent: true, host });
|
|
205
|
+
if (nginxResult.success) {
|
|
206
|
+
nginxSpinner.succeed('Nginx cache cleared');
|
|
207
|
+
results.push({ name: 'Nginx', success: true, message: 'Cache cleared & reloaded' });
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
nginxSpinner.warn('Nginx cache clear failed');
|
|
211
|
+
results.push({ name: 'Nginx', success: false, message: nginxResult.stderr });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// 6. Cloudflare CDN Cache
|
|
215
|
+
if ((clearAll || options.cf) && options.cloudflare !== false && domain) {
|
|
216
|
+
const cfSpinner = spinner(`Purging Cloudflare cache for ${domain}...`).start();
|
|
217
|
+
const token = await getCloudflareToken();
|
|
218
|
+
if (!token) {
|
|
219
|
+
cfSpinner.warn('Cloudflare token not configured - skipping');
|
|
220
|
+
results.push({ name: 'Cloudflare', success: false, message: 'Token not configured' });
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
const zone = await getZoneByDomain(domain);
|
|
224
|
+
if (!zone) {
|
|
225
|
+
cfSpinner.warn(`Domain ${domain} not found in Cloudflare`);
|
|
226
|
+
results.push({ name: 'Cloudflare', success: false, message: 'Domain not found' });
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
const purgeResult = await purgeAllCache(zone.id);
|
|
230
|
+
if (purgeResult.success) {
|
|
231
|
+
cfSpinner.succeed(`Cloudflare cache purged for ${domain}`);
|
|
232
|
+
results.push({ name: 'Cloudflare', success: true, message: `Zone ${zone.name} purged` });
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
cfSpinner.warn(`Cloudflare purge failed: ${purgeResult.error}`);
|
|
236
|
+
results.push({ name: 'Cloudflare', success: false, message: purgeResult.error || 'Unknown error' });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Summary
|
|
242
|
+
log.blank();
|
|
243
|
+
const successCount = results.filter(r => r.success).length;
|
|
244
|
+
const totalCount = results.length;
|
|
245
|
+
log.box(`Cache Clear Summary (${successCount}/${totalCount} successful)`, results.map(r => `${r.success ? '✅' : '⚠️'} ${r.name}: ${r.message}`));
|
|
246
|
+
if (successCount === totalCount) {
|
|
247
|
+
log.blank();
|
|
248
|
+
log.success('All caches cleared successfully!');
|
|
249
|
+
if (domain) {
|
|
250
|
+
log.info(`Tip: Hard refresh browser (Ctrl+Shift+R) on ${domain}`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async function clearCloudflareCache(domain, options) {
|
|
255
|
+
log.title(`☁️ Clear Cloudflare Cache: ${domain}`);
|
|
256
|
+
log.blank();
|
|
257
|
+
const token = await getCloudflareToken();
|
|
258
|
+
if (!token) {
|
|
259
|
+
log.error('Cloudflare token not configured. Run: vu cloudflare auth');
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const zone = await getZoneByDomain(domain);
|
|
263
|
+
if (!zone) {
|
|
264
|
+
log.error(`Domain ${domain} not found in Cloudflare`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
log.kv('Zone', zone.name);
|
|
268
|
+
log.kv('Zone ID', zone.id);
|
|
269
|
+
log.blank();
|
|
270
|
+
if (options.urls && options.urls.length > 0) {
|
|
271
|
+
// Purge specific URLs
|
|
272
|
+
const urls = options.urls.flatMap(u => u.split(',').map(url => url.trim()));
|
|
273
|
+
log.info(`Purging ${urls.length} URL(s)...`);
|
|
274
|
+
urls.forEach(url => log.item(url));
|
|
275
|
+
const purgeSpinner = spinner('Purging cache...').start();
|
|
276
|
+
const result = await purgeCacheByUrls(zone.id, urls);
|
|
277
|
+
if (result.success) {
|
|
278
|
+
purgeSpinner.succeed(`Cache purged for ${urls.length} URL(s)`);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
purgeSpinner.fail(`Cache purge failed: ${result.error}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Purge everything
|
|
286
|
+
const confirmed = await confirm(`Purge ALL cache for ${domain}? This cannot be undone.`);
|
|
287
|
+
if (!confirmed) {
|
|
288
|
+
log.info('Cancelled');
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const purgeSpinner = spinner('Purging all cache...').start();
|
|
292
|
+
const result = await purgeAllCache(zone.id);
|
|
293
|
+
if (result.success) {
|
|
294
|
+
purgeSpinner.succeed('All cache purged successfully');
|
|
295
|
+
log.info('Note: It may take up to 30 seconds for the purge to propagate globally.');
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
purgeSpinner.fail(`Cache purge failed: ${result.error}`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
async function cacheStatus(options) {
|
|
303
|
+
log.title('📊 Cache Status');
|
|
304
|
+
log.blank();
|
|
305
|
+
const host = await getHost(options.host);
|
|
306
|
+
if (host) {
|
|
307
|
+
log.kv('Target', `${host.name} (${host.hostname})`);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
log.kv('Target', 'Local Docker');
|
|
311
|
+
}
|
|
312
|
+
log.blank();
|
|
313
|
+
// 1. PHP OPcache Status
|
|
314
|
+
const phpSpinner = spinner('Checking PHP OPcache...').start();
|
|
315
|
+
const phpCmd = `docker exec cicore_php php -r "
|
|
316
|
+
if (function_exists('opcache_get_status')) {
|
|
317
|
+
\\\$status = opcache_get_status(false);
|
|
318
|
+
if (\\\$status) {
|
|
319
|
+
echo json_encode([
|
|
320
|
+
'enabled' => \\\$status['opcache_enabled'],
|
|
321
|
+
'memory_usage' => round(\\\$status['memory_usage']['used_memory'] / 1024 / 1024, 2),
|
|
322
|
+
'memory_free' => round(\\\$status['memory_usage']['free_memory'] / 1024 / 1024, 2),
|
|
323
|
+
'hit_rate' => round(\\\$status['opcache_statistics']['opcache_hit_rate'], 2),
|
|
324
|
+
'scripts' => \\\$status['opcache_statistics']['num_cached_scripts']
|
|
325
|
+
]);
|
|
326
|
+
} else {
|
|
327
|
+
echo json_encode(['enabled' => false]);
|
|
328
|
+
}
|
|
329
|
+
} else {
|
|
330
|
+
echo json_encode(['enabled' => false, 'error' => 'OPcache not available']);
|
|
331
|
+
}
|
|
332
|
+
"`;
|
|
333
|
+
const phpResult = await runCommand(host, phpCmd, phpCmd);
|
|
334
|
+
phpSpinner.stop();
|
|
335
|
+
try {
|
|
336
|
+
const phpStatus = JSON.parse(phpResult.stdout);
|
|
337
|
+
log.info('PHP OPcache:');
|
|
338
|
+
if (phpStatus.enabled) {
|
|
339
|
+
log.item(`Status: ✅ Enabled`);
|
|
340
|
+
log.item(`Memory: ${phpStatus.memory_usage}MB used / ${phpStatus.memory_free}MB free`);
|
|
341
|
+
log.item(`Hit Rate: ${phpStatus.hit_rate}%`);
|
|
342
|
+
log.item(`Cached Scripts: ${phpStatus.scripts}`);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
log.item(`Status: ⚠️ Disabled`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
log.item('Status: ❌ Error checking');
|
|
350
|
+
}
|
|
351
|
+
log.blank();
|
|
352
|
+
// 2. Redis Status
|
|
353
|
+
const redisSpinner = spinner('Checking Redis...').start();
|
|
354
|
+
const redisCmd = `docker exec cicore_redis redis-cli INFO memory | grep -E "used_memory_human|maxmemory_human"`;
|
|
355
|
+
const redisResult = await runCommand(host, redisCmd, redisCmd);
|
|
356
|
+
redisSpinner.stop();
|
|
357
|
+
log.info('Redis:');
|
|
358
|
+
if (redisResult.success) {
|
|
359
|
+
const lines = redisResult.stdout.split('\n').filter(l => l.trim());
|
|
360
|
+
lines.forEach(line => {
|
|
361
|
+
const [key, value] = line.split(':');
|
|
362
|
+
if (key && value) {
|
|
363
|
+
log.item(`${key.trim()}: ${value.trim()}`);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
// Get key count
|
|
367
|
+
const keysCmd = `docker exec cicore_redis redis-cli DBSIZE`;
|
|
368
|
+
const keysResult = await runCommand(host, keysCmd, keysCmd);
|
|
369
|
+
if (keysResult.success) {
|
|
370
|
+
log.item(`Keys: ${keysResult.stdout.trim()}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
log.item('Status: ❌ Error checking');
|
|
375
|
+
}
|
|
376
|
+
log.blank();
|
|
377
|
+
// 3. Nginx Cache Status
|
|
378
|
+
const nginxSpinner = spinner('Checking Nginx cache...').start();
|
|
379
|
+
const nginxCmd = `docker exec cicore_nginx sh -c "du -sh /var/cache/nginx 2>/dev/null || echo '0 /var/cache/nginx'"`;
|
|
380
|
+
const nginxResult = await runCommand(host, nginxCmd, nginxCmd);
|
|
381
|
+
nginxSpinner.stop();
|
|
382
|
+
log.info('Nginx Cache:');
|
|
383
|
+
if (nginxResult.success) {
|
|
384
|
+
const size = nginxResult.stdout.split('\t')[0] || nginxResult.stdout.split(' ')[0];
|
|
385
|
+
log.item(`Cache Size: ${size.trim()}`);
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
log.item('Status: ❌ Error checking');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
async function warmCache(options) {
|
|
392
|
+
log.title('🔥 Warm Cache');
|
|
393
|
+
log.blank();
|
|
394
|
+
const host = await getHost(options.host);
|
|
395
|
+
if (host) {
|
|
396
|
+
log.kv('Target', `${host.name} (${host.hostname})`);
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
log.kv('Target', 'Local Docker');
|
|
400
|
+
}
|
|
401
|
+
const domain = options.domain || 'localhost';
|
|
402
|
+
log.kv('Domain', domain);
|
|
403
|
+
log.blank();
|
|
404
|
+
// Warm PHP OPcache by loading key files
|
|
405
|
+
const phpSpinner = spinner('Warming PHP OPcache...').start();
|
|
406
|
+
const phpCmd = `docker exec cicore_php php -r "
|
|
407
|
+
// Load core files to warm OPcache
|
|
408
|
+
\\\$files = [
|
|
409
|
+
'/var/www/vendor/autoload.php',
|
|
410
|
+
'/var/www/public/index.php',
|
|
411
|
+
];
|
|
412
|
+
|
|
413
|
+
foreach (\\\$files as \\\$file) {
|
|
414
|
+
if (file_exists(\\\$file)) {
|
|
415
|
+
include_once \\\$file;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// Precompile addon files
|
|
420
|
+
\\\$addonFiles = glob('/var/www/cores/*/addons/*/Backend/**/*.php');
|
|
421
|
+
foreach (\\\$addonFiles as \\\$file) {
|
|
422
|
+
opcache_compile_file(\\\$file);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
echo 'OPcache warmed with ' . count(\\\$addonFiles) . ' addon files';
|
|
426
|
+
"`;
|
|
427
|
+
const phpResult = await runCommand(host, phpCmd, phpCmd);
|
|
428
|
+
if (phpResult.success) {
|
|
429
|
+
phpSpinner.succeed(phpResult.stdout.trim() || 'PHP OPcache warmed');
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
phpSpinner.warn('PHP OPcache warm had issues');
|
|
433
|
+
}
|
|
434
|
+
// Warm key URLs
|
|
435
|
+
const urlSpinner = spinner('Warming key URLs...').start();
|
|
436
|
+
const urls = [
|
|
437
|
+
`https://${domain}/`,
|
|
438
|
+
`https://${domain}/api/health`,
|
|
439
|
+
`https://api.${domain}/health`,
|
|
440
|
+
];
|
|
441
|
+
let warmedCount = 0;
|
|
442
|
+
for (const url of urls) {
|
|
443
|
+
const curlCmd = `curl -s -o /dev/null -w "%{http_code}" "${url}" 2>/dev/null || echo "000"`;
|
|
444
|
+
const result = await runCommand(host, curlCmd, curlCmd);
|
|
445
|
+
if (result.stdout.trim() === '200') {
|
|
446
|
+
warmedCount++;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
urlSpinner.succeed(`Warmed ${warmedCount}/${urls.length} URLs`);
|
|
450
|
+
log.blank();
|
|
451
|
+
log.success('Cache warming complete');
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/cache/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/check/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2I5D"}
|