From 592301d1f8726dc070c43d32d5eaff7734ba0b28 Mon Sep 17 00:00:00 2001 From: vx-clutch Date: Thu, 21 Aug 2025 15:51:05 -0400 Subject: [PATCH] save --- .../index/config.h.1D4220C6FF66C46D.idx | Bin 332 -> 0 bytes .../index/contents.h.2CBC61E2CD5097B6.idx | Bin 4294 -> 0 bytes .../create_project.c.6C9F96E4B534FF2F.idx | Bin 4632 -> 0 bytes .../clangd/index/file.c.398C7881CF457486.idx | Bin 1020 -> 0 bytes .../clangd/index/main.c.7FD7D25CC47FF791.idx | Bin 2748 -> 0 bytes .../index/manifest.h.2E308175C3A2DDBB.idx | Bin 2578 -> 0 bytes .../clangd/index/print.c.568C625DB5D5283E.idx | Bin 614 -> 0 bytes .../index/standard.c.D171D886C087801F.idx | Bin 734 -> 0 bytes .../clangd/index/yait.h.D7502194D2C0AFD2.idx | Bin 838 -> 0 bytes .clangd | 2 +- Makefile | 2 +- TODO | 7 + bin/yait | Bin 0 -> 36080 bytes config.h | 5 - config.mak | 4 + configure | 2 +- doc/simple_project/Makefile | 8 + doc/simple_project/README | 3 + doc/simple_project/simple.c | 0 include/yait.h | 56 ++++--- src/contents.h | 57 +++---- src/create_project.c | 35 +++++ src/file.c | 2 +- src/main.c | 145 +++++++----------- src/standard.c | 4 +- src/standard.h | 8 + src/util.c | 14 ++ src/util.h | 8 + 28 files changed, 201 insertions(+), 161 deletions(-) delete mode 100644 .cache/clangd/index/config.h.1D4220C6FF66C46D.idx delete mode 100644 .cache/clangd/index/contents.h.2CBC61E2CD5097B6.idx delete mode 100644 .cache/clangd/index/create_project.c.6C9F96E4B534FF2F.idx delete mode 100644 .cache/clangd/index/file.c.398C7881CF457486.idx delete mode 100644 .cache/clangd/index/main.c.7FD7D25CC47FF791.idx delete mode 100644 .cache/clangd/index/manifest.h.2E308175C3A2DDBB.idx delete mode 100644 .cache/clangd/index/print.c.568C625DB5D5283E.idx delete mode 100644 .cache/clangd/index/standard.c.D171D886C087801F.idx delete mode 100644 .cache/clangd/index/yait.h.D7502194D2C0AFD2.idx create mode 100644 TODO create mode 100755 bin/yait create mode 100644 config.mak create mode 100644 doc/simple_project/Makefile create mode 100644 doc/simple_project/README create mode 100644 doc/simple_project/simple.c create mode 100644 src/standard.h create mode 100644 src/util.c create mode 100644 src/util.h diff --git a/.cache/clangd/index/config.h.1D4220C6FF66C46D.idx b/.cache/clangd/index/config.h.1D4220C6FF66C46D.idx deleted file mode 100644 index bcb14cfe8b6f19907513b9cca91ce8371b87d497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmWIYbaQiIWMFVk@vO*AElFfyU|z{A;eY)--WO zE=FDsUU`rd2t5BMtZ1;L+!!d#$HAun76TFm-%c#ny?xaaD9pjZ!4DJuaPCA4|9>4H zpfDo`qX10!$?gL=eFx3Mfx_$@>~Pg58k-ILrV7OYg*iDmd0?vl+^@AbJHI6lD9pma z0#_{@y4d5lR@FYBFe?YE2u$^XGu`?}cq|VBg?Tu5#9+cef8`{CIK@TD#oQnUqw$T1 L5HERwcMJ>wG^kI& diff --git a/.cache/clangd/index/contents.h.2CBC61E2CD5097B6.idx b/.cache/clangd/index/contents.h.2CBC61E2CD5097B6.idx deleted file mode 100644 index a89054b27334acc5d8034db0d9d221565d8b9a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4294 zcmYk<3s98h8VB(A`I{>en_T23-tr!%X($R^6~xfQPEi^nii&rvfV?XLC%mAAW`>HI z3_5A0Sqg$yi)d!4D1_&DNku@h#LHwVp1|{dyZcT5o!Rf%-~0S$XZL$%XXkl6G9u!8 zccsE6Mb1r3NQr+;Ddnl3$tg+GT8dKRpw!&l#MLEHrG4Bo|LhTRC_i}V#n}O4`ezrk z9OQ8!FS~d|_?75s#UXoe%+4P#Cr*dyEUqE>%uRR#&o~?-R{R{{h0ap z%H^@W&x8k7T~Gh}WZBUMuMbKi3X6uttXlTPqr8%4_1pe4cE9J*^8BU-+nT=HbDLj{ zTJmLO+M?xt`G2}Mv)E2uTd{Xj$jOz7AN&|wzOlZlHuz5H#FU&9YxmdmdLs2e__~_v zB(J>EeMK$)b-v533|q{D(9n^KeLtT(e)|0QW1%Ah<5X2pNa=v@Z=7>i$@3B?RO&lY zQ`!_YK4r65mA6vvKZxZA@pcx~QYkOjmg3&L{@=(NoaWQqs(f{5n^?9<8)q>>kJ&@( zha9U84O`v9s#@t#8%rBM`^5-6VGqn(Xbadj^^vPpwbp^3#PXB)JBtzWw1>uJ?`ryA znM+@*^3kC;EN}SQFGirbJy4er;D0$fM+dAr@ReA;5?^OALT>g@W7o58{tJ9YSk>b? zlrENZ32+u8B=*pMkM6Y=S1h$zRXZJO6icJ{Ig1f$VGq@IMA7{V6{S`cphIWHa#nw6 zM=?VF_RyMvf!lXaNjq#+ZFT6bSnleOqZpw!_RyA$S>;z>52>*#KOJgiY2|Id7y*kt zP@Q#WM|Dt#TC4KVfgNJmA#I(-2sN{ZY!z{-4gP+&t;$7*GR2aqznP;LA=pDIDPeN* z27Q0b>58j4Q~hHw9_B=K!!b_Bu~Oy~b;B5;dHk@j@nCNLQ5Sve>f&nrr0frKr25z~ zPqSf;Q8$bkn#bnw^s!@dW@Bf!(7Tn{2ZB!Pj+={{n|bc$?hbd$Kk|SF$rGL=FL;q! zqczDJ-XtIRkbL1w3P1pWt2$F6ct)ims$? z=tk;}?xY^*L3#>LkpdA&>WQADr|~qY7kZI;qc`apJVWY(KBT_rOL`X1l7bLK>W6-$ z{^(B%Mlfjr29O3~ASnbPq)>#Cp2Ksb=kYx01-w9d5igQn!b_x=@iJ);29XA1FewaS zq;Q0jhF}OO0uiL47)p8tuaF`UNg9S>q~RD&dKIsdMqmUf3Q?qy7)g2!uaTk=O?ne= zlHS5wq)`|}8jaDUxA8V91~H^D7(7*H$L7It~q(mf=W?>fT9lS$&7w?kZ!+WG8B$1Ml zOiDot>3zIUnvL0{IhaG5i@BtEm`9qA`J@F{Kw5}}q(xXnT8zb{RHTwJ1Q|kJDp<;1 zCRoN^E?CZ9Ay~oA5@fMg3RbdL30AQ`6nx13NbnImTae9OEm+N7BUr=!Snx4>tza$t z6Tv6!b%J&5PX(W{a|Ai;^@8>64T25qje?ErTtO~-lVB5jvtToOi(m`;Gr?!Yr)s-J%T;#Zv@}4zZHDT-YeM4-Y3|{E)W#33k8Mj z{eu1MB0&+mSWwJ9AUME2C^*Qr32f{VK?(bi;1Ii1P|7|mILtmGIKnrVEKpHz8NM~mN8UNT^`t%Cn*!aw~!Cdro!?ER= z4Rg8E4d+Vd?3fFkZaCLCXTx0Lbi>%-%r`PuH+}5b+suZ!uIYwzNpp6R5@yC5FO!od VChHwl?{YaCqa*uxZ0)Jk{{g!4LVf@M diff --git a/.cache/clangd/index/create_project.c.6C9F96E4B534FF2F.idx b/.cache/clangd/index/create_project.c.6C9F96E4B534FF2F.idx deleted file mode 100644 index 7bff9d03ce56d3dfcc2669ccbf5175206fb085a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4632 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 HXodd)URwVa diff --git a/.cache/clangd/index/file.c.398C7881CF457486.idx b/.cache/clangd/index/file.c.398C7881CF457486.idx deleted file mode 100644 index 5dd1d90e3596dd2ba6a4a915d333a53f9d5c6188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1020 zcmWIYbaVT{%)sEB;#rZKT9U}Zz`!5`#Kk2=nPQ9#4DCz|3>9-)Cpu;yHsERf8eH@u zQMS;9d$GWa%-vrCswCe?#JK13bjFIb>P`9g{id{bV&=7O!}rxylX5C%#ft4*X`+6f z{e15iuTRb1r~S-DE}p2roRl%^&eO*$EHzkPy)E5- zH}BqceeHnVsw?3-$vjT}ZOhIaC_i-Bk!}VTb`sm?VrnAmiKdbU)DePAl&Ah zVaK+d_x(rKikcgF#g(~9$-q#uwhlHfEMsNhVGvh)OU@aKeOnM3otp;k?Y?&N`vF zsj7@TqN?1gQZPkzbEOyWaDHYC6qaF>VTak!uztGV)WAdLKw&*rJua9NSyh>i>Y2PkaKYRv`n@x2XljUJcP5zGvrS3yArbMCiIPd{II+SUeCEy*a!2~&OM)BLCH{j9Tr!fJeK z;xMyKe!Qp>@6cHUbbvmmJ|D~w9#I=k8#r%i!HP|1-nAbD>ec4d7KJIgQJZ$|Vqfob zps=2xo(4?#uk&Swt;rkT0F9JllwyYo^N6Z5s>69O`CM}F?j)BSVq zRi9%xd3sULDfb&+EJ`|iB)@6>OQt*RgP--AM&ch1M<#!4i0{r$9CxU)NT2d^Wv?-~ zFg7K2!Or3xXE%Ss_%Y3Ki$30{XMxK;z1bHK zCaUfnwTt6OoHz57w;0vj`3*%pk5S0TXpBtB5u=D4F$(D+ju=Jkh>>BZYwI^I9&ytv zFiF*>>O?c??&(6rn9O#cEkT)zOpT~%o@mxHbR#1F4P#)}EE>pO;P---`8hw(>FHY; zYov!3Lt^~d5o0n{Gu4NooLS=r6EDA=OqKNG^g+xhCK~}Zf`-|u$-8FhRGdmyVUnfJ zlBC|Ew74@{m{cpPC8!=$^`H~k&7j^4lC|4GyA*I3f$0O_M{1qGb^bjgVx}|c6hRPp6Nh*Uk$B- zCCVjQCbn0U_g)BK@jco8%5koB#|m1x#j0W~s;5B1~0ThpcL!d zAev!z$rSv5+8rj@vTT*;WT9-K1Ql|HN|9@VfF=lL2H6b!|Jvi~zW&DP)8B2T;qM22 zznJM~pnX5{rM?zQ7_~-MW|++!|DQIB$xeWs;KKYgety3*`{m26bae-e>45Pp6$^d$ z?5GZ3)J6%jhuM#r`#8pMp-#JPHx<{aYK2b4>Wg}_w`OL+c2griffkQc969L&-g11x4!QhQXHi&vgBEk zQ=c!JFFExbS&jr*IE$0$u$rrOVgX@N53+g?`gW9W*ROxLB^;;muLRjjk?^hiy6k52 zh2ylMXFAQKUjUAQ$x_WyBBI)e+9-xfm#ezMZ%#ZxZOzfm@njn~*S{g67f}$X0=x5tyt4SSM~VApgAux%=l{ zr0Z=EV1rP0W*66P`E!Nsi|;5ANg{=-mHXB_(}ZrP>-I~kPH<-XqxVm3kRYSlC?Lz! zZ`xcu6CcqfsmfGAj7d69cM}cF#Kj`4C^{{ diff --git a/.cache/clangd/index/manifest.h.2E308175C3A2DDBB.idx b/.cache/clangd/index/manifest.h.2E308175C3A2DDBB.idx deleted file mode 100644 index 4d67cdba2a9f4b5b6c0f195acee5ea397ed419a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2578 zcmYjS2~bm46n!5^_@DeF1QJw8{GgBkK>~_mp;QD3L}gUeRJ86OwMtcj0_xCFM=E2r z2x=GH>RKJFIx4PJKrOY^792M$t+XhuOLcIoAZqV>@gi@AGkNEqbKmm+xun^wRu2zC z5;JW1*_pXh-3TFG@aM?QnR%5XgmWb%f5ZH=)Rn(Qcy4rja!&uOMC*It*2ok~d1~r_ zl9&K#?WPOk)=$@^_bolSJLKg6y0WVNo0|Lwqi<}g zaZ8Sxk@~mJx0~znN6YGunf8sXI=Fh>tlrl4a~Tz5|6Tl_?7YvwpK4Ra<*xsz&zh6F zzB_&W_zJsi_tL-I&D*nQ^656k)vwQdU7p1slh>-4EDCCd%-FP!tfa@T%2KtJGpt9$K}1v>rS z9#2lsnsC%n)wW={f0la0`HtdQ2QSryWUNUvmo)xbz9lMSMEae@shXkLmxuGCj*S=c z?Dh@0T0^U`t#wGM{fp4Ew)wj%s} zX15L>c%Z&)EfGmKLZmqFI6VU*xN^kk$4Rn%`t{bRDgTISB7i`{Y2*y(j1SR+;Hq1s zZeqbvt(tTPfj8&v!GH>SFhON~WOc`U_f~I3Smr2@M}oAydp(GLct&D5-BpEei+~%b^TTOo)aZ0D$*1DM!C_80s0$e zq%9fu@Tpx*l;HR0`~?Qo@4?pJ_Q$4Ey^Ft{tRO}Z1h@n!8BhU)0T!^Go>yGdf8BI7 z(SSh9X_X9E1$M;X)|Z;NVZ-LCi5vu;oTrQd708&NxnX>`>1kS?iiE=!O>&cx0dBGK zZ2G8*_}WD((gz-gxreD3;N!OPv4>o?Z1_Y)%!GQXmFDSc^KNWT>^st&X7RihAa$`UR z-t2nT2Dd%z@ErWJ8oom!_2haA45+}sb}(gG`Y2Pi{HBWZh8;u*5lRNQgF0XG=*QNA z#|jb%{$Q72fx+7yglStnn`4eYR}pvc2g(Bl2I!v;edRof$l#@6k$kPLynd4Qe*C=|>lk)0d#-9zchHQAfIBNAsEs_sf<79m~i1AdTUNqtfIfElLSO zf)?*Xl!gdHI%n7ppc3r`Xu&oBH%of}(xMbE#Cu~UygcyIK7gWI_u7-Ao-VAQZ=AF7 zsK(9!C23ngwJ4c6vj>K5Oxd7E7jLXS2qmNWX!tke9N08~rX2%mY!y(F_6ej#$tqYo z-+xPEdD`UI&wdB5zzfjToCCWE(6oghof&;;t7o^QR+%Ubk_}Se=0$0+Y;c!ZqAan? zEJ>EsWtJ>U?wnyWf*sOMgsX^B1Q)^M7O)|~R%kau5#9;Vv$yw9Lyr8@xq0HX zUxtlOyyr9oEiiliH*dRb%4yLRf0?daw7BkD-J9efsIk#Eqjk-xNTVES$K&cM={237 zMH57`x*sOlPLuhVX7TURgr*1^?%yjo+sxJ9M}24MyUJ{}ex zZhn3ier^U%CPoG!UPgXahN9H8;(tJu|5G)hjdpBfXXfD(L;&%xtn~gTEhf%Dx)A=H4mRKqcEHYGlP)}>}{Ci z{yJY~*qXfY4bVstMiF+Ha8YVbB8XjFlw7P2V!%Dgz#stPg8?I7MdF7YZE>?NGV==x dFbKlL85ojtQ*yY0TrN%?4mNgH7EWev1^{B6!ngnc diff --git a/.cache/clangd/index/standard.c.D171D886C087801F.idx b/.cache/clangd/index/standard.c.D171D886C087801F.idx deleted file mode 100644 index e8c1cba90571fa33c072f8b829b933aeae9ddb1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmWIYbaT7L#K7R3;#rZKT9U}Zz`!5`#Kk2=ncso*14aghiaD(T2eS?v@LXN~xnMA zRoAZgzSlVaDO)pbdg@Ut zXPJSDJkPNubHW_YbLRO~%SpI6TxFBmw#;eHwOwtuE5DmR-~PY;%EsyfnadlLZ@<3i zy19Oz^tt+7Ja3N8IlTYj0wOxMkA4}8_vY|0 zh%zwn3$X}E35c_ZOEGXVF*1noG77LV6s4vWs{=!+;M-tE?>*Y`bU-2_s^EY1$I0jP*s0nQT+UF`8& zt7;$60(mZZF_=jQ&UEV^;jugj6jtU?h6|^fUs@y}?)njEq$ryx55h>{ gPcty^AruHBn8~>*Iov=l7bgz~8#^ltCo?w#09tJ2EdT%j diff --git a/.cache/clangd/index/yait.h.D7502194D2C0AFD2.idx b/.cache/clangd/index/yait.h.D7502194D2C0AFD2.idx deleted file mode 100644 index c55bf45cb854418e6c2ce1e019b3e04a8231af62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmWIYbaS&~W?*nm@vO*AElFfyU|F1|KE{hKf0@6E6B4HsEpntXX-( zIXbkrVf#PEc)`e(x7jW(DcaMUd29dU9#+MugWgZ>RO`w|hqk{CexIgrw`Zc*gRt`0 z^3_-QlUe8GueFPr|KH=-goyf^&C40M-$iO4UHO8W#Xc$N^sXsKtz7M2tg=*_aiQ<{ zgIBBS1b!Tl$|(B&{xtIn!KYJZo7dcrid%Gb_dl_}(`T)8y~QY2+Q0QG>*k(4!q-lH zU4KfDX>qGT1W!*&s)kixiRLvoiNDsjHb1|~CFUJ&*z(4AkrsPZ@);R%laDENH zWp2`QV7ORY2OAfbu`=*52mpB?AS}!xEW^Ob!NefK%P7oxXZjuO1hKMI9tLrUJcF<# zi=+?(Cl?Du!Ew(=zl_Cub9fj;VG6`q#HAQGdDtKdT3JuzakDgK@6sVpM{^BffE>`U`MWe z#_+8D`r_|A4E!(!qAa2!2n7s9scFT3fpReaGIB!v300mM+*v0yH&vC9OPH5~7v@uj zI49|wu2(ud7Q%+b;I$yKnHSiaKZwT;YMxRxr=?h&w;``96a(+#SF0U02%@g2bg$K fYEB}EU0jr04ECh(vo9%gWcQiHGYWyT2~;5fEt=>U diff --git a/.clangd b/.clangd index 99e6d2d..2dc4053 100644 --- a/.clangd +++ b/.clangd @@ -1,2 +1,2 @@ CompileFlags: - Add: ["-std=c2x"] + Add: ["--std=c2x", "-xc"] diff --git a/Makefile b/Makefile index 4f47174..bd4f22a 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ all: @exit 1 else -all: build $(YAIT) $(YAIT_DOC) +all: build $(YAIT) build: mkdir -p bin diff --git a/TODO b/TODO new file mode 100644 index 0000000..d5bf250 --- /dev/null +++ b/TODO @@ -0,0 +1,7 @@ +VX yait --- TODO + +Todo: + + * Argument Parsing + +end of file TODO diff --git a/bin/yait b/bin/yait new file mode 100755 index 0000000000000000000000000000000000000000..17b3c136968bd6d6fcd649d4b8df2233aec73ff2 GIT binary patch literal 36080 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 literal 0 HcmV?d00001 diff --git a/config.h b/config.h index a453cf4..a95c4df 100644 --- a/config.h +++ b/config.h @@ -9,9 +9,4 @@ #define VERSION "alpha" #define YEAR 2025 -/* Custom error codes */ -#define HELP_REQUESTED 2 -#define ERROR_MEMORY_ALLOCATION 3 -#define ERROR_DIRECTORY_CREATION 4 - #endif diff --git a/config.mak b/config.mak new file mode 100644 index 0000000..09c76f2 --- /dev/null +++ b/config.mak @@ -0,0 +1,4 @@ +PREFIX=/usr/bin/ +CFLAGS=-ggdb -std=c23 +LDFLAGS= +CC=gcc diff --git a/configure b/configure index 82d9fed..1cd93d2 100755 --- a/configure +++ b/configure @@ -19,7 +19,7 @@ cmdexists () { type "$1" >/dev/null 2>&1 ; } trycc () { test -z "$CC" && cmdexists "$1" && CC=$1 ; } prefix=/usr/bin/ -CFLAGS="-Wall -Wextra -O2 --std=c23" +CFLAGS="-Wall -Wextra -O2 --std=c23 -Wpedantic" LDFLAGS= CC= diff --git a/doc/simple_project/Makefile b/doc/simple_project/Makefile new file mode 100644 index 0000000..c882a16 --- /dev/null +++ b/doc/simple_project/Makefile @@ -0,0 +1,8 @@ +.POSIX: +CC ::= gcc +CFLAGS ::= -Wall -Wpedenatic -O2 + +all: simple + +clean: + $(RM) simple diff --git a/doc/simple_project/README b/doc/simple_project/README new file mode 100644 index 0000000..87f67af --- /dev/null +++ b/doc/simple_project/README @@ -0,0 +1,3 @@ +simple.c vx-clutch + +A simple program that does simple things. diff --git a/doc/simple_project/simple.c b/doc/simple_project/simple.c new file mode 100644 index 0000000..e69de29 diff --git a/include/yait.h b/include/yait.h index c1e3387..9713199 100644 --- a/include/yait.h +++ b/include/yait.h @@ -9,47 +9,43 @@ #ifndef YAIT_H #define YAIT_H +typedef struct { + bool posix; + bool git; + bool clang; + bool lib; + bool cc; + bool gnu; + /* If this flag is set it will ignore: GNU, and enforce POSIX. */ + bool simple; +} flag_t; + +typedef struct { + bool ncurses; + bool raylib; + bool stb; + bool uthash; + bool linenoise; +} libmap_t; + typedef enum { - BSD3, - GPLv3, MIT, - UNLICENCE, - LICENCE_HELP, + GPL, + BSD, + UNL, } licence_t; -/* A bit field is used so that we can accomplish two things. (a) store lots of - libraries without taxing memory; and (b) a dynamic array is not neccescary. - */ -typedef enum { - LIB_NONE = 0, - LIB_RAYLIB = 1 << 0, - LIB_NCURSES = 1 << 1, - LIB_CURL = 1 << 2, - LIB_COUNT_, - LIB_HELP, -} lib_flags_t; - -typedef struct { - bool GNU; - bool git; - bool clang_format; - bool use_cpp; -} flags_t; - typedef struct { + libmap_t libraries; licence_t licence; + flag_t flags; + char *project; char *name; - lib_flags_t libraries; - flags_t flag; } manifest_t; -#define HAS_LIBRARY(libs, lib) ((libs) & (lib)) -#define ADD_LIBRARY(libs, lib) ((libs) |= (lib)) -#define REMOVE_LIBRARY(libs, lib) ((libs) &= ~(lib)) - int create_project(manifest_t manifest); int mkdir_p(const char *path); -int create_file_with_content(const char *path, const char *format, ...); +int cfprintf(const char *path, const char *format, ...); #endif // YAIT_H diff --git a/src/contents.h b/src/contents.h index aa59981..3db82a1 100644 --- a/src/contents.h +++ b/src/contents.h @@ -10,10 +10,9 @@ #ifndef CONTENTS_H #define CONTENTS_H -#define line(l) l "\n" +#define line(ln) ln "\n" -/* README template */ -char *readme_template = +char *readme = line ("%s ( concise description )") line () line ("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor") @@ -23,8 +22,7 @@ char *readme_template = line ("fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in") line ("culpa qui officia deserunt mollit anim id est laborum."); -/* configure script template */ -char *configure_template = +char *configure = line ("#!/bin/sh") line () line ("usage() {") @@ -41,7 +39,7 @@ char *configure_template = line ("exit 0") line ("}") line () - line ("echo () { printf \"%s\\n\" \"$*\" ; }") + line ("echo () { printf \"%%s\\n\" \"$*\" ; }") line ("cmdexists () { type \"$1\" >/dev/null 2>&1 ; }") line ("trycc () { test -z \"$CC\" && cmdexists \"$1\" && CC=$1 ; }") line () @@ -59,8 +57,8 @@ char *configure_template = line ("done") line () line ("printf \"checking for C compiler... \"") - line ("%s") - line ("printf \"%s\\n\" \"$CC\"") + line ("%%s") + line ("printf \"%%s\\n\" \"$CC\"") line () line ("printf \"checking weather C compiler works... \"") line ("status=\"fail\"") @@ -69,19 +67,18 @@ char *configure_template = line ("if output=$($CC $CFLAGS -c -o /dev/null \"$tmpc\" 2>&1) ; then") line ("printf \"yes\\n\"") line ("else") - line ("printf \"no; %s\\n\" \"$output\"") + line ("printf \"no; %%s\\n\" \"$output\"") line ("exit 1") line ("fi") line () line ("printf \"creating config.mak... \"") - line ("printf \"PREFIX=%s\\n\" \"$prefix\" > config.mak") - line ("printf \"CFLAGS=%s\\n\" \"$CFLAGS\" >> config.mak") - line ("printf \"LDFLAGS=%s\\n\" \"$LDFLAGS\" >> config.mak") - line ("printf \"CC=%s\\n\" \"$CC\" >> config.mak") + line ("printf \"PREFIX=%%s\\n\" \"$prefix\" > config.mak") + line ("printf \"CFLAGS=%%s\\n\" \"$CFLAGS\" >> config.mak") + line ("printf \"LDFLAGS=%%s\\n\" \"$LDFLAGS\" >> config.mak") + line ("printf \"CC=%%s\\n\" \"$CC\" >> config.mak") line ("printf \"done\\n\""); -/* Makefile template */ -char *makefile_template = +char *makefile = line ("prefix = /usr/bin") line () line ("%s_SRCS := $(wildcard %s/*.c)") @@ -127,12 +124,10 @@ char *makefile_template = line () line (".PHONY: all clean dist-clean install uninstall"); -/* .clang-format template */ -char *clang_format_template = +char *clang_format = line ("BasedOnStyle: GNU"); -/* BSD 3-Clause License template */ -char *bsd3_license_template = +char *bsd3_license = line ("BSD 3-Clause License") line () line ("Copyright (c) %d, %s") @@ -162,16 +157,13 @@ char *bsd3_license_template = line ("OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE") line ("OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."); -/* MIT License template */ -char *mit_license_template = +char *mit_license = line ("THIS IS THE MIT LICENSE"); -/* GPLv3 License template */ -char *gplv3_license_template = +char *gplv3_license = line ("THIS IS THE GPLv3 LICENSE"); -/* config.h template */ -char *config_h_template = +char *config_h = line ("#ifndef CONFIG_H") line ("#define CONFIG_H") line () @@ -188,8 +180,7 @@ char *config_h_template = line () line ("#endif"); -/* main.c (non-GNU) template */ -char *main_c_template = +char *main_c = line ("#include ") line () line ("int main(void) {") @@ -197,8 +188,7 @@ char *main_c_template = line (" return 0;") line ("}"); -/* main.c (GNU) template */ -char *main_c_gnu_template = +char *main_c_gnu = line ("#include ") line ("#include \"standard.h\"") line () @@ -214,8 +204,7 @@ char *main_c_gnu_template = line (" return 0;") line ("}"); -/* standard.c template */ -char *standard_c_template = +char *standard_c = line ("#include \"standard.h\"") line ("#include \"../config.h\"") line ("#include ") @@ -241,8 +230,7 @@ char *standard_c_template = line (" return HELP_REQUESTED;") line ("}"); -/* standard.h template */ -char *standard_h_template = +char *standard_h = line ("#ifndef STANDARD_H") line ("#define STANDARD_H") line () @@ -250,8 +238,7 @@ char *standard_h_template = line () line ("#endif"); -/* WHATNEXT.md template */ -char *what_next_template = +char *what_next = line ("# What next?") line ("") line ("## Steps") diff --git a/src/create_project.c b/src/create_project.c index ee43800..ced71b7 100644 --- a/src/create_project.c +++ b/src/create_project.c @@ -6,9 +6,44 @@ * */ +#include +#include + #include "../include/yait.h" +#include "contents.h" + +char buffer[BUFSIZ]; int create_project(manifest_t manifest) { + mkdir_p(manifest.project); + chdir(manifest.project); + + if (manifest.flags.simple) { + cfprintf( + "Makefile", + ".POSIX:\nCC ::= gcc\nCFLAGS ::= -Wall --std=c23 -Wpedantic\n\nall: %s", + manifest.project); + cfprintf("README", "%s", manifest.project); + + snprintf(buffer, BUFSIZ, "%s.c", manifest.project); + cfprintf(buffer, ""); + return 0; + } + + cfprintf("Makefile", ""); + cfprintf("configure", configure); + cfprintf(".clang-format", ""); + cfprintf("README", readme, manifest.name); + cfprintf("src/main.c", ""); + + snprintf(buffer, BUFSIZ, "include/%s.h", manifest.project); + cfprintf(buffer, ""); + + snprintf(buffer, BUFSIZ, "man/%s.1", manifest.project); + cfprintf(buffer, ""); + + cfprintf("doc/WHATNEXT", what_next); + return 0; } diff --git a/src/file.c b/src/file.c index 2a082f0..538a508 100644 --- a/src/file.c +++ b/src/file.c @@ -47,7 +47,7 @@ int mkdir_p(const char *path) return status; } -int create_file_with_content(const char *path, const char *format, ...) +int cfprintf(const char *path, const char *format, ...) { char *dirpath; const char *slash = strrchr(path, '/'); diff --git a/src/main.c b/src/main.c index 9c33f50..d596ec9 100644 --- a/src/main.c +++ b/src/main.c @@ -10,106 +10,68 @@ #include #include +#define _POSIX_C_SOURCE 200809L // popen extention #include #include #include #include -#include "../config.h" #include "../include/yait.h" -#include "standard.c" +#include "standard.h" +#include "util.h" #define print_option(option, description) \ - printf(" %-20s %-20s\n", option, description) + fprintf(stderr, " %-20s %-20s\n", option, description) -// clang-format off -static void -usage (int status) +static void usage(int status) { - if (status != 0) - { - fprintf (stderr, "Try 'yait --help' for more information.\n"); - return; - } + if (status != 0) { + fputs("Try 'yait --help' for more information.\n", stderr); + return; + } - printf ("Usage: yait [OPTION]... \n"); - printf ("Creates a C project with opinionated defaults.\n"); - printf ("When only given the first argument it will detect your name.\n\n"); - printf ("Mandatory arguments to long options are mandatory for short options too\n"); - print_option ("-l, --licence=NAME", "Set licence (gpl, mit, bsd) [default: bsd]"); - print_option ("--lib=LIB", "Add a library to the project. You can list libraries with --lib=help."); - print_option ("--use-cpp", "Uses the CPP language instead of C"); - print_option ("--git", "Initialize git repository"); - print_option ("--GNU", "Adds standard GNU argument parsing to your project"); - printf (" --help display this help text and exit\n"); - printf (" --version output version information and exit\n"); + fputs("Usage: yait [OPTION]... ", stderr); + fputs("Creates a C project with opinionated defaults.", stderr); + fputs("When only given the first argument it will detect your name.\n", + stderr); + fputs("Mandatory arguments to long options are mandatory for short options too", + stderr); + print_option("--posix", "Enable POSIX compliance"); + print_option("--git", "Do not inititize git reposity"); + print_option("--clang", "Add clang-format files and tooling"); + print_option("-L ", "Set licence"); + print_option("-l ", "Add a library"); + print_option("-C", "Use C++"); + print_option("--GNU", + "Add GNU argument parsing: --version, and --help"); + print_option("-S, --simple", "Enable simple mode"); + fputs(" --help display this help text and exit", stderr); + fputs(" --version output version information and exit", stderr); } -// clang-format on static int parse_arguments(manifest_t *conf, int argc, char **argv) { - static struct option long_options[] = { - { "GNU", no_argument, 0, 'g' }, - { "use-cpp", no_argument, 0, 'c' }, - { "git", no_argument, 0, 'i' }, - { "licence", required_argument, 0, 'l' }, - { "lib", required_argument, 0, 'L' }, - { "help", no_argument, 0, 'h' }, - { 0, 0, 0, 0 } - }; - int opt; - while ((opt = getopt_long(argc, argv, "gcil:L:h", long_options, - NULL)) != -1) { + + while ((opt = getopt(argc, argv, "L:l:CS")) != -1) { switch (opt) { - case 'g': - conf->flag.GNU = true; - break; - case 'c': - conf->flag.use_cpp = true; - break; - case 'i': - conf->flag.git = true; + case 'L': + conf->licence = TOlicence(optarg); break; case 'l': - if (strcmp(optarg, "bsd") == 0) - conf->licence = BSD3; - else if (strcmp(optarg, "gpl") == 0) - conf->licence = GPLv3; - else if (strcmp(optarg, "mit") == 0) - conf->licence = MIT; - else { - fprintf(stderr, "Unknown licence: %s\n", - optarg); - exit(EXIT_FAILURE); - } break; - // case 'L': - // if (strcmp(optarg, "help")) - // fprintf(stderr, "raylib\nncurses\ncurl\n"); - // else - // ADD_LIBRARY(conf->libraries, TOLibrary(optarg)); - // break; - case 'h': - usage(0); - exit(0); + case 'C': + conf->flags.cc = true; + break; + case 'S': + conf->flags.simple = true; + break; default: - usage(1); - exit(1); + fprintf(stderr, "Usage: %s [--help]\n", argv[0]); + return 1; } } - if (optind >= argc) { - fprintf(stderr, "Missing required path argument\n"); - usage(1); - exit(EXIT_FAILURE); - } - - conf->project = argv[optind++]; - - if (optind < argc) - conf->name = argv[optind++]; - return 0; } @@ -145,7 +107,24 @@ int get_name(char **output) int main(int argc, char **argv) { int status; - manifest_t manifest = { 0 }; + manifest_t manifest = { + .project = "Project", + .name = "author", + .licence = UNL, + .libraries.ncurses = false, + .libraries.raylib = false, + .libraries.stb = false, + .libraries.uthash = false, + .libraries.linenoise = false, + + .flags.posix = false, + .flags.git = true, + .flags.clang = false, + .flags.lib = false, + .flags.cc = false, + .flags.gnu = true, + .flags.simple = false, + }; status = parse_standard_options(usage, argc, argv); if (status != 0 && status != HELP_REQUESTED) @@ -154,14 +133,8 @@ int main(int argc, char **argv) parse_arguments(&manifest, argc, argv); - if (!manifest.name) { - status = get_name(&manifest.name); - if (status != 0 || !manifest.name || manifest.name[0] == '\0') { - fprintf(stderr, "Could not determine user name\n"); - return EXIT_FAILURE; - } - } - + get_name(&manifest.name); status = create_project(manifest); - return status == 0 ? EXIT_SUCCESS : EXIT_FAILURE; + + return EXIT_SUCCESS; } diff --git a/src/standard.c b/src/standard.c index 176d31b..f11c722 100644 --- a/src/standard.c +++ b/src/standard.c @@ -10,11 +10,13 @@ #define COMMIT 0 #endif -#include "../config.h" #include #include #include +#include "../config.h" +#include "standard.h" + int parse_standard_options(void (*usage)(int), int argc, char **argv) { for (int i = 0; i < argc; ++i) { diff --git a/src/standard.h b/src/standard.h new file mode 100644 index 0000000..a71b41d --- /dev/null +++ b/src/standard.h @@ -0,0 +1,8 @@ +#ifndef STANDARD_H +#define STANDARD_H + +#define HELP_REQUESTED 2 + +int parse_standard_options(void (*usage)(int), int argc, char **argv); + +#endif diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..23850ef --- /dev/null +++ b/src/util.c @@ -0,0 +1,14 @@ +#include + +#include "util.h" +#include "../include/yait.h" + +// clang-format off +licence_t TOlicence(const char *s) +{ + if (strcmp(s, "mit")) return MIT; + if (strcmp(s, "gpl")) return GPL; + if (strcmp(s, "bsd")) return BSD; + return UNL; +} +// clang-format on diff --git a/src/util.h b/src/util.h new file mode 100644 index 0000000..ec6abec --- /dev/null +++ b/src/util.h @@ -0,0 +1,8 @@ +#ifndef UTIL_H +#define UTIL_H + +#include "../include/yait.h" + +licence_t TOlicence(const char *s); + +#endif