fivocell 5.1.0 → 5.2.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.
@@ -88,6 +88,12 @@ function parseArgs(argv) {
88
88
  }
89
89
  const args = parseArgs(process.argv.slice(2));
90
90
  const cmd = args[0] || '';
91
+ function getArg(name) {
92
+ const idx = args.indexOf(name);
93
+ if (idx === -1)
94
+ return null;
95
+ return args[idx + 1] || null;
96
+ }
91
97
  // Module-level state for watch-editor (must be declared before switch)
92
98
  let activeMonitor = null;
93
99
  let monitorStateFile = null;
@@ -195,6 +201,9 @@ switch (cmd) {
195
201
  case 'memory':
196
202
  doMemory();
197
203
  break;
204
+ case 'ci':
205
+ doCI();
206
+ break;
198
207
  case 'cross-project':
199
208
  doCrossProject();
200
209
  break;
@@ -4123,4 +4132,175 @@ function doMemory() {
4123
4132
  console.log(C.dim(' cell memory stats Show memory stats'));
4124
4133
  console.log();
4125
4134
  }
4135
+ function doCI() {
4136
+ const sub = args[1] || '';
4137
+ const cwd = process.cwd();
4138
+ if (sub === 'report' || sub === 'r') {
4139
+ const buildId = getArg('--build-id') || `local-${Date.now()}`;
4140
+ const status = getArg('--status') || 'success';
4141
+ const stage = getArg('--stage') || 'build';
4142
+ const commit = getArg('--commit') || '';
4143
+ const message = getArg('--message') || '';
4144
+ const author = getArg('--author') || '';
4145
+ const platform = getArg('--platform') || 'local';
4146
+ const branch = getArg('--branch') || '';
4147
+ const duration = parseInt(getArg('--duration') || '0', 10);
4148
+ const logSnippet = getArg('--log') || '';
4149
+ console.log(C.bold(` ── CI Report Build ──\n`));
4150
+ try {
4151
+ const { reportCIBuild } = require('../../06-memory/stores/ci-reporter');
4152
+ const { detectProject } = require('../setup/setup');
4153
+ const project = detectProject(cwd).name;
4154
+ const id = reportCIBuild({
4155
+ project,
4156
+ branch,
4157
+ buildId,
4158
+ status: status,
4159
+ duration,
4160
+ stage,
4161
+ commitHash: commit,
4162
+ commitMessage: message,
4163
+ author,
4164
+ timestamp: new Date().toISOString(),
4165
+ logSnippet,
4166
+ ciPlatform: platform,
4167
+ });
4168
+ console.log(C.success(` Build reported (event #${id}): ${status} [${stage}]`));
4169
+ }
4170
+ catch (e) {
4171
+ console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
4172
+ }
4173
+ console.log();
4174
+ return;
4175
+ }
4176
+ if (sub === 'report-test' || sub === 'rt') {
4177
+ const buildId = getArg('--build-id') || `local-${Date.now()}`;
4178
+ const total = parseInt(getArg('--total') || '0', 10);
4179
+ const passed = parseInt(getArg('--passed') || '0', 10);
4180
+ const failed = parseInt(getArg('--failed') || '0', 10);
4181
+ const skipped = parseInt(getArg('--skipped') || '0', 10);
4182
+ const duration = parseInt(getArg('--duration') || '0', 10);
4183
+ const coverage = getArg('--coverage') ? parseFloat(getArg('--coverage')) : undefined;
4184
+ const branch = getArg('--branch') || '';
4185
+ console.log(C.bold(` ── CI Report Tests ──\n`));
4186
+ try {
4187
+ const { reportCITest } = require('../../06-memory/stores/ci-reporter');
4188
+ const { detectProject } = require('../setup/setup');
4189
+ const project = detectProject(cwd).name;
4190
+ const failedTests = [];
4191
+ const id = reportCITest({
4192
+ project,
4193
+ branch,
4194
+ buildId,
4195
+ totalTests: total,
4196
+ passed,
4197
+ failed,
4198
+ skipped,
4199
+ duration,
4200
+ failedTests,
4201
+ coverage,
4202
+ timestamp: new Date().toISOString(),
4203
+ });
4204
+ const color = failed > 0 ? C.warn : C.success;
4205
+ console.log(color(` Tests reported (event #${id}): ${passed}/${total} passed`));
4206
+ }
4207
+ catch (e) {
4208
+ console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
4209
+ }
4210
+ console.log();
4211
+ return;
4212
+ }
4213
+ if (sub === 'report-deploy' || sub === 'rd') {
4214
+ const env = getArg('--env') || 'local';
4215
+ const status = getArg('--status') || 'success';
4216
+ const version = getArg('--version') || '0.0.0';
4217
+ const duration = parseInt(getArg('--duration') || '0', 10);
4218
+ console.log(C.bold(` ── CI Report Deploy ──\n`));
4219
+ try {
4220
+ const { reportCIDeploy } = require('../../06-memory/stores/ci-reporter');
4221
+ const { detectProject } = require('../setup/setup');
4222
+ const project = detectProject(cwd).name;
4223
+ const id = reportCIDeploy({
4224
+ project,
4225
+ environment: env,
4226
+ status: status,
4227
+ version,
4228
+ duration,
4229
+ timestamp: new Date().toISOString(),
4230
+ });
4231
+ const color = status === 'success' ? C.success : C.warn;
4232
+ console.log(color(` Deploy reported (event #${id}): ${status} ${version} → ${env}`));
4233
+ }
4234
+ catch (e) {
4235
+ console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
4236
+ }
4237
+ console.log();
4238
+ return;
4239
+ }
4240
+ if (sub === 'summary' || sub === 's') {
4241
+ const days = parseInt(args[2] || '30', 10);
4242
+ console.log(C.bold(` ── CI/CD Summary (${days} days) ──\n`));
4243
+ try {
4244
+ const { getCISummary, formatCISummary } = require('../../06-memory/stores/ci-reporter');
4245
+ const { detectProject } = require('../setup/setup');
4246
+ const project = detectProject(cwd).name;
4247
+ const summary = getCISummary(project, days);
4248
+ console.log(formatCISummary(summary));
4249
+ }
4250
+ catch (e) {
4251
+ console.log(C.warn(` CI summary failed: ${e?.message || String(e)}`));
4252
+ }
4253
+ console.log();
4254
+ return;
4255
+ }
4256
+ if (sub === 'failures' || sub === 'f') {
4257
+ const days = parseInt(args[2] || '30', 10);
4258
+ console.log(C.bold(` ── CI Failure Patterns (${days} days) ──\n`));
4259
+ try {
4260
+ const { detectCIFailurePatterns } = require('../../06-memory/stores/ci-reporter');
4261
+ const { detectProject } = require('../setup/setup');
4262
+ const project = detectProject(cwd).name;
4263
+ const patterns = detectCIFailurePatterns(project, days);
4264
+ if (patterns.length === 0) {
4265
+ console.log(C.dim(' No failure patterns detected.'));
4266
+ }
4267
+ else {
4268
+ for (const p of patterns) {
4269
+ const sevColor = p.severity === 'critical' ? C.warn : p.severity === 'warning' ? C.primary : C.dim;
4270
+ console.log(` ${sevColor(`[${p.severity}]`)} ${p.pattern}`);
4271
+ console.log(C.dim(` Count: ${p.count} | Branches: ${p.affectedBranches.join(', ')}`));
4272
+ console.log(C.dim(` Suggestion: ${p.suggestion}`));
4273
+ }
4274
+ }
4275
+ }
4276
+ catch (e) {
4277
+ console.log(C.warn(` CI failures failed: ${e?.message || String(e)}`));
4278
+ }
4279
+ console.log();
4280
+ return;
4281
+ }
4282
+ console.log(C.bold(' Cell CI/CD'));
4283
+ console.log(C.dim(' ──────────'));
4284
+ console.log(C.dim(' cell ci report Report build result'));
4285
+ console.log(C.dim(' cell ci report-test Report test results'));
4286
+ console.log(C.dim(' cell ci report-deploy Report deployment'));
4287
+ console.log(C.dim(' cell ci summary [days] CI/CD summary'));
4288
+ console.log(C.dim(' cell ci failures [days] Failure patterns'));
4289
+ console.log(C.dim(''));
4290
+ console.log(C.dim(' Options:'));
4291
+ console.log(C.dim(' --build-id ID Build identifier'));
4292
+ console.log(C.dim(' --status STATUS success|failure|cancelled'));
4293
+ console.log(C.dim(' --stage STAGE build|test|lint|deploy'));
4294
+ console.log(C.dim(' --commit HASH Commit hash'));
4295
+ console.log(C.dim(' --branch NAME Branch name'));
4296
+ console.log(C.dim(' --platform NAME github-actions|gitlab-ci|jenkins|local'));
4297
+ console.log(C.dim(' --duration MS Build duration in ms'));
4298
+ console.log(C.dim(' --env ENV staging|production|preview'));
4299
+ console.log(C.dim(' --version VER Version string'));
4300
+ console.log(C.dim(' --total N Total tests'));
4301
+ console.log(C.dim(' --passed N Passed tests'));
4302
+ console.log(C.dim(' --failed N Failed tests'));
4303
+ console.log(C.dim(' --coverage N Coverage percentage'));
4304
+ console.log();
4305
+ }
4126
4306
  //# sourceMappingURL=cli.js.map