UNPKG

constatic

Version:

Constatic is a CLI for creating and managing modern TypeScript projects, providing an organized structure and features that streamline development.

3 lines (2 loc) 1.05 kB
import{mkdir as f,readFile as g,writeFile as n}from"node:fs/promises";import{dirname as h}from"node:path";class o{filepath;data={};get vars(){return Object.entries(this.data).reduce((t,[i,s])=>(s!==void 0&&(t[i]=s),t),{})}constructor(t){this.filepath=t}async load(){try{const t=await g(this.filepath,"utf-8"),i=o.parse(t);this.data={...i,...this.data}}catch{}}set(t,i){this.data[t]=i??""}remove(t){delete this.data[t]}unset(t){this.data[t]!==void 0&&(this.data[t]="")}update([t,i,s]){this.set(t,s)}async save(){await f(h(this.filepath),{recursive:!0}),await this.load();const t=this.stringify(this.data);await n(this.filepath,t,"utf-8")}async createExample(t){const i={};for(const r of Object.keys(this.data))i[r]="";const s=this.stringify(i);await n(t,s,"utf-8")}static parse(t){const i=t.split(/\r?\n/),s={};for(const r of i){const e=r.trim();if(!e||e.startsWith("#"))continue;const[a,...c]=e.split("="),d=c.join("=");s[a]=d||s[a]}return s}stringify(t){return Object.entries(t).map(([i,s])=>`${i}=${s??""}`).join(` `)}}export{o as EnvManager};