From 147c8ae4e6031ba4d3c11f717c57afc6919d478e Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski <0mp@FreeBSD.org> Date: Sat, 6 Mar 2021 19:46:17 +0000 Subject: [PATCH] Add shells/modernish The programming/scripting language that incorporates the most frustrating combination of deficiencies and awesome power is probably the POSIX shell with accompanying utilities, which all exist in several variant implementations. Due to said power, the shell refuses to die as a scripting language. But when scripters are bitten by arcane grammar pitfalls, defective tutorials on the web, or shell functionality deficits, then 'use a real programming language instead' is generally the mantra. Enter modernish, a new vision on shell scripting. Modernish aims to provide a standard library that allows for writing robust, portable, readable, and powerful programs for POSIX-based shells and utilities. It can solve the shell language problems mentioned above, and many more. With modernish, you'd almost think the shell has become a modern programming language! The library builds on the POSIX 2018 Edition standard, so it should run on any sufficiently POSIX-compliant shell and operating system. But it also takes advantage of certain shell-specific enhancements if it detects them. WWW: https://github.com/modernish/modernish Differential Revision: https://reviews.freebsd.org/D19350 --- shells/Makefile | 1 + shells/modernish/Makefile | 30 ++++ shells/modernish/distinfo | 3 + shells/modernish/pkg-descr | 19 +++ shells/modernish/pkg-plist | 271 +++++++++++++++++++++++++++++++++++++ 5 files changed, 324 insertions(+) create mode 100644 shells/modernish/Makefile create mode 100644 shells/modernish/distinfo create mode 100644 shells/modernish/pkg-descr create mode 100644 shells/modernish/pkg-plist diff --git a/shells/Makefile b/shells/Makefile index e5bf1f4012ef..998b25b7ec7f 100644 --- a/shells/Makefile +++ b/shells/Makefile @@ -31,6 +31,7 @@ SUBDIR += ksh93 SUBDIR += ksh93-devel SUBDIR += mksh + SUBDIR += modernish SUBDIR += nologinmsg SUBDIR += ohmyzsh SUBDIR += oksh diff --git a/shells/modernish/Makefile b/shells/modernish/Makefile new file mode 100644 index 000000000000..07b06d91c955 --- /dev/null +++ b/shells/modernish/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +PORTNAME= modernish +DISTVERSIONPREFIX= v +DISTVERSION= 0.16.5 +CATEGORIES= shells + +MAINTAINER= 0mp@FreeBSD.org +COMMENT= POSIX shell feature detection and language extension library + +LICENSE= ISCL +LICENSE_FILE= ${WRKSRC}/LICENSE + +USE_GITHUB= yes + +NO_ARCH= yes +NO_BUILD= yes + +OPTIONS_DEFINE= DOCS EXAMPLES + +do-install: + cd ${WRKSRC} && \ + ${SETENV} ${MAKE_ENV} ./install.sh -d ${PREFIX} -D ${STAGEDIR} -n -s ${SH} + + ${RM} ${STAGEDIR}${DOCSDIR}/LICENSE + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR:H} + ${MV} ${STAGEDIR}${DOCSDIR}/examples ${STAGEDIR}${EXAMPLESDIR} + ${RLN} ${STAGEDIR}${EXAMPLESDIR} ${STAGEDIR}${DOCSDIR}/examples + +.include diff --git a/shells/modernish/distinfo b/shells/modernish/distinfo new file mode 100644 index 000000000000..d463e9df3eec --- /dev/null +++ b/shells/modernish/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1615056285 +SHA256 (modernish-modernish-v0.16.5_GH0.tar.gz) = 0964bbe0fe0b24eecf62dfbef089710358d468c1eb09e2d48008ca7753beb8e1 +SIZE (modernish-modernish-v0.16.5_GH0.tar.gz) = 342457 diff --git a/shells/modernish/pkg-descr b/shells/modernish/pkg-descr new file mode 100644 index 000000000000..f7d7da6284a8 --- /dev/null +++ b/shells/modernish/pkg-descr @@ -0,0 +1,19 @@ +The programming/scripting language that incorporates the most frustrating +combination of deficiencies and awesome power is probably the POSIX shell with +accompanying utilities, which all exist in several variant implementations. Due +to said power, the shell refuses to die as a scripting language. But when +scripters are bitten by arcane grammar pitfalls, defective tutorials on the +web, or shell functionality deficits, then 'use a real programming language +instead' is generally the mantra. + +Enter modernish, a new vision on shell scripting. Modernish aims to provide a +standard library that allows for writing robust, portable, readable, and +powerful programs for POSIX-based shells and utilities. It can solve the shell +language problems mentioned above, and many more. With modernish, you'd almost +think the shell has become a modern programming language! + +The library builds on the POSIX 2018 Edition standard, so it should run on any +sufficiently POSIX-compliant shell and operating system. But it also takes +advantage of certain shell-specific enhancements if it detects them. + +WWW: https://github.com/modernish/modernish diff --git a/shells/modernish/pkg-plist b/shells/modernish/pkg-plist new file mode 100644 index 000000000000..a7b684d4bfb2 --- /dev/null +++ b/shells/modernish/pkg-plist @@ -0,0 +1,271 @@ +bin/modernish +lib/modernish/aux/cap/BUG_LNNONEG.sh +lib/modernish/aux/cap/BUG_LOOPRET3.sh +lib/modernish/aux/cap/BUG_TRAPFNEXI.sh +lib/modernish/aux/cap/DOTARG.sh +lib/modernish/aux/ematch.awk +lib/modernish/aux/fatal.sh +lib/modernish/aux/id.sh +lib/modernish/aux/std.sh +lib/modernish/aux/sys/base/tac.awk +lib/modernish/aux/sys/cmd/mapr.awk +lib/modernish/aux/var/loop/find-ok.sh +lib/modernish/aux/var/loop/find-path.sh +lib/modernish/aux/var/loop/find.awk +lib/modernish/aux/var/loop/find.sh +lib/modernish/cap/ADDASSIGN.t +lib/modernish/cap/ANONFUNC.t +lib/modernish/cap/ARITHCMD.t +lib/modernish/cap/ARITHFOR.t +lib/modernish/cap/ARITHPP.t +lib/modernish/cap/BUG_ALIASCSHD.t +lib/modernish/cap/BUG_ALIASCSUB.t +lib/modernish/cap/BUG_ALIASPOSX.t +lib/modernish/cap/BUG_APPENDC.t +lib/modernish/cap/BUG_ARITHINIT.t +lib/modernish/cap/BUG_ARITHLNNO.t +lib/modernish/cap/BUG_ARITHSPLT.t +lib/modernish/cap/BUG_ARITHTYPE.t +lib/modernish/cap/BUG_ASGNCC01.t +lib/modernish/cap/BUG_ASGNLOCAL.t +lib/modernish/cap/BUG_BRACQUOT.t +lib/modernish/cap/BUG_CASELIT.t +lib/modernish/cap/BUG_CASEPAREN.t +lib/modernish/cap/BUG_CASESTAT.t +lib/modernish/cap/BUG_CDPCANON.t +lib/modernish/cap/BUG_CMDEXEC.t +lib/modernish/cap/BUG_CMDEXPAN.t +lib/modernish/cap/BUG_CMDOPTEXP.t +lib/modernish/cap/BUG_CMDPV.t +lib/modernish/cap/BUG_CMDSETPP.t +lib/modernish/cap/BUG_CMDSPASGN.t +lib/modernish/cap/BUG_CMDSPEXIT.t +lib/modernish/cap/BUG_CMDVRESV.t +lib/modernish/cap/BUG_CSNHDBKSL.t +lib/modernish/cap/BUG_CSUBRMLF.t +lib/modernish/cap/BUG_CSUBSTDO.t +lib/modernish/cap/BUG_DEVTTY.t +lib/modernish/cap/BUG_DOLRCSUB.t +lib/modernish/cap/BUG_DQGLOB.t +lib/modernish/cap/BUG_EVALCOBR.t +lib/modernish/cap/BUG_EXPORTUNS.t +lib/modernish/cap/BUG_FNSUBSH.t +lib/modernish/cap/BUG_FORLOCAL.t +lib/modernish/cap/BUG_GETOPTSMA.t +lib/modernish/cap/BUG_HDOCBKSL.t +lib/modernish/cap/BUG_HDOCMASK.t +lib/modernish/cap/BUG_IFSCC01PP.t +lib/modernish/cap/BUG_IFSGLOBC.t +lib/modernish/cap/BUG_IFSGLOBP.t +lib/modernish/cap/BUG_IFSGLOBS.t +lib/modernish/cap/BUG_IFSISSET.t +lib/modernish/cap/BUG_ISSETLOOP.t +lib/modernish/cap/BUG_KUNSETIFS.t +lib/modernish/cap/BUG_LNNOALIAS.t +lib/modernish/cap/BUG_LNNOEVAL.t +lib/modernish/cap/BUG_LNNONEG.t +lib/modernish/cap/BUG_LOOPRET1.t +lib/modernish/cap/BUG_LOOPRET2.t +lib/modernish/cap/BUG_LOOPRET3.t +lib/modernish/cap/BUG_MULTIBIFS.t +lib/modernish/cap/BUG_NOCHCLASS.t +lib/modernish/cap/BUG_NOEXPRO.t +lib/modernish/cap/BUG_NOOCTAL.t +lib/modernish/cap/BUG_NOUNSETEX.t +lib/modernish/cap/BUG_OPTNOLOG.t +lib/modernish/cap/BUG_PFRPAD.t +lib/modernish/cap/BUG_PP_01.t +lib/modernish/cap/BUG_PP_02.t +lib/modernish/cap/BUG_PP_03.t +lib/modernish/cap/BUG_PP_03A.t +lib/modernish/cap/BUG_PP_03B.t +lib/modernish/cap/BUG_PP_03C.t +lib/modernish/cap/BUG_PP_04.t +lib/modernish/cap/BUG_PP_04A.t +lib/modernish/cap/BUG_PP_04D.t +lib/modernish/cap/BUG_PP_04E.t +lib/modernish/cap/BUG_PP_04_S.t +lib/modernish/cap/BUG_PP_05.t +lib/modernish/cap/BUG_PP_06.t +lib/modernish/cap/BUG_PP_06A.t +lib/modernish/cap/BUG_PP_07.t +lib/modernish/cap/BUG_PP_07A.t +lib/modernish/cap/BUG_PP_08.t +lib/modernish/cap/BUG_PP_08B.t +lib/modernish/cap/BUG_PP_09.t +lib/modernish/cap/BUG_PP_10.t +lib/modernish/cap/BUG_PP_10A.t +lib/modernish/cap/BUG_PP_1ARG.t +lib/modernish/cap/BUG_PP_MDIGIT.t +lib/modernish/cap/BUG_PSUBASNCC.t +lib/modernish/cap/BUG_PSUBBKSL1.t +lib/modernish/cap/BUG_PSUBEMIFS.t +lib/modernish/cap/BUG_PSUBEMPT.t +lib/modernish/cap/BUG_PSUBIFSNW.t +lib/modernish/cap/BUG_PSUBIFSWH.t +lib/modernish/cap/BUG_PSUBNEWLN.t +lib/modernish/cap/BUG_PSUBSQHD.t +lib/modernish/cap/BUG_PSUBSQUOT.t +lib/modernish/cap/BUG_PUTIOERR.t +lib/modernish/cap/BUG_READWHSP.t +lib/modernish/cap/BUG_REDIRIO.t +lib/modernish/cap/BUG_REDIRPOS.t +lib/modernish/cap/BUG_SCLOSEDFD.t +lib/modernish/cap/BUG_SELECTEOF.t +lib/modernish/cap/BUG_SELECTRPL.t +lib/modernish/cap/BUG_SETOUTVAR.t +lib/modernish/cap/BUG_SHIFTERR0.t +lib/modernish/cap/BUG_SPCBILOC.t +lib/modernish/cap/BUG_TESTERR0.t +lib/modernish/cap/BUG_TESTERR1A.t +lib/modernish/cap/BUG_TESTERR1B.t +lib/modernish/cap/BUG_TESTILNUM.t +lib/modernish/cap/BUG_TESTONEG.t +lib/modernish/cap/BUG_TESTRMPAR.t +lib/modernish/cap/BUG_TRAPEMPT.t +lib/modernish/cap/BUG_TRAPEXIT.t +lib/modernish/cap/BUG_TRAPFNEXI.t +lib/modernish/cap/BUG_TRAPRETIR.t +lib/modernish/cap/BUG_TRAPSUB0.t +lib/modernish/cap/BUG_TRAPUNSRE.t +lib/modernish/cap/BUG_UNSETUNXP.t +lib/modernish/cap/BUG_ZSHNAMES.t +lib/modernish/cap/BUG_ZSHNAMES2.t +lib/modernish/cap/CESCQUOT.t +lib/modernish/cap/DBLBRACKET.t +lib/modernish/cap/DBLBRACKETERE.t +lib/modernish/cap/DBLBRACKETV.t +lib/modernish/cap/DOTARG.t +lib/modernish/cap/HERESTR.t +lib/modernish/cap/KSH88FUNC.t +lib/modernish/cap/KSH93FUNC.t +lib/modernish/cap/KSHARRAY.t +lib/modernish/cap/LEPIPEMAIN.t +lib/modernish/cap/LINENO.t +lib/modernish/cap/LOCALVARS.t +lib/modernish/cap/NONFORKSUBSH.t +lib/modernish/cap/PRINTFV.t +lib/modernish/cap/PROCREDIR.t +lib/modernish/cap/PROCSUBST.t +lib/modernish/cap/PSREPLACE.t +lib/modernish/cap/QRK_32BIT.t +lib/modernish/cap/QRK_ANDORBG.t +lib/modernish/cap/QRK_APIPEMAIN.t +lib/modernish/cap/QRK_ARITHEMPT.t +lib/modernish/cap/QRK_ARITHWHSP.t +lib/modernish/cap/QRK_BCDANGER.t +lib/modernish/cap/QRK_EMPTPPFLD.t +lib/modernish/cap/QRK_EMPTPPWRD.t +lib/modernish/cap/QRK_EVALNOOPT.t +lib/modernish/cap/QRK_EXECFNBI.t +lib/modernish/cap/QRK_HDPARQUOT.t +lib/modernish/cap/QRK_IFSFINAL.t +lib/modernish/cap/QRK_LOCALINH.t +lib/modernish/cap/QRK_LOCALSET.t +lib/modernish/cap/QRK_LOCALSET2.t +lib/modernish/cap/QRK_LOCALUNS.t +lib/modernish/cap/QRK_LOCALUNS2.t +lib/modernish/cap/QRK_OPTABBR.t +lib/modernish/cap/QRK_OPTCASE.t +lib/modernish/cap/QRK_OPTDASH.t +lib/modernish/cap/QRK_OPTNOPRFX.t +lib/modernish/cap/QRK_OPTULINE.t +lib/modernish/cap/QRK_PPIPEMAIN.t +lib/modernish/cap/QRK_SPCBIXP.t +lib/modernish/cap/QRK_UNSETF.t +lib/modernish/cap/RANDOM.t +lib/modernish/cap/README.md +lib/modernish/cap/ROFUNC.t +lib/modernish/cap/TESTERE.t +lib/modernish/cap/TESTO.t +lib/modernish/cap/TRAPPRSUBSH.t +lib/modernish/cap/TRAPZERR.t +lib/modernish/cap/WRN_EREMBYTE.t +lib/modernish/cap/WRN_MULTIBYTE.t +lib/modernish/cap/WRN_NOSIGPIPE.t +lib/modernish/mdl/_IN/opt.mm +lib/modernish/mdl/_IN/sig.mm +lib/modernish/mdl/safe.mm +lib/modernish/mdl/sys/base/mktemp.mm +lib/modernish/mdl/sys/base/readlink.mm +lib/modernish/mdl/sys/base/rev.mm +lib/modernish/mdl/sys/base/seq.mm +lib/modernish/mdl/sys/base/tac.mm +lib/modernish/mdl/sys/base/which.mm +lib/modernish/mdl/sys/base/yes.mm +lib/modernish/mdl/sys/cmd/extern.mm +lib/modernish/mdl/sys/cmd/harden.mm +lib/modernish/mdl/sys/cmd/mapr.mm +lib/modernish/mdl/sys/cmd/procsubst.mm +lib/modernish/mdl/sys/dir/countfiles.mm +lib/modernish/mdl/sys/dir/mkcd.mm +lib/modernish/mdl/sys/term/readkey.mm +lib/modernish/mdl/var/arith/cmp.mm +lib/modernish/mdl/var/arith/ops.mm +lib/modernish/mdl/var/assign.mm +lib/modernish/mdl/var/genoptparser.mm +lib/modernish/mdl/var/local.mm +lib/modernish/mdl/var/loop.mm +lib/modernish/mdl/var/loop/find.mm +lib/modernish/mdl/var/loop/for.mm +lib/modernish/mdl/var/loop/repeat.mm +lib/modernish/mdl/var/loop/select.mm +lib/modernish/mdl/var/mapr.mm +lib/modernish/mdl/var/readf.mm +lib/modernish/mdl/var/stack/extra/clearstack.mm +lib/modernish/mdl/var/stack/extra/printstack.mm +lib/modernish/mdl/var/stack/extra/stackempty.mm +lib/modernish/mdl/var/stack/extra/stacksize.mm +lib/modernish/mdl/var/stack/trap.mm +lib/modernish/mdl/var/string/append.mm +lib/modernish/mdl/var/string/replacein.mm +lib/modernish/mdl/var/string/touplow.mm +lib/modernish/mdl/var/string/trim.mm +lib/modernish/mdl/var/unexport.mm +lib/modernish/tst/@sanitychecks.t +lib/modernish/tst/arith.t +lib/modernish/tst/builtin.t +lib/modernish/tst/io.t +lib/modernish/tst/is.t +lib/modernish/tst/isset.t +lib/modernish/tst/local.t +lib/modernish/tst/loop_cond.t +lib/modernish/tst/match.t +lib/modernish/tst/posparam.t +lib/modernish/tst/posparam_spc.t +lib/modernish/tst/process.t +lib/modernish/tst/run.sh +lib/modernish/tst/shellquote.t +lib/modernish/tst/stack.t +lib/modernish/tst/string.t +lib/modernish/tst/sys.t +lib/modernish/tst/trap.t +lib/modernish/tst/unexport.t +%%PORTDOCS%%%%DOCSDIR%%/CODINGSTYLE +%%PORTDOCS%%%%DOCSDIR%%/DESIGN.md +%%PORTDOCS%%%%DOCSDIR%%/EXAMPLES.md +%%PORTDOCS%%%%DOCSDIR%%/HELP +%%PORTDOCS%%%%DOCSDIR%%/NEWS +%%PORTDOCS%%%%DOCSDIR%%/README.md +%%PORTDOCS%%%%DOCSDIR%%/examples +%%PORTDOCS%%%%DOCSDIR%%/tests/README +%%PORTDOCS%%%%DOCSDIR%%/tests/die-bg-test.sh +%%PORTDOCS%%%%DOCSDIR%%/tests/harden-test.sh +%%PORTDOCS%%%%DOCSDIR%%/tests/local-test.sh +%%PORTDOCS%%%%DOCSDIR%%/tests/mktemp-stresstest.sh +%%PORTDOCS%%%%DOCSDIR%%/tests/shellquote-test.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/README +%%PORTDOCS%%%%DOCSDIR%%/utils/bundle-diff-update.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/git-restore-timestamps.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/mktoc.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/modules-unalias-update.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/showTODO.sh +%%PORTDOCS%%%%DOCSDIR%%/utils/testshells.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/README +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/copy-timestamps.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dice.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/get-firefox.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/procsubst.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resurrectjoe/SAMPLE_DEADJOE +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/resurrectjoe/resurrectjoe.sh +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sort-music.sh