{"record":{"id":"64a80d6735c12b3e","repo":"affaan-m/ECC","slug":"no-install-profile-module-ids-included-component","errorCode":null,"errorMessage":"No install profile, module IDs, included components, or legacy languages were provided","messagePattern":"No install profile, module IDs, included components, or legacy languages were provided","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/lib/install/request.js","lineNumber":136,"sourceCode":"  const legacyLanguages = dedupeStrings(dedupeStrings([\n    ...(Array.isArray(options.legacyLanguages) ? options.legacyLanguages : []),\n    ...(Array.isArray(options.languages) ? options.languages : []),\n  ]).map(language => language.toLowerCase()));\n  const hasManifestBaseSelection = Boolean(profileId) || moduleIds.length > 0 || includeComponentIds.length > 0;\n  const hasNonLocaleManifestSelection = Boolean(profileId)\n    || moduleIds.length > 0\n    || requestedIncludeComponentIds.length > 0\n    || excludeComponentIds.length > 0;\n  const usingManifestMode = hasManifestBaseSelection || excludeComponentIds.length > 0;\n\n  if (hasNonLocaleManifestSelection && legacyLanguages.length > 0) {\n    throw new Error(\n      'Legacy language arguments cannot be combined with --profile, --modules, --with, --without, or manifest config selections'\n    );\n  }\n\n  if (!options.help && !hasManifestBaseSelection && legacyLanguages.length === 0) {\n    throw new Error('No install profile, module IDs, included components, or legacy languages were provided');\n  }\n\n  return {\n    mode: legacyLanguages.length > 0\n      ? 'legacy-compat'\n      : (usingManifestMode ? 'manifest' : 'legacy-compat'),\n    target,\n    profileId,\n    moduleIds,\n    includeComponentIds,\n    excludeComponentIds,\n    legacyLanguages,\n    configPath: config?.path || options.configPath || null,\n  };\n}\n\nmodule.exports = {\n  LEGACY_INSTALL_TARGETS,","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/affaan-m/ECC/blob/01e15490f04e29cfefe3896951f43db46994d8ee/scripts/lib/install/request.js#L118-L154","documentation":"Thrown by normalizeInstallRequest() when the request has no profile, no module IDs, no included components, no legacy languages, and help was not requested. It is the empty-input guard that prevents the installer from doing nothing or defaulting silently.","triggerScenarios":"Running `npx ecc install` with no arguments and no config file, or a config file that selects nothing.","commonSituations":"First-time users who expect a default profile; CI jobs that build the install command dynamically and produce an empty argument list; a config file with only comments.","solutions":["Pass an explicit selector: --profile, --modules, --with, or a positional language.","Run with --help to see available profiles and modules.","Populate a config file (referenced via --config) with at least one selection."],"exampleFix":"# before\nnpx ecc install\n# after\nnpx ecc install --profile base","handlingStrategy":"validation","validationCode":"function hasAnySelection(options) {\n  return Boolean(options?.profileId)\n    || (options?.moduleIds?.length ?? 0) > 0\n    || (options?.includeComponentIds?.length ?? 0) > 0\n    || (options?.legacyLanguages?.length ?? 0) > 0\n    || (options?.languages?.length ?? 0) > 0;\n}\nif (!options.help && !hasAnySelection(options)) {\n  throw new Error('No install selection provided. Pass --profile, --modules, --with, or a language.');\n}","typeGuard":"function hasSelection(options) {\n  return Boolean(options?.profileId)\n    || (options?.moduleIds?.length ?? 0) > 0\n    || (options?.includeComponentIds?.length ?? 0) > 0\n    || (options?.languages?.length ?? 0) > 0;\n}","tryCatchPattern":"try {\n  request = normalizeInstallRequest(options);\n} catch (e) {\n  if (/No install profile, module IDs/.test(e.message)) {\n    options.profileId = 'base';\n    request = normalizeInstallRequest(options);\n  } else throw e;\n}","preventionTips":["Default to a named profile in wrapper scripts so empty argv never reaches the parser.","In CI, fail the job with a clear message if the install command would be empty.","Provide --help text that lists the canonical first-time install command."],"tags":["cli","install","arguments","validation"],"backgroundTag":null,"analyzedSha":"01e15490f04e29cfefe3896951f43db46994d8ee","analyzedAt":"2026-08-13T00:31:08.655Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}