diff --git a/packages/cli/lib/templates/ReactTemplate.ts b/packages/cli/lib/templates/ReactTemplate.ts index c254cf5bd..a51f17ab6 100644 --- a/packages/cli/lib/templates/ReactTemplate.ts +++ b/packages/cli/lib/templates/ReactTemplate.ts @@ -109,8 +109,9 @@ export class ReactTemplate implements Template { const components = require("@igniteui/cli-core/packages/components"); const igResPath = path.join(projectPath, this.igniteResources); - if (fs.existsSync(igResPath)) { - let igniteuiResFile = fs.readFileSync(igResPath, "utf8"); + try { + const fd = fs.openSync(igResPath, fs.constants.O_RDWR | fs.constants.O_CREAT); + let igniteuiResFile = fs.readFileSync(fd, "utf8"); const freeVersionPath = "ignite-ui/"; const fullVersionPath = "@infragistics/ignite-ui-full/en/"; const dvPath = "@infragistics/ignite-ui-full/en/js/infragistics.dv.js"; @@ -123,16 +124,19 @@ export class ReactTemplate implements Template { igniteuiResFile = igniteuiResFile.replace(freeVersionPath, fullVersionPath); igniteuiResFile = igniteuiResFile.replace("-lite", ""); } - fs.writeFileSync(igResPath, igniteuiResFile); + fs.ftruncateSync(fd, 0); + fs.writeSync(fd, igniteuiResFile, 0); } if (dvDep && !igniteuiResFile.includes(dvPath)) { - fs.appendFileSync(igResPath, `${'\r\n// Ignite UI Charts Required JavaScript File\r\nimport "' - + dvPath + '";\r\n'}`); + const endPos = fs.fstatSync(fd).size; + fs.writeSync(fd, `\r\n// Ignite UI Charts Required JavaScript File\r\nimport "${dvPath}";\r\n`, endPos); } - } else { - Util.log(`igniteuiResources.js file NOT found!`); + fs.closeSync(fd); + } catch (err) { + Util.error(`Error while updating igniteuiResources.js: ${err.message}`); + throw err; } } diff --git a/packages/core/util/GoogleAnalytics.ts b/packages/core/util/GoogleAnalytics.ts index 7bff7571a..a5190b4bd 100644 --- a/packages/core/util/GoogleAnalytics.ts +++ b/packages/core/util/GoogleAnalytics.ts @@ -69,16 +69,16 @@ class GoogleAnalytics { protected static getUUID(): string { const absolutePath = path.join(this.userDataFolder, this.appFolder, this.userSettings); let UUID = ""; - if (fs.existsSync(absolutePath)) { - UUID = require(absolutePath).UUID; - } else { - const dirName = path.dirname(absolutePath); - if (!fs.existsSync(dirName)) { - fs.mkdirSync(dirName); - } + const dirName = path.dirname(absolutePath); + fs.mkdirSync(dirName, { recursive: true }); + try { + const fd = fs.openSync(absolutePath, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_RDWR, 0o600); UUID = this.getUserID(); - fs.writeFileSync(absolutePath, JSON.stringify({ UUID })); + fs.writeFileSync(fd, JSON.stringify({ UUID })); + fs.closeSync(fd); + } catch { + UUID = JSON.parse(fs.readFileSync(absolutePath, "utf8")).UUID; } return UUID;