git: 06b23f86f362 - main - textproc/write-good: Add a new port

From: Mateusz Piotrowski <0mp_at_FreeBSD.org>
Date: Fri, 26 Nov 2021 18:37:22 UTC
The branch main has been updated by 0mp:

URL: https://cgit.FreeBSD.org/ports/commit/?id=06b23f86f362f0fcbaf7c4b23fb91e5d7e84ea36

commit 06b23f86f362f0fcbaf7c4b23fb91e5d7e84ea36
Author:     Mateusz Piotrowski <0mp@FreeBSD.org>
AuthorDate: 2021-11-26 18:33:58 +0000
Commit:     Mateusz Piotrowski <0mp@FreeBSD.org>
CommitDate: 2021-11-26 18:36:48 +0000

    textproc/write-good: Add a new port
    
    write-good is a naive linter for English prose. For example,
    it is able to check for the following issues in text:
    
    - passive voice
    - lexical illusions – cases where a word is repeated
    - "so" at the beginning of the sentence
    - "there is" or "there are" at the beginning of the sentence
    - weasel words
    - adverbs that can weaken meaning: really, very, extremely, etc.
    - wordy phrases and unnecessary words
    - common cliches
    
    WWW: https://github.com/btford/write-good
    
    Requested by:   bcr (via https://wiki.freebsd.org/WantedPorts)
---
 textproc/Makefile             |  1 +
 textproc/write-good/Makefile  | 75 +++++++++++++++++++++++++++++++++++++++++++
 textproc/write-good/distinfo  |  7 ++++
 textproc/write-good/pkg-descr | 13 ++++++++
 textproc/write-good/pkg-plist | 10 ++++++
 5 files changed, 106 insertions(+)

diff --git a/textproc/Makefile b/textproc/Makefile
index fd6af9076a1b..b956937a92fe 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -1952,6 +1952,7 @@
     SUBDIR += word2x
     SUBDIR += wordnet
     SUBDIR += words
+    SUBDIR += write-good
     SUBDIR += wv
     SUBDIR += wv2
     SUBDIR += xalan-c
diff --git a/textproc/write-good/Makefile b/textproc/write-good/Makefile
new file mode 100644
index 000000000000..57af776ddc7f
--- /dev/null
+++ b/textproc/write-good/Makefile
@@ -0,0 +1,75 @@
+PORTNAME=	write-good
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.0.8
+CATEGORIES=	textproc
+MASTER_SITES=	LOCAL/0mp/:npm
+DISTFILES=	${_NPM_DISTFILES}
+
+MAINTAINER=	0mp@FreeBSD.org
+COMMENT=	Naive linter for English prose
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	npm:www/npm
+
+USES=		nodejs:run
+USE_GITHUB=	yes
+GH_ACCOUNT=	btford
+
+NO_ARCH=	yes
+NO_BUILD=	yes
+
+OPTIONS_DEFINE=	DOCS
+PORTDOCS=	README.md
+
+.if !defined(MAINTAINER_MODE)
+_NPM_DISTFILES=		${_NPM_DISTFILE_cache}:npm \
+			${_NPM_DISTFILE_modules}:npm
+.endif
+_NPM_DISTFILE_cache=	${PORTNAME}-${DISTVERSION}.cache${EXTRACT_SUFX}
+_NPM_DISTFILE_modules=	${PORTNAME}-${DISTVERSION}.modules${EXTRACT_SUFX}
+
+_UNNECESSARY_FILES=	test .dockerignore \
+			.eslintrc .gitignore .npmignore .pre-commit-hooks.yaml \
+			.travis.yml Dockerfile LICENSE README.md
+_LIBEXEC_REL=		libexec/${PORTNAME}
+_LIBEXEC=		${STAGEDIR}${PREFIX}/${_LIBEXEC_REL}
+
+do-install:
+	@${MKDIR} ${_LIBEXEC}
+	(cd ${WRKSRC} && ${COPYTREE_SHARE} . ${_LIBEXEC})
+
+	${RLN} ${_LIBEXEC}/bin/${PORTNAME}.js ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+	${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+	${RLN} ${_LIBEXEC}/bin/${PORTNAME}.js ${STAGEDIR}${PREFIX}/bin/writegood
+	${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/writegood
+
+	(cd ${_LIBEXEC} && ${RM} -r ${_UNNECESSARY_FILES})
+
+post-install:
+# Build plist automatically to avoid listing all the node_modules files.
+	(cd ${STAGEDIR}${PREFIX} && \
+		${FIND} ${_LIBEXEC_REL}/node_modules -not -type d >> ${TMPPLIST})
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR}
+
+# - Requires npm (e.g., from www/npm).
+# - Remember to set MAINTAINER_MODE,
+#   e.g., "make -DMAINTAINER_MODE _npm-regenerate".
+_npm-regenerate:
+	${MAKE} clean patch
+	(cd ${WRKSRC} && ${SETENV} ${_NPM_ENV} npm install --ignore-scripts)
+	${FIND} ${WRKDIR}/.npm ${WRKSRC}/node_modules -exec ${TOUCH} -h -d 1970-01-01T00:00:00Z {} \;
+	(cd ${WRKDIR} && \
+		${FIND} .npm/_cacache -print0 | LC_ALL=C ${SORT} -z | \
+		${TAR} czf ${WRKDIR}/${_NPM_DISTFILE_cache} --format=bsdtar --uid 0 --gid 0 --options gzip:!timestamp --no-recursion --null -T -)
+	(cd ${WRKDIR} && \
+		${FIND} ${WRKSRC:T}/node_modules -print0 | LC_ALL=C ${SORT} -z | \
+		${TAR} czf ${WRKDIR}/${_NPM_DISTFILE_modules} --format=bsdtar --uid 0 --gid 0 --options gzip:!timestamp --no-recursion --null -T -)
+	scp ${WRKDIR}/${_NPM_DISTFILE_cache} ${WRKDIR}/${_NPM_DISTFILE_modules} 0mp@freefall.freebsd.org:public_distfiles/
+	cp ${WRKDIR}/${_NPM_DISTFILE_cache} ${WRKDIR}/${_NPM_DISTFILE_modules} ${DISTDIR}/
+
+.include <bsd.port.mk>
diff --git a/textproc/write-good/distinfo b/textproc/write-good/distinfo
new file mode 100644
index 000000000000..6e89d89febe1
--- /dev/null
+++ b/textproc/write-good/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1637945430
+SHA256 (write-good-1.0.8.cache.tar.gz) = 925706581f374d4c687d6a0937ef5585a505b97fe54bcf037a5aab42a0dee0b6
+SIZE (write-good-1.0.8.cache.tar.gz) = 8879158
+SHA256 (write-good-1.0.8.modules.tar.gz) = beab42c24078ed500568d94cc6d8c897f83f428328024f577d5b2c9e6a8af365
+SIZE (write-good-1.0.8.modules.tar.gz) = 9226324
+SHA256 (btford-write-good-v1.0.8_GH0.tar.gz) = d4706a6c55f5b4a30453d867d0cc924d59be95b4ded16da0f409d9ec1feee08f
+SIZE (btford-write-good-v1.0.8_GH0.tar.gz) = 47480
diff --git a/textproc/write-good/pkg-descr b/textproc/write-good/pkg-descr
new file mode 100644
index 000000000000..032d6e34ad4a
--- /dev/null
+++ b/textproc/write-good/pkg-descr
@@ -0,0 +1,13 @@
+write-good is a naive linter for English prose. For example,
+it is able to check for the following issues in text:
+
+- passive voice
+- lexical illusions – cases where a word is repeated
+- "so" at the beginning of the sentence
+- "there is" or "there are" at the beginning of the sentence
+- weasel words
+- adverbs that can weaken meaning: really, very, extremely, etc.
+- wordy phrases and unnecessary words
+- common cliches
+
+WWW: https://github.com/btford/write-good
diff --git a/textproc/write-good/pkg-plist b/textproc/write-good/pkg-plist
new file mode 100644
index 000000000000..76e12ec7209a
--- /dev/null
+++ b/textproc/write-good/pkg-plist
@@ -0,0 +1,10 @@
+bin/write-good
+bin/writegood
+libexec/write-good/bin/write-good.js
+libexec/write-good/lib/annotate.js
+libexec/write-good/lib/lexical-illusions.js
+libexec/write-good/lib/starts-with-so.js
+libexec/write-good/lib/there-is.js
+libexec/write-good/package-lock.json
+libexec/write-good/package.json
+libexec/write-good/write-good.js