{"record":{"id":"343cf2ecfe103ccd","repo":"quasarframework/quasar","slug":"no-icongenie-json-files-detected-in-folder","errorCode":null,"errorMessage":"No icongenie-*.json files detected in \"${folder}\" folder!","messagePattern":"No icongenie-\\*\\.json files detected in \"(.+?)\" folder!","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"icongenie/lib/utils/get-profile-files.js","lineNumber":17,"sourceCode":"import { basename } from 'node:path'\nimport { globSync } from 'tinyglobby'\nimport { lstatSync } from 'node:fs'\n\nimport { warn } from '../utils/logger.js'\n\nfunction parseFolder(folder) {\n  const profileFiles = globSync(`icongenie-*.json`, {\n    cwd: folder,\n    deep: 1,\n    absolute: true\n  })\n\n  const numberOfFiles = profileFiles.length\n\n  if (numberOfFiles === 0) {\n    warn(`No icongenie-*.json files detected in \"${folder}\" folder!`)\n    process.exit(1)\n  }\n\n  console.log(` Detected ${numberOfFiles} JSON profile file(s):\\n`)\n  console.log(` * ${folder}`)\n\n  profileFiles.forEach((file, index) => {\n    const prefix = index + 1 < profileFiles.length ? `├──` : `└──`\n\n    console.log(` ${prefix} ${basename(file)}`)\n  })\n\n  console.log()\n\n  return profileFiles\n}\n\nexport function getProfileFiles(profileParam) {","sourceCodeStart":1,"sourceCodeEnd":35,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/icongenie/lib/utils/get-profile-files.js#L1-L35","documentation":"parseFolder globs the given folder for icongenie-*.json profile files and, when it finds zero, warns and exits the process with code 1. icongenie's batch/profile mode requires at least one JSON profile file to know which icons to generate.","triggerScenarios":"Running `icongenie g --mode all -f <folder>` (or default profile discovery) against a folder containing no files matching icongenie-*.json.","commonSituations":"Profile files misnamed (e.g. my-icons.json or icon.profile.json instead of icongenie-*.json), profile files placed in a subfolder of the one passed with -f, or a typo in the -f path.","solutions":["Place at least one JSON profile named with the icongenie- prefix (e.g. icongenie-all.json) in the folder passed via -f/--filter","Check the folder path passed with -f is correct and is the direct folder containing the profiles","Rename existing profile JSON files to match the icongenie-*.json glob pattern"],"exampleFix":"// before\nquasar icongenie g -f ./assets/profiles  // holds icon-profiles.json\n// after\n// rename to assets/profiles/icongenie-icon.json (or move profiles to the folder root)\nquasar icongenie g -f ./assets/profiles","handlingStrategy":"validation","validationCode":"import { readdirSync } from 'node:fs'\nconst profiles = readdirSync(profileFolder).filter(f => /^icongenie-.*\\.json$/.test(f))\nif (profiles.length === 0) {\n  throw new Error(`No icongenie-*.json profiles in ${profileFolder}`)\n}","typeGuard":"const hasProfileFiles = (dir) => readdirSync(dir).some(f => f.startsWith('icongenie-') && f.endsWith('.json'))","tryCatchPattern":null,"preventionTips":["Follow the icongenie-*.json naming convention exactly for profile files","Verify the -f/--filter path points to the folder directly containing the profiles (not a parent)","List the folder contents in CI before running profile-based generation"],"tags":["icongenie","missing-file","exit-1"],"backgroundTag":"no-profile-files-found","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}