UNPKG

@frontitude/cli

Version:

The Frontitude CLI enables product teams to integrate their code with Frontitude (frontitude.com), thus creating a single source of truth for their product copy, from design to development.

1 lines 2.42 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getTargetLanguageFilePath=exports.normalizeFilePath=exports.getFileDetails=exports.createFileIfNotExist=exports.createDirectoryRecursively=exports.readFileByPath=exports.writeToFile=exports.isPathOrFileExists=exports.idDirectoryExists=exports.writeFile=exports.readFile=void 0;const tslib_1=require("tslib"),path=tslib_1.__importStar(require("path")),fs_1=require("fs"),fs=tslib_1.__importStar(require("fs")),util=tslib_1.__importStar(require("util"));exports.readFile=util.promisify(fs.readFile),exports.writeFile=util.promisify(fs.writeFile);const idDirectoryExists=async e=>new Promise(((t,i)=>{try{fs.stat(e,((e,i)=>{t(i&&i.isDirectory())}))}catch(e){i()}}));exports.idDirectoryExists=idDirectoryExists;const isPathOrFileExists=e=>fs.existsSync(e);exports.isPathOrFileExists=isPathOrFileExists;const writeToFile=async(e,t)=>{try{await(0,exports.writeFile)(e,JSON.stringify(t,null,2)+"\n")}catch(e){if("ENOENT"!==e.code)throw e}};exports.writeToFile=writeToFile;const readFileByPath=async e=>{try{const t=await(0,exports.readFile)(e,{encoding:"utf8"});return JSON.parse(t.toString())}catch(e){if("ENOENT"!==e.code)throw e}};exports.readFileByPath=readFileByPath;const createDirectoryRecursively=async e=>{await fs_1.promises.mkdir(e,{recursive:!0})};exports.createDirectoryRecursively=createDirectoryRecursively;const createFileIfNotExist=async e=>{(0,exports.isPathOrFileExists)(e)||(await(0,exports.createDirectoryRecursively)(path.dirname(e)),await(0,exports.writeFile)(e,""))};exports.createFileIfNotExist=createFileIfNotExist;const getFileDetails=(e="")=>{const t=path.extname(e),i=(t.startsWith(".")?t.substring(1):t).toLowerCase();return{fileExtension:t,fileType:i,fileNameWithoutExtension:path.basename(e,t),fileDirPath:path.dirname(e)}};exports.getFileDetails=getFileDetails;const normalizeFilePath=(e="")=>{const t=(0,exports.getFileDetails)(e);return`${t.fileDirPath}/${t.fileNameWithoutExtension}${t.fileExtension}`};exports.normalizeFilePath=normalizeFilePath;const getTargetLanguageFilePath=(e,t,i)=>{const{fileType:r,fileDirPath:s,fileNameWithoutExtension:a,fileExtension:o}=t;if("source"===i)return e;if("strings"===r&&".strings"===o){return`${s.split("/").slice(0,-1).join("/")}/${i.replace(/_/g,"-")}.lproj/${"Localizable.strings"}`}return`${s}/${a}-${i}${o}`};exports.getTargetLanguageFilePath=getTargetLanguageFilePath;