From c67754c6c8017ab74ed2389045c74a42a5e945dd Mon Sep 17 00:00:00 2001 From: Pascal Syma Date: Sun, 1 Dec 2024 14:31:59 +0100 Subject: [PATCH] Add copy script --- bun.lockb | Bin 3997 -> 21776 bytes copy.ts | 77 ++++++++++++++++++ package.json | 5 +- template/{20xx-xx.run.xml => YYYY-DD.run.xml} | 4 +- template/index.test.ts | 2 +- 5 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 copy.ts rename template/{20xx-xx.run.xml => YYYY-DD.run.xml} (55%) diff --git a/bun.lockb b/bun.lockb index 867e20c7d8f267324027a94b17ad33d43313c95f..6ab1a535682869147a7a5d3a7c981d774f7e3cd6 100755 GIT binary patch literal 21776 zcmeHvd0dR$`+sG!WQ`;eZAh7R6(vbzSA-UoX&N;(&5W5T=_x`8NtPa4$d)7}**%C9 zSsqDcrw~%=d9pu|?{(cXr*1w>`F=isd_TXR^Lm{*_gUW8xz2U2v)*&vdO9YdVv&g- zmv6%1hiUtT@>Reyc>;FuY%Y((oGlQAuq4bdQxzoz1%*SK2QHaksoux;)!}w34-R>G z**W?A;pn8E`0?7?l2-oXqurnoxFOO&q3t(ev@Bj?BYRL_3E0%5Bm8z&P>7z#5(S9i zxgNYK#H(fLWe|3Nc(E)r2X=Zud;o;)A=H9U1;U=Kq#;MlX7O1595#;|$^}dTq_>0o z4h(7eX%KdV_-+UhH_yz555*J$cmh8RW0e&Y)FC|_!Y&YwYAwYLm4#O!M1FPJNa+Y! zl0arKXWraEE;|tLTrnq{17Qf@k-r5X3ameb%jXJNVzED@V|+0DAe|Kuc7o7LmaYd( zVZG`QBA8aM6BQl#IU`=JWi+x(sjXWLtH50 zNF-biCQkDO*=pJx;TZ zuBm_e!1W^cm6lH?cYn#%ZfDeo1r+*6E(_BC%u_rl)OEU>E-*XHt6^`e_V=9jz%Iv0 zOSfDvr=9KzPsOBrqu*~Ae&XeRp6C_st1%#kRh(?@GVNxyeuSWl$0U>UJ9}QvRr8yp zKg^+hXPX=DX@z6oY_D*tQ>?2vBgvUPV^vKrk4dA_I+Qki8Chc4vujtLn_lPQGgG*^ zN)0y?T;}usxSy4s?$G_w#-V51MyXWJ&>Ef`_fL`dY(vQuyLMMY;@|I@TsJy((2ToN zyS}`&q{~bmFGexxuM1Jaq+3^Sid!c{u{RD4@2m9K$F-(L=yA42IqBgmgBh;H6TRyS z%5!@4YkkUhR$1!227yJg=7?=+Ypc||7cC+Df7?zX508ASDKE!;tS0gx?Y#bEq3Hzm znYT}LGkfakn>BA|RfLgb=IdoMhAoQoJ~94s?c^DOE{kgw?)#WdIb?KV)%JeTgN&AN z{NfI0t@XdTcfuMI&sF`83>(r;V3+^Wb@Qpqtp}bSZ@Tc!Z`A?UV!Kx9?z*yZ-u9p( zt|BVHzu{mQQqBv0M}vOg3_#MPIr4u=*&R^K0`M>gD8LYFF%5$601X)jc#LD4TG}px zpAG=zpTuEUw#bq4Nq`>#`0ld0f42Sy0B`_2OixtXVft#3BlVAkhv|TCDUJ{)`0emu z4|puDfX8<1Mk2v(mM@t;3?7=d+E34K?wR0)fG6XR=umT5%qRHsfXDGi z;v{U21}XRE8+>y(l27pcL1BkO{m47)e|}njVgYXpc%r{8)ge-UF5ppq&l1}*i zQAo>z6y*WChTra4U;9Dv?q)qT{fXDfl^nY{pl6-qxm?a9F_p$HF8{E>M<9%K88v=TFpMOe5*d(IDlLWO!^p zrnOWC1b-LsIR9Y#TdI4=8^L#gbCwn0F^>96(y@#@N6JkAJXwFS{LhZxSimFygm)6k zs~hu3{U-q*2zcbZrLv>r&Eecg=6|HoQb+0!13cOP;TRz4&Cwy{4gr1`@Q-nxbo3C*Yk`^F34-xMuOQ(le-U&R`H%gX|A;w38 z$NVv}I0RI`{pv@QgtR|VKL36F*wDEFJNQ58fS#g)lrEh#Bj!q%Bc*N51wS5P@4>sL zJ^z*Zaf4Nfd0n>&8v=#xZ(j2cne1&p@`cc9*?QZY-sxK>a`s)EzAx%r@6C1QjuX%C zq0vQI6UTT}oPABr{)6sb%hgZQ_uU@lQ(&;Gc;-2sDldaTQS!T>(yqPpJXHfOd>Xx> z=Cp9wq*DjZ-x9mo4Sc3^xi-}(u8Kw%#|CkXNS>44*@FiKb28qu51p885)yA_`B#H;O#Rg$Mn;^Hv*=%d1rHR28dA@oo1W zh&j;TyVs?w{epY#-K=V5;JmbEX?5bHFSjqX*<&72*Kp*w__Pycb;Ivp*j-w{F+Htc zwW7Zm^^52O&KJZnt`AIkUUlZ6QCBbR %`R(a>De{dXFFfMG+?Z8Ci-kq(Tj^C@1 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 delta 870 zcmbQRigB*|1U=1z4*$9J|6E8ozWdI_uW`#>y}co`DslY_PV?|gjYS^)yuADjV8A&s zTwXYp6T)F&NX$mxM zZ}{=vKRhF#`8~s(ID?=~+Buk;?U=F|C*J~6yBH@+37Jg}VBuhT2V??8OqeD|37Sn-U}33e0cr$cW*}w< zVh}*4LAG-MG0;;WUo(LCKwpAspfBNoOmnyp22H*zS}?g(&3p0;G2Y2%)w~&*Crhe_ zPxcV!o!qM7&B!|WqDJ`SA3&a|rZXoa!$1CiK)0|@J_%H_LV|a)u7>kuVHORbH(4eJ z=yEX40S1ijy3I0ros3*7pi#MpbMk!)Pd<=;UOkdPZh?CJYMDSWDoU+~e#r`JA(n)DxfvP>OA_Fg?Rq z!S` + val > 2000 && val < 3000 ? true : 'Year needs to be between 2000-3000', + format: String + }, + { + type: 'number', + name: 'day', + message: 'What day?', + initial: new Date().getDate(), + validate: (val) => + val > 0 && val < 32 ? true : 'Day needs to be between 1-31', + format: (val) => String(val).padStart(2, '0') + } +]); + +const dir = join(year, day); + +if (existsSync(dir)) { + console.warn('Directory already exists!'); + process.exit(1); +} + +// Create new day folder +await mkdir(dir, { recursive: true }); + +// Parse template folder for files +const templateDir = 'template'; +const files = await readdir(templateDir); + +const yearRegex = /YYYY/g; +const dayRegex = /DD/g; + +// Copy files from template to day folder, replace placeholders in filename +await Promise.all( + files.map((f) => + copyFile( + join(templateDir, f), + join(dir, f.replaceAll(yearRegex, year).replaceAll(dayRegex, day)) + ) + ) +); + +// Replace placeholders in code +const resultYear = await replaceInFile({ + files: [join(dir, '*')], + from: yearRegex, + to: year +}); +const resultDay = await replaceInFile({ + files: [join(dir, '*')], + from: dayRegex, + to: day +}); + +const results = [...resultYear, ...resultDay]; + +if (results.filter((r) => r.hasChanged).length <= 0) { + console.error( + 'Something went wrong while replace placeholders! Did they change?' + ); + process.exit(1); +} + +console.log('Directory created! Have fun!'); diff --git a/package.json b/package.json index 10cbb7d..d343534 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,11 @@ }, "devDependencies": { "@types/bun": "latest", + "@types/prompts": "^2.4.9", "prettier": "^3.4.0", - "prettier-plugin-organize-imports": "^4.1.0" + "prettier-plugin-organize-imports": "^4.1.0", + "prompts": "^2.4.2", + "replace-in-file": "^8.2.0" }, "peerDependencies": { "typescript": "^5.0.0" diff --git a/template/20xx-xx.run.xml b/template/YYYY-DD.run.xml similarity index 55% rename from template/20xx-xx.run.xml rename to template/YYYY-DD.run.xml index ceca224..2a5b708 100644 --- a/template/20xx-xx.run.xml +++ b/template/YYYY-DD.run.xml @@ -1,6 +1,6 @@ - -