Index: GIDs =================================================================== --- GIDs +++ GIDs @@ -256,7 +256,7 @@ _fastdfs:*:313: promscale:*:314: lavinmq:*:315: -# free: 316 +hedgedoc:*:316: # free: 317 # free: 318 # free: 319 Index: UIDs =================================================================== --- UIDs +++ UIDs @@ -261,7 +261,7 @@ _fastdfs:*:313:313::0:0:FastDFS Owner:/nonexistent:/usr/sbin/nologin promscale:*:314:314::0:0:Promscale:/nonexistent:/usr/sbin/nologin lavinmq:*:315:315::0:0:LavinMQ user:/nonexistent:/usr/sbin/nologin -# free: 316 +hedgedoc:*:316:316::0:0:HedgeDoc user:/nonexistent:/usr/sbin/nologin # free: 317 # free: 318 # free: 319 Index: www/Makefile =================================================================== --- www/Makefile +++ www/Makefile @@ -218,6 +218,7 @@ SUBDIR += h2o SUBDIR += h2o-devel SUBDIR += habari + SUBDIR += hedgedoc SUBDIR += hiawatha SUBDIR += hiawatha-monitor SUBDIR += horde-ansel Index: www/hedgedoc/Makefile =================================================================== --- /dev/null +++ www/hedgedoc/Makefile @@ -0,0 +1,124 @@ +PORTNAME= hedgedoc +DISTVERSION= 1.9.6 +CATEGORIES= www editors +MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/${DISTVERSION}/ \ + https://nodejs.org/download/release/v${NODEJS_VERSION}/:node \ + LOCAL/dch:yarn +DISTFILES+= ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} \ + ${_YARN_TARBALL}:yarn \ + node-v${NODEJS_VERSION}-headers.tar.gz:node + +MAINTAINER= dch@FreeBSD.org +COMMENT= Web-based online markdown doc editor backed by SQLite +WWW= https://hedgedoc.org/ + +LICENSE= AGPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= nodejs:16,run,build python:build shebangfix + +BUILD_DEPENDS= git:devel/git \ + npm:www/npm-node16 \ + sqlite3:databases/sqlite3 \ + yarn:www/yarn-node16 + +USE_RC_SUBR= ${PORTNAME} +OPTIONS_SUB= yes +PLIST_SUB+= ARCH=${ARCH:S/aarch64/arm64/:S/amd64/x64/} + +SHEBANG_FILES= ${WRKSRC}/bin/* + +NODEJS_VERSION= 16.19.0 + +PORTSCOUT= site:https://github.com/${PORTNAME}/${PORTNAME}/releases + +OPTIONS_DEFINE= DOCS + +_YARNRC= ${_YARN_HOME}/yarnrc +_YARN_BIN= ${LOCALBASE}/bin/yarn +_YARN_CACHE= ${_YARN_HOME}/.cache +_YARN_CMD= ${SETENV} ${_YARN_ENV} ${_YARN_BIN} ${_YARN_FLAGS} +_YARN_CWD= ${WRKSRC} +_YARN_ENV= HOME=${_YARN_HOME} NODE_ENV=production \ + NPM_CONFIG_TARBALL=${DISTDIR}/node-v${NODEJS_VERSION}-headers.tar.gz \ + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true PYTHON=${PYTHON_CMD} +_YARN_FLAGS= --skip-integrity-check --noninteractive --no-node-version-check \ + --no-default-rc --cwd ${_YARN_CWD} --cache-folder \ + ${_YARN_CACHE} --use-yarnrc ${_YARNRC} --no-progress \ + --frozen-lockfile +_YARN_HOME= ${WRKDIR}/yarn +_YARN_MIRROR= ${_YARN_HOME}/mirror +_YARN_TARBALL= ${DISTNAME}-yarn-cache.txz + +# helper creates a tarball that pre-populates the yarn cache +# upload to your freefall public_distfiles/ location +tarball: patch + (cd ${WRKSRC} && \ + ${_YARN_CMD} --ignore-scripts) + (cd ${WRKDIR} && \ + ${TAR} cvaf ${_YARN_TARBALL} yarn/mirror) + rsync -Phivl --inplace ${WRKDIR}/${_YARN_TARBALL} freefall:public_distfiles/ + +post-extract: + @${MV} ${WRKDIR}/${PORTNAME} \ + ${WRKSRC} + +post-patch: + @${MKDIR} ${_YARN_MIRROR} + @${ECHO_CMD} 'yarn-offline-mirror "${_YARN_MIRROR}"' > ${_YARNRC} + +do-build: + (cd ${WRKSRC} && \ + ${_YARN_CMD} --offline install) + # remove temporary build garbage and unnecessary runtime files + (cd ${WRKSRC} && ${RM} -r \ + .babelrc .editorconfig .eslint* .mailmap .remarkrc .yarn* \ + node_modules/bufferutil/prebuilds \ + node_modules/utf-8-validate/build/Release/.deps \ + node_modules/utf-8-validate/prebuilds/ \ + node_modules/*/deps \ + node_modules/*/man \ + node_modules/.bin \ + node_modules/.yarn* \ + node_modules/@mapbox/node-pre-gyp/node_modules/.bin \ + node_modules/bufferutil/binding.gyp \ + node_modules/bufferutil/build/Makefile \ + node_modules/bufferutil/build/Release/.deps \ + node_modules/bufferutil/build/Release/obj.target \ + node_modules/bufferutil/build/config.gypi \ + node_modules/bufferutil/build/node_gyp_bins \ + node_modules/bufferutil/node_modules \ + node_modules/bufferutil/src \ + node_modules/node-addon-api \ + node_modules/node-gyp* \ + node_modules/sqlite3/build-tmp-napi-v6 \ + node_modules/sqlite3/deps \ + node_modules/sqlite3/node-addon-api \ + node_modules/sqlite3/node_modules \ + node_modules/sqlite3/src \ + node_modules/utf-8-validate/binding.gyp \ + node_modules/utf-8-validate/build/Makefile \ + node_modules/utf-8-validate/build/Release/obj.target \ + node_modules/utf-8-validate/build/config.gypi \ + node_modules/utf-8-validate/build/node_gyp_bins \ + node_modules/utf-8-validate/node_modules \ + node_modules/utf-8-validate/src \ + renovate.json test webpack.*) + ${FIND} -E ${WRKSRC}/node_modules -regex '.+\.(Makefile|mk|\.d|targ|info|gyp)$$' -print -delete + ${FIND} ${WRKSRC}/node_modules -name '*.node' -print -exec ${STRIP_CMD} {} + + +do-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}${DOCSDIR} \ + ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}/bin \ + ${STAGEDIR}/var/db/hedgedoc/uploads + (cd ${WRKSRC} && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}) + (cd ${WRKSRC} && \ + ${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}) + (cd ${WRKSRC}/docs && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}) + ${INSTALL_DATA} ${WRKSRC}/config.json.example \ + ${STAGEDIR}${ETCDIR}/config.json.sample + +.include Index: www/hedgedoc/distinfo =================================================================== --- /dev/null +++ www/hedgedoc/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1672840989 +SHA256 (hedgedoc-1.9.6.tar.gz) = dfd0fca006f9075f072df058476ea542adb32b63964afb2985211e1114ab333e +SIZE (hedgedoc-1.9.6.tar.gz) = 61081612 +SHA256 (hedgedoc-1.9.6-yarn-cache.txz) = 9f8f8f1b0fe579a705301eee8331599320ab759a67331e6b509ae43083260f63 +SIZE (hedgedoc-1.9.6-yarn-cache.txz) = 181553816 +SHA256 (node-v16.19.0-headers.tar.gz) = d0b02ce3d1198d41127daf64f204195252abff6a22da70830aaed846ba6ad864 +SIZE (node-v16.19.0-headers.tar.gz) = 568145 Index: www/hedgedoc/files/hedgedoc.in =================================================================== --- /dev/null +++ www/hedgedoc/files/hedgedoc.in @@ -0,0 +1,54 @@ +#!/bin/sh + +# PROVIDE: hedgedoc +# REQUIRE: DAEMON NETWORKING +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable hedgedoc +# +# hedgedoc_enable (bool): set to NO by default +# hedgedoc_config (string): optional full path to config.json +# hedgedoc_port (string): optional HTTP port +# hedgedoc_user (string): optional user to run as +# hedgedoc_group (string): optional user to run as + +. /etc/rc.subr + +name="hedgedoc" +rcvar="hedgedoc_enable" + +load_rc_config $name + +: ${hedgedoc_enable="NO"} +: ${hedgedoc_config:="%%ETCDIR%%/config.json"} +: ${hedgedoc_port:="3000"} +: ${hedgedoc_user:="hedgedoc"} +: ${hedgedoc_group:="hedgedoc"} +: ${hedgedoc_chdir="%%LOCALBASE%%/libexec/hedgedoc"} +: ${hedgedoc_opts="NODE_ENV=production \ + HOME=/var/db/hedgedoc \ + CMD_PORT=${hedgedoc_port} \ + CMD_CONFIG_FILE=${hedgedoc_config}"} + +pidfile="/var/run/${name}/${name}.pid" +hedgedoc_nodejs_pidfile="/var/run/${name}/${name}.node" +start_precmd="hedgedoc_start_precmd" +required_files="${hedgedoc_config}" + +hedgedoc_start_precmd() +{ + if [ ! -d "/var/run/${name}" ]; then + install -d -m 0750 -o ${hedgedoc_user} -g ${hedgedoc_group} "/var/run/${name}" + install -o ${hedgedoc_user} /dev/null ${pidfile} + install -o ${hedgedoc_user} /dev/null ${hedgedoc_nodejs_pidfile} + fi +} + +command="/usr/sbin/daemon" +command_args="-t hedgedoc -T hedgedoc \ + -P ${pidfile} \ + -p ${hedgedoc_nodejs_pidfile} \ + -r -R 15 \ + /usr/bin/env ${hedgedoc_opts} /usr/local/bin/node app.js" + +run_rc_command "$1" Index: www/hedgedoc/files/pkg-message.in =================================================================== --- /dev/null +++ www/hedgedoc/files/pkg-message.in @@ -0,0 +1,32 @@ +[ +{ type: install + message: <