constatic
Version:
Constatic cli
2 lines (1 loc) • 5.21 kB
JavaScript
import{divider as r,fetchNpmPackage as J,instructions as B,log as v,sleep as g,uiMessage as e}from"#helpers";import{searchSelect as R,theme as q,withDefaults as l}from"#prompts";import{checkbox as $,input as w,select as S,Separator as k}from"@inquirer/prompts";import{glob as C}from"@reliverse/reglob";import s from"chalk";import j from"ora";import{formatPresetFiles as U}from"./format.js";import{printPreview as y}from"./preview.js";import{packageJsonHasDeps as N}from"#shared/presets/scripts/deps.js";async function _(P,n,D=!1){let m="progress";const b=async d=>d?U(n.files.filter(({path:f,dist:u=f})=>u.startsWith(d)||u.endsWith(d)||u.includes(d))):U(n.files);for(;m==="progress";){const d=n.files.length>0,f=N(n.packageJson??{}),u=!d&&!f?" ":!1,h=await S(l({message:e({"pt-BR":"\u2751 Nova predefini\xE7\xF5es de script","en-US":"\u2751 New script preset"},s.reset.cyan.underline),choices:[D?{name:e({"en-US":"\u270E Edit name","pt-BR":"\u270E Editar nome"},s.blue),value:"name"}:null,{name:e({"en-US":"\u{1F5D0} Select files","pt-BR":"\u{1F5D0} Selecionar arquivos"},s.green),value:"select"},d&&{name:e({"en-US":"\u2717 Remove files","pt-BR":"\u2717 Remover arquivos"},s.redBright),value:"rm"},{name:e({"en-US":"\u2636 Add dependencies","pt-BR":"\u2636 Adicionar depend\xEAncias"},s.green),value:"deps"},f&&{name:e({"en-US":"\u2717 Remove dependencies","pt-BR":"\u2717 Remover depend\xEAncias"},s.redBright),value:"uninstall"},{name:e({"en-US":"\u29BF Preview","pt-BR":"\u29BF Previsualizar"},s.green),value:"preview",disabled:u},{name:e({"en-US":"\u21AF Save","pt-BR":"\u21AF Salvar"},s.green),value:"save",disabled:u},{name:e({"pt-BR":"\u2936 Cancelar","en-US":"\u2936 Cancel"},s.red),value:"cancel"}].filter(t=>!!t),pageSize:10}));switch(r(),h){case"name":{n.name=await w(l({message:e({"en-US":"Preset name","pt-BR":"Nome da predefini\xE7\xE3o"})})),r();continue}case"select":{const t=await C(["./**"],{cwd:P.cwd,ignore:["**/node_modules/**"],dot:!0}),o=(await R(l({message:e({"en-US":"Select the files you want","pt-BR":"Selecione os arquivos que deseja"}),theme:q.searchSelect,async options(i){const a=c=>({name:c,value:c});return i?t.filter(c=>c.startsWith(i)||c.endsWith(i)||c.includes(i)).map(a):t.map(a)},instructions:B.searchSelect}))).filter(i=>!n.files.some(a=>a.path===i));n.files.push(...o.map(i=>({path:i,dist:i})));continue}case"rm":{const t=await R(l({message:e({"en-US":"Select the files you want delete","pt-BR":"Selecione os arquivos que deseja deletar"}),options:b}));r(),n.files=n.files.filter(({path:p,dist:o=p})=>!t.includes(o));continue}case"deps":{const t=await w(l({message:e({"en-US":"Enter the dependency name:","pt-BR":"Insira o nome da depend\xEAncia:"}),required:!0})),p=j({text:e({"en-US":"Fetching package","pt-BR":"Buscando pacote"})}).start(),o=await J(t);if(p.stop(),r(),!o.success){v.error(o.error),await g(300);continue}const i=o.data.name,a=o.data.selectedVersion;v.success(e({"en-US":`Package ${i} / version: ${a}`,"pt-BR":`Pacote ${i} / vers\xE3o: ${a}`})),r();const c=await S(l({message:e({"pt-BR":"Selecione o tipo de depend\xEAncia","en-US":"Select the type of dependency"}),choices:[{name:e({"en-US":"Production dependency","pt-BR":"Depend\xEAncia de produ\xE7\xE3o"},s.green),value:"dependencies"},{name:e({"en-US":"Development dependency","pt-BR":"Depend\xEAncia de desenvolvimento"},s.green),value:"devDependencies"}]}));r(),n.packageJson??={},n.packageJson[c]??={},n.packageJson[c][i]=a,v.success(e({"en-US":"Dependency successfully added to preset","pt-BR":"Depend\xEAncia adicionada com sucesso \xE0 predefini\xE7\xE3o"})),r();continue}case"uninstall":{const{dependencies:t,devDependencies:p}=n.packageJson??{},o=[];t&&o.push(new k(s.dim("dependencies")),...Object.entries(t).map(([a,c])=>({name:`${a}@${c}`,value:a}))),p&&o.push(new k(s.dim("devDependencies")),...Object.entries(p).map(([a,c])=>({name:`${a}@${c}`,value:a})));const i=await $({message:e({"en-US":"Select the dependencies you want to remove","pt-BR":"Selecione as depend\xEAncias que deseja remover"}),choices:o,instructions:B.checkbox});r();for(const a in n.packageJson?.dependencies??{})i.includes(a)&&delete(n.packageJson?.dependencies??{})[a];for(const a in n.packageJson?.devDependencies??{})i.includes(a)&&delete(n.packageJson?.devDependencies??{})[a];continue}case"preview":{y(n),r(),await g(400);continue}case"save":{if(!n.files.length&&!n.packageJson){v.error(e({"en-US":"You need to add files and/or dependencies to create a preset.","pt-BR":"\xC9 necess\xE1rio adicionar arquivos e/ou dependend\xEAncias para criar uma predefini\xE7\xE3o"})),r(),await g(400);continue}y(n),r();const t=await S(l({message:e({"pt-BR":"\u2751 Salvar predefini\xE7\xF5es de script","en-US":"\u2751 Save script preset"},s.reset.cyan.underline),choices:[{name:e({"en-US":"\u21AA Continue to save","pt-BR":"\u21AA Continuar para salvar"},s.green),value:"continue"},{name:e({"en-US":"\u270E Back to edit","pt-BR":"\u270E Voltar a edi\xE7\xE3o"},s.blue),value:"back"},{name:e({"pt-BR":"\u2936 Cancelar","en-US":"\u2936 Cancel"},s.red),value:"cancel"}]}));if(r(),t==="cancel"){m=t;break}if(t==="back")continue;m="save";break}case"cancel":{m=h;continue}}}return m}export{_ as modifyScriptPresetMenu};