From 2dd74d88e0ed8c50e3f528e7a3440e2f94d73e0b Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Wed, 22 May 2024 16:22:18 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20fun=C3=A7=C3=A3o=20mapearPasta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/index.d.ts | 71 +++++++++++--------------- dist/index.js | 74 ++++++++++++--------------- dist/index.js.map | 2 +- dist/mapear_pasta.d.ts | 8 +++ dist/mapear_pasta.js | 68 +++++++++++++++++++++++++ dist/mapear_pasta.js.map | 1 + ferramentas/listar_arquivos.ts | 82 ++++-------------------------- package.json | 2 +- src/index.ts | 70 +++++++++++--------------- src/mapear_pasta.ts | 92 ++++++++++++++++++++++++++++++++++ 10 files changed, 272 insertions(+), 198 deletions(-) create mode 100644 dist/mapear_pasta.d.ts create mode 100644 dist/mapear_pasta.js create mode 100644 dist/mapear_pasta.js.map create mode 100644 src/mapear_pasta.ts diff --git a/dist/index.d.ts b/dist/index.d.ts index aa5beb4..9a1f7ae 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,4 @@ -export declare const Prefixos: { +declare const Prefixos: { relativo: string; "link-local": string; "link-servidor": string; @@ -7,50 +7,39 @@ export declare const Prefixos: { /** * * @param caminho - ** "relativo" - Caminho relativo Ex: "/estaticos/favicon.ico" - ** "link-local" - Caminho link local Ex: "http://localhost:5020/estaticos/favicon.ico" - ** "link-servidor" - Caminho link servidor Ex: "https://carro-de-boi.idz.one/estaticos/favicon.ico" - ** "relativo-disco" - Caminho relativo ao disco Ex: "/~estaticos/estaticos/favicon.ico" * @returns String */ export declare const estaticos: (caminho: keyof typeof Prefixos) => { - logos: { - "e-licencie-gov": { - "Logo-e-licencie-gov-vertical.svg": string; - "Logo-e-licencie-gov-vertical.": string; - "Logo-e-licencie-gov-horizontal.svg": string; - "Logo-e-licencie-gov-horizontal.png": string; - "Logo-e-licencie-gov-horizontal-branco.svg": string; - "Logo-e-licencie-gov-horizontal-branco.png": string; - }; - "e-licencie": { - "verde-verde_.png": string; - "verde-verde.png": string; - "escala-branco_.png": string; - "escala-branco.png": string; - "branco-branco.png": string; - }; - "betha-meio-ambiente": { - "Logo-betha-meio-ambiente-vertical.svg": string; - "Logo-betha-meio-ambiente-vertical.png": string; - "Logo-betha-meio-ambiente-horizontal.svg": string; - "Logo-betha-meio-ambiente-horizontal.png": string; - "Logo-betha-meio-ambiente-horizontal-branco.svg": string; - "Logo-betha-meio-ambiente-horizontal-branco.png": string; - "Logo-betha-meio-ambiente-brasao.svg": string; - "Logo-betha-meio-ambiente-brasao.png": string; - }; + "e-licencie-gov": { + "Logo-e-licencie-gov-vertical.svg": string; + "Logo-e-licencie-gov-vertical.": string; + "Logo-e-licencie-gov-horizontal.svg": string; + "Logo-e-licencie-gov-horizontal.png": string; + "Logo-e-licencie-gov-horizontal-branco.svg": string; + "Logo-e-licencie-gov-horizontal-branco.png": string; }; - imagens: { - "quero-quero.gif": string; - "favicon.ico": string; - "exemplo_brasao.jpeg": string; + "e-licencie": { + "verde-verde_.png": string; + "verde-verde.png": string; + "escala-branco_.png": string; + "escala-branco.png": string; + "branco-branco.png": string; }; - html: { - "404.html": string; - }; - dados: { - "tabela_ibama.json": string; - "municipios.json": string; + "betha-meio-ambiente": { + "Logo-betha-meio-ambiente-vertical.svg": string; + "Logo-betha-meio-ambiente-vertical.png": string; + "Logo-betha-meio-ambiente-horizontal.svg": string; + "Logo-betha-meio-ambiente-horizontal.png": string; + "Logo-betha-meio-ambiente-horizontal-branco.svg": string; + "Logo-betha-meio-ambiente-horizontal-branco.png": string; + "Logo-betha-meio-ambiente-brasao.svg": string; + "Logo-betha-meio-ambiente-brasao.png": string; }; + "quero-quero.gif": string; + "favicon.ico": string; + "exemplo_brasao.jpeg": string; + "404.html": string; + "tabela_ibama.json": string; + "municipios.json": string; }; +export {}; diff --git a/dist/index.js b/dist/index.js index e294375..bd254a8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.estaticos = exports.Prefixos = void 0; -exports.Prefixos = { +exports.estaticos = void 0; +const Prefixos = { relativo: "/estaticos", "link-local": "http://localhost:5020/estaticos", "link-servidor": "https://carro-de-boi-idz-one.b-cdn.net/estaticos", @@ -10,54 +10,42 @@ exports.Prefixos = { /** * * @param caminho - ** "relativo" - Caminho relativo Ex: "/estaticos/favicon.ico" - ** "link-local" - Caminho link local Ex: "http://localhost:5020/estaticos/favicon.ico" - ** "link-servidor" - Caminho link servidor Ex: "https://carro-de-boi.idz.one/estaticos/favicon.ico" - ** "relativo-disco" - Caminho relativo ao disco Ex: "/~estaticos/estaticos/favicon.ico" * @returns String */ const estaticos = (caminho) => { - const prefixo = exports.Prefixos[caminho] || exports.Prefixos.relativo; + const prefixo = Prefixos[caminho] || Prefixos.relativo; return { - logos: { - "e-licencie-gov": { - "Logo-e-licencie-gov-vertical.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-vertical.svg`, - "Logo-e-licencie-gov-vertical.": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-vertical.`, - "Logo-e-licencie-gov-horizontal.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.svg`, - "Logo-e-licencie-gov-horizontal.png": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.png`, - "Logo-e-licencie-gov-horizontal-branco.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.svg`, - "Logo-e-licencie-gov-horizontal-branco.png": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.png`, - }, - "e-licencie": { - "verde-verde_.png": `${prefixo}/logos/e-licencie/verde-verde_.png`, - "verde-verde.png": `${prefixo}/logos/e-licencie/verde-verde.png`, - "escala-branco_.png": `${prefixo}/logos/e-licencie/escala-branco_.png`, - "escala-branco.png": `${prefixo}/logos/e-licencie/escala-branco.png`, - "branco-branco.png": `${prefixo}/logos/e-licencie/branco-branco.png`, - }, - "betha-meio-ambiente": { - "Logo-betha-meio-ambiente-vertical.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.svg`, - "Logo-betha-meio-ambiente-vertical.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.png`, - "Logo-betha-meio-ambiente-horizontal.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.svg`, - "Logo-betha-meio-ambiente-horizontal.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.png`, - "Logo-betha-meio-ambiente-horizontal-branco.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.svg`, - "Logo-betha-meio-ambiente-horizontal-branco.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.png`, - "Logo-betha-meio-ambiente-brasao.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.svg`, - "Logo-betha-meio-ambiente-brasao.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.png`, - }, + "e-licencie-gov": { + "Logo-e-licencie-gov-vertical.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-vertical.svg`, + "Logo-e-licencie-gov-vertical.": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-vertical.`, + "Logo-e-licencie-gov-horizontal.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.svg`, + "Logo-e-licencie-gov-horizontal.png": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.png`, + "Logo-e-licencie-gov-horizontal-branco.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.svg`, + "Logo-e-licencie-gov-horizontal-branco.png": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.png`, }, - imagens: { - "quero-quero.gif": `${prefixo}/imagens/quero-quero.gif`, - "favicon.ico": `${prefixo}/imagens/favicon.ico`, - "exemplo_brasao.jpeg": `${prefixo}/imagens/exemplo_brasao.jpeg`, + "e-licencie": { + "verde-verde_.png": `${prefixo}logos/e-licencie/verde-verde_.png`, + "verde-verde.png": `${prefixo}logos/e-licencie/verde-verde.png`, + "escala-branco_.png": `${prefixo}logos/e-licencie/escala-branco_.png`, + "escala-branco.png": `${prefixo}logos/e-licencie/escala-branco.png`, + "branco-branco.png": `${prefixo}logos/e-licencie/branco-branco.png`, }, - html: { - "404.html": `${prefixo}/html/404.html`, - }, - dados: { - "tabela_ibama.json": `${prefixo}/dados/tabela_ibama.json`, - "municipios.json": `${prefixo}/dados/municipios.json`, + "betha-meio-ambiente": { + "Logo-betha-meio-ambiente-vertical.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.svg`, + "Logo-betha-meio-ambiente-vertical.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.png`, + "Logo-betha-meio-ambiente-horizontal.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.svg`, + "Logo-betha-meio-ambiente-horizontal.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.png`, + "Logo-betha-meio-ambiente-horizontal-branco.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.svg`, + "Logo-betha-meio-ambiente-horizontal-branco.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.png`, + "Logo-betha-meio-ambiente-brasao.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.svg`, + "Logo-betha-meio-ambiente-brasao.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.png`, }, + "quero-quero.gif": `${prefixo}imagens/quero-quero.gif`, + "favicon.ico": `${prefixo}imagens/favicon.ico`, + "exemplo_brasao.jpeg": `${prefixo}imagens/exemplo_brasao.jpeg`, + "404.html": `${prefixo}html/404.html`, + "tabela_ibama.json": `${prefixo}dados/tabela_ibama.json`, + "municipios.json": `${prefixo}dados/municipios.json`, }; }; exports.estaticos = estaticos; diff --git a/dist/index.js.map b/dist/index.js.map index ea1a971..599c312 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACvB,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,iCAAiC;IAC/C,eAAe,EAAE,kDAAkD;IACnE,gBAAgB,EAAE,sBAAsB;CACxC,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,SAAS,GAAG,CAAC,OAA8B,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,gBAAQ,CAAC,OAAO,CAAC,IAAI,gBAAQ,CAAC,QAAQ,CAAC;IAEvD,OAAO;QACN,KAAK,EAAE;YACN,gBAAgB,EAAE;gBACjB,kCAAkC,EAAE,GAAG,OAAO,wDAAwD;gBACtG,+BAA+B,EAAE,GAAG,OAAO,qDAAqD;gBAChG,oCAAoC,EAAE,GAAG,OAAO,0DAA0D;gBAC1G,oCAAoC,EAAE,GAAG,OAAO,0DAA0D;gBAC1G,2CAA2C,EAAE,GAAG,OAAO,iEAAiE;gBACxH,2CAA2C,EAAE,GAAG,OAAO,iEAAiE;aACxH;YACD,YAAY,EAAE;gBACb,kBAAkB,EAAE,GAAG,OAAO,oCAAoC;gBAClE,iBAAiB,EAAE,GAAG,OAAO,mCAAmC;gBAChE,oBAAoB,EAAE,GAAG,OAAO,sCAAsC;gBACtE,mBAAmB,EAAE,GAAG,OAAO,qCAAqC;gBACpE,mBAAmB,EAAE,GAAG,OAAO,qCAAqC;aACpE;YACD,qBAAqB,EAAE;gBACtB,uCAAuC,EAAE,GAAG,OAAO,kEAAkE;gBACrH,uCAAuC,EAAE,GAAG,OAAO,kEAAkE;gBACrH,yCAAyC,EAAE,GAAG,OAAO,oEAAoE;gBACzH,yCAAyC,EAAE,GAAG,OAAO,oEAAoE;gBACzH,gDAAgD,EAAE,GAAG,OAAO,2EAA2E;gBACvI,gDAAgD,EAAE,GAAG,OAAO,2EAA2E;gBACvI,qCAAqC,EAAE,GAAG,OAAO,gEAAgE;gBACjH,qCAAqC,EAAE,GAAG,OAAO,gEAAgE;aACjH;SACD;QACD,OAAO,EAAE;YACR,iBAAiB,EAAE,GAAG,OAAO,0BAA0B;YACvD,aAAa,EAAE,GAAG,OAAO,sBAAsB;YAC/C,qBAAqB,EAAE,GAAG,OAAO,8BAA8B;SAC/D;QACD,IAAI,EAAE;YACL,UAAU,EAAE,GAAG,OAAO,gBAAgB;SACtC;QACD,KAAK,EAAE;YACN,mBAAmB,EAAE,GAAG,OAAO,0BAA0B;YACzD,iBAAiB,EAAE,GAAG,OAAO,wBAAwB;SACrD;KACD,CAAC;AACH,CAAC,CAAC;AA5CW,QAAA,SAAS,aA4CpB"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,QAAQ,GAAG;IAChB,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,iCAAiC;IAC/C,eAAe,EAAE,kDAAkD;IACnE,gBAAgB,EAAE,sBAAsB;CACxC,CAAC;AAEF;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,OAA8B,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAEvD,OAAO;QACN,gBAAgB,EAAE;YACjB,kCAAkC,EAAE,GAAG,OAAO,uDAAuD;YACrG,+BAA+B,EAAE,GAAG,OAAO,oDAAoD;YAC/F,oCAAoC,EAAE,GAAG,OAAO,yDAAyD;YACzG,oCAAoC,EAAE,GAAG,OAAO,yDAAyD;YACzG,2CAA2C,EAAE,GAAG,OAAO,gEAAgE;YACvH,2CAA2C,EAAE,GAAG,OAAO,gEAAgE;SACvH;QACD,YAAY,EAAE;YACb,kBAAkB,EAAE,GAAG,OAAO,mCAAmC;YACjE,iBAAiB,EAAE,GAAG,OAAO,kCAAkC;YAC/D,oBAAoB,EAAE,GAAG,OAAO,qCAAqC;YACrE,mBAAmB,EAAE,GAAG,OAAO,oCAAoC;YACnE,mBAAmB,EAAE,GAAG,OAAO,oCAAoC;SACnE;QACD,qBAAqB,EAAE;YACtB,uCAAuC,EAAE,GAAG,OAAO,iEAAiE;YACpH,uCAAuC,EAAE,GAAG,OAAO,iEAAiE;YACpH,yCAAyC,EAAE,GAAG,OAAO,mEAAmE;YACxH,yCAAyC,EAAE,GAAG,OAAO,mEAAmE;YACxH,gDAAgD,EAAE,GAAG,OAAO,0EAA0E;YACtI,gDAAgD,EAAE,GAAG,OAAO,0EAA0E;YACtI,qCAAqC,EAAE,GAAG,OAAO,+DAA+D;YAChH,qCAAqC,EAAE,GAAG,OAAO,+DAA+D;SAChH;QACD,iBAAiB,EAAE,GAAG,OAAO,yBAAyB;QACtD,aAAa,EAAE,GAAG,OAAO,qBAAqB;QAC9C,qBAAqB,EAAE,GAAG,OAAO,6BAA6B;QAC9D,UAAU,EAAE,GAAG,OAAO,eAAe;QACrC,mBAAmB,EAAE,GAAG,OAAO,yBAAyB;QACxD,iBAAiB,EAAE,GAAG,OAAO,uBAAuB;KACpD,CAAC;AACH,CAAC,CAAC;AApCW,QAAA,SAAS,aAoCpB"} \ No newline at end of file diff --git a/dist/mapear_pasta.d.ts b/dist/mapear_pasta.d.ts new file mode 100644 index 0000000..89c9954 --- /dev/null +++ b/dist/mapear_pasta.d.ts @@ -0,0 +1,8 @@ +export declare const mapearPasta: ({ prefixos, pasta, arquivoDestino, variavel, }: { + prefixos: { + [k: string]: string; + }; + pasta: string; + arquivoDestino: string; + variavel?: string; +}) => void; diff --git a/dist/mapear_pasta.js b/dist/mapear_pasta.js new file mode 100644 index 0000000..f98006e --- /dev/null +++ b/dist/mapear_pasta.js @@ -0,0 +1,68 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mapearPasta = void 0; +const node_fs_1 = __importDefault(require("node:fs")); +const node_path_1 = __importDefault(require("node:path")); +const glob_1 = require("glob"); +const mapearPasta = ({ prefixos, pasta, arquivoDestino, variavel, }) => { + const pasta_estaticos = pasta.endsWith("/") ? pasta : `${pasta}/`; + if (!node_fs_1.default.existsSync(pasta_estaticos)) + throw new Error(`Pasta ${pasta_estaticos} não existe`); + const gerar = (async () => { + // listar arquivos da pasta estáticos + const files = (0, glob_1.globSync)(`${pasta_estaticos}**/*`, { nodir: true }); + const arquivo_ts = ` + + + const Prefixos = { + ${Object.entries(prefixos) + .map(([k, v]) => `"${k}": "${v.replace(/"/g, '\\"')}"`) + .join(",\n")} + }; + + /** + * + * @param caminho + * @returns String + */ + export const ${variavel || "estaticos"} = (caminho: keyof typeof Prefixos) => { + const prefixo = Prefixos[caminho] || Prefixos.relativo; + + return ${(() => { + const arquivos = {}; + for (const arquivo of files) { + const partes = arquivo + .slice(pasta_estaticos.length) + .split("/") + .slice(1); + let pasta = arquivos; + for (const [i, parte] of partes.entries()) { + if (i === partes.length - 1) { + pasta[parte] = `~~~\${prefixo}${encodeURI(arquivo.slice(pasta_estaticos.length))}~~~`; + } + else { + pasta[parte] = pasta[parte] || {}; + pasta = pasta[parte]; + } + } + } + return JSON.stringify(arquivos, null, 2) + .replace(/"~~~/g, "`") + .replace(/~~~"/g, "`"); + })()}; + }; + `; + // criar pasta de arquivo destino + const pastaDestino = node_path_1.default.dirname(arquivoDestino); + if (!node_fs_1.default.existsSync(pastaDestino)) { + node_fs_1.default.mkdirSync(pastaDestino, { recursive: true }); + } + // escrever arquivo + node_fs_1.default.writeFileSync(arquivoDestino, arquivo_ts); + })(); +}; +exports.mapearPasta = mapearPasta; +//# sourceMappingURL=mapear_pasta.js.map \ No newline at end of file diff --git a/dist/mapear_pasta.js.map b/dist/mapear_pasta.js.map new file mode 100644 index 0000000..1d15ba8 --- /dev/null +++ b/dist/mapear_pasta.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapear_pasta.js","sourceRoot":"","sources":["../src/mapear_pasta.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAC7B,+BAAgC;AAEzB,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,QAAQ,GAMR,EAAE,EAAE;IACJ,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;IAClE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,SAAS,eAAe,aAAa,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,GAAG,eAAe,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG;;;;GAIlB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;aACtD,IAAI,CAAC,KAAK,CAAC;;;;;;;;iBAQG,QAAQ,IAAI,WAAW;;;aAG3B,CAAC,GAAG,EAAE;YAchB,MAAM,QAAQ,GAAG,EAAQ,CAAC;YAE1B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,OAAO;qBACpB,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;qBAC7B,KAAK,CAAC,GAAG,CAAC;qBACV,KAAK,CAAC,CAAC,CAAC,CAAC;gBACX,IAAI,KAAK,GAAG,QAAQ,CAAC;gBACrB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC3C,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,SAAS,CACxC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CACrC,KAAK,CAAC;oBACR,CAAC;yBAAM,CAAC;wBACP,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAO,CAAC;oBAC5B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,EAAE;;KAED,CAAC;QAEJ,iCAAiC;QACjC,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,iBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,mBAAmB;QAEnB,iBAAE,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,EAAE,CAAC;AACN,CAAC,CAAC;AAvFW,QAAA,WAAW,eAuFtB"} \ No newline at end of file diff --git a/ferramentas/listar_arquivos.ts b/ferramentas/listar_arquivos.ts index d95efa7..f9562fc 100644 --- a/ferramentas/listar_arquivos.ts +++ b/ferramentas/listar_arquivos.ts @@ -1,81 +1,21 @@ -import { globSync } from "glob"; import path from "node:path"; -import fs from "node:fs"; import { cdn_carro_de_boi } from "~comuns"; +import { mapearPasta } from "../src/mapear_pasta"; const pasta_estaticos = path.resolve(process.cwd(), "estaticos"); const pasta_src = path.resolve(process.cwd(), "src"); export const gerar = (async () => { - // listar arquivos da pasta estáticos - const files = globSync(`${pasta_estaticos}/**/*`, { nodir: true }); - - const arquivo_ts = ` - - - - export const Prefixos = { - relativo: "/estaticos", - "link-local": "http://localhost:5020/estaticos", - "link-servidor": "${cdn_carro_de_boi}/estaticos", - "relativo-disco": "~estaticos/estaticos", - }; - - /** - * - * @param caminho - ** "relativo" - Caminho relativo Ex: "/estaticos/favicon.ico" - ** "link-local" - Caminho link local Ex: "http://localhost:5020/estaticos/favicon.ico" - ** "link-servidor" - Caminho link servidor Ex: "https://carro-de-boi.idz.one/estaticos/favicon.ico" - ** "relativo-disco" - Caminho relativo ao disco Ex: "/~estaticos/estaticos/favicon.ico" - * @returns String - */ - export const estaticos = (caminho: keyof typeof Prefixos) => { - const prefixo = Prefixos[caminho] || Prefixos.relativo; - - return ${(() => { - /* - - ${files - .map((f) => f.slice(pasta_estaticos.length)) - .map((f) => `"${f}": \`\${prefixo}${encodeURI(f)}\``) - .join(",\n")} - - -*/ - type tp = { - [key: string]: string | tp; - }; - - const arquivos = {} as tp; - - for (const arquivo of files) { - const partes = arquivo - .slice(pasta_estaticos.length) - .split("/") - .slice(1); - let pasta = arquivos; - for (const [i, parte] of partes.entries()) { - if (i === partes.length - 1) { - pasta[parte] = `~~~\${prefixo}${encodeURI( - arquivo.slice(pasta_estaticos.length), - )}~~~`; - } else { - pasta[parte] = pasta[parte] || {}; - pasta = pasta[parte] as tp; - } - } - } - - return JSON.stringify(arquivos, null, 2) - .replace(/"~~~/g, "`") - .replace(/~~~"/g, "`"); - })()}; - }; - `; - - // escrever arquivo - fs.writeFileSync(path.resolve(pasta_src, "index.ts"), arquivo_ts); + mapearPasta({ + prefixos: { + relativo: "/estaticos", + "link-local": "http://localhost:5020/estaticos", + "link-servidor": `${cdn_carro_de_boi}/estaticos`, + "relativo-disco": "~estaticos/estaticos", + }, + arquivoDestino: path.resolve(pasta_src, "index.ts"), + pasta: pasta_estaticos, + }); })(); if (process.argv.includes("gerar")) { diff --git a/package.json b/package.json index 5f071e2..b415f39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "~estaticos", - "version": "0.13.0", + "version": "0.15.0", "description": "", "main": "dist/index.js", "scripts": { diff --git a/src/index.ts b/src/index.ts index 5c8384c..0d8bd9b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export const Prefixos = { +const Prefixos = { relativo: "/estaticos", "link-local": "http://localhost:5020/estaticos", "link-servidor": "https://carro-de-boi-idz-one.b-cdn.net/estaticos", @@ -8,54 +8,42 @@ export const Prefixos = { /** * * @param caminho - ** "relativo" - Caminho relativo Ex: "/estaticos/favicon.ico" - ** "link-local" - Caminho link local Ex: "http://localhost:5020/estaticos/favicon.ico" - ** "link-servidor" - Caminho link servidor Ex: "https://carro-de-boi.idz.one/estaticos/favicon.ico" - ** "relativo-disco" - Caminho relativo ao disco Ex: "/~estaticos/estaticos/favicon.ico" * @returns String */ export const estaticos = (caminho: keyof typeof Prefixos) => { const prefixo = Prefixos[caminho] || Prefixos.relativo; return { - logos: { - "e-licencie-gov": { - "Logo-e-licencie-gov-vertical.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-vertical.svg`, - "Logo-e-licencie-gov-vertical.": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-vertical.`, - "Logo-e-licencie-gov-horizontal.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.svg`, - "Logo-e-licencie-gov-horizontal.png": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.png`, - "Logo-e-licencie-gov-horizontal-branco.svg": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.svg`, - "Logo-e-licencie-gov-horizontal-branco.png": `${prefixo}/logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.png`, - }, - "e-licencie": { - "verde-verde_.png": `${prefixo}/logos/e-licencie/verde-verde_.png`, - "verde-verde.png": `${prefixo}/logos/e-licencie/verde-verde.png`, - "escala-branco_.png": `${prefixo}/logos/e-licencie/escala-branco_.png`, - "escala-branco.png": `${prefixo}/logos/e-licencie/escala-branco.png`, - "branco-branco.png": `${prefixo}/logos/e-licencie/branco-branco.png`, - }, - "betha-meio-ambiente": { - "Logo-betha-meio-ambiente-vertical.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.svg`, - "Logo-betha-meio-ambiente-vertical.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.png`, - "Logo-betha-meio-ambiente-horizontal.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.svg`, - "Logo-betha-meio-ambiente-horizontal.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.png`, - "Logo-betha-meio-ambiente-horizontal-branco.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.svg`, - "Logo-betha-meio-ambiente-horizontal-branco.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.png`, - "Logo-betha-meio-ambiente-brasao.svg": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.svg`, - "Logo-betha-meio-ambiente-brasao.png": `${prefixo}/logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.png`, - }, + "e-licencie-gov": { + "Logo-e-licencie-gov-vertical.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-vertical.svg`, + "Logo-e-licencie-gov-vertical.": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-vertical.`, + "Logo-e-licencie-gov-horizontal.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.svg`, + "Logo-e-licencie-gov-horizontal.png": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal.png`, + "Logo-e-licencie-gov-horizontal-branco.svg": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.svg`, + "Logo-e-licencie-gov-horizontal-branco.png": `${prefixo}logos/e-licencie-gov/Logo-e-licencie-gov-horizontal-branco.png`, }, - imagens: { - "quero-quero.gif": `${prefixo}/imagens/quero-quero.gif`, - "favicon.ico": `${prefixo}/imagens/favicon.ico`, - "exemplo_brasao.jpeg": `${prefixo}/imagens/exemplo_brasao.jpeg`, + "e-licencie": { + "verde-verde_.png": `${prefixo}logos/e-licencie/verde-verde_.png`, + "verde-verde.png": `${prefixo}logos/e-licencie/verde-verde.png`, + "escala-branco_.png": `${prefixo}logos/e-licencie/escala-branco_.png`, + "escala-branco.png": `${prefixo}logos/e-licencie/escala-branco.png`, + "branco-branco.png": `${prefixo}logos/e-licencie/branco-branco.png`, }, - html: { - "404.html": `${prefixo}/html/404.html`, - }, - dados: { - "tabela_ibama.json": `${prefixo}/dados/tabela_ibama.json`, - "municipios.json": `${prefixo}/dados/municipios.json`, + "betha-meio-ambiente": { + "Logo-betha-meio-ambiente-vertical.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.svg`, + "Logo-betha-meio-ambiente-vertical.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-vertical.png`, + "Logo-betha-meio-ambiente-horizontal.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.svg`, + "Logo-betha-meio-ambiente-horizontal.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal.png`, + "Logo-betha-meio-ambiente-horizontal-branco.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.svg`, + "Logo-betha-meio-ambiente-horizontal-branco.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-horizontal-branco.png`, + "Logo-betha-meio-ambiente-brasao.svg": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.svg`, + "Logo-betha-meio-ambiente-brasao.png": `${prefixo}logos/betha-meio-ambiente/Logo-betha-meio-ambiente-brasao.png`, }, + "quero-quero.gif": `${prefixo}imagens/quero-quero.gif`, + "favicon.ico": `${prefixo}imagens/favicon.ico`, + "exemplo_brasao.jpeg": `${prefixo}imagens/exemplo_brasao.jpeg`, + "404.html": `${prefixo}html/404.html`, + "tabela_ibama.json": `${prefixo}dados/tabela_ibama.json`, + "municipios.json": `${prefixo}dados/municipios.json`, }; }; diff --git a/src/mapear_pasta.ts b/src/mapear_pasta.ts new file mode 100644 index 0000000..b183539 --- /dev/null +++ b/src/mapear_pasta.ts @@ -0,0 +1,92 @@ +import fs from "node:fs"; +import path from "node:path"; +import { globSync } from "glob"; + +export const mapearPasta = ({ + prefixos, + pasta, + arquivoDestino, + variavel, +}: { + prefixos: { [k: string]: string }; + pasta: string; + arquivoDestino: string; + variavel?: string; +}) => { + const pasta_estaticos = pasta.endsWith("/") ? pasta : `${pasta}/`; + if (!fs.existsSync(pasta_estaticos)) + throw new Error(`Pasta ${pasta_estaticos} não existe`); + + const gerar = (async () => { + // listar arquivos da pasta estáticos + const files = globSync(`${pasta_estaticos}**/*`, { nodir: true }); + + const arquivo_ts = ` + + + const Prefixos = { + ${Object.entries(prefixos) + .map(([k, v]) => `"${k}": "${v.replace(/"/g, '\\"')}"`) + .join(",\n")} + }; + + /** + * + * @param caminho + * @returns String + */ + export const ${variavel || "estaticos"} = (caminho: keyof typeof Prefixos) => { + const prefixo = Prefixos[caminho] || Prefixos.relativo; + + return ${(() => { + /* + + ${files + .map((f) => f.slice(pasta_estaticos.length)) + .map((f) => `"${f}": \`\${prefixo}${encodeURI(f)}\``) + .join(",\n")} + + +*/ + type tp = { + [key: string]: string | tp; + }; + + const arquivos = {} as tp; + + for (const arquivo of files) { + const partes = arquivo + .slice(pasta_estaticos.length) + .split("/") + .slice(1); + let pasta = arquivos; + for (const [i, parte] of partes.entries()) { + if (i === partes.length - 1) { + pasta[parte] = `~~~\${prefixo}${encodeURI( + arquivo.slice(pasta_estaticos.length), + )}~~~`; + } else { + pasta[parte] = pasta[parte] || {}; + pasta = pasta[parte] as tp; + } + } + } + + return JSON.stringify(arquivos, null, 2) + .replace(/"~~~/g, "`") + .replace(/~~~"/g, "`"); + })()}; + }; + `; + + // criar pasta de arquivo destino + const pastaDestino = path.dirname(arquivoDestino); + if (!fs.existsSync(pastaDestino)) { + fs.mkdirSync(pastaDestino, { recursive: true }); + } + + // escrever arquivo + + fs.writeFileSync(arquivoDestino, arquivo_ts); + })(); +};