summaryrefslogtreecommitdiff
path: root/devel/yaml-language-server/Makefile
blob: 49aa33f12470beca07ef9d64991b3b00bffd2dee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
PORTNAME=	yaml-language-server
DISTVERSION=	1.24.0
CATEGORIES=	devel

MAINTAINER=	cashmere@autistici.org
COMMENT=	Language server for YAML files
WWW=		https://github.com/redhat-developer/yaml-language-server

LICENSE=	MIT
LICENSE_FILE=	${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/LICENSE

BUILD_DEPENDS=	npm:www/npm
FETCH_DEPENDS=	npm:www/npm
RUN_DEPENDS=	node:www/node

USES=		nodejs:run

NO_ARCH=	yes
NO_BUILD=	yes

PACKAGE_NAME=	yaml-language-server

do-fetch:
	@if ! [ -f ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} ]; then ( \
		${MKDIR} -p ${WRKDIR}/${PORTNAME}-${DISTVERSION} && \
		cd ${WRKDIR}/${PORTNAME}-${DISTVERSION} && \
		if [ -f ${FILESDIR}/package-lock.json ]; then \
			${ECHO} '{"name":"yaml-language-server-installer","version":"1.0.0","dependencies":{"${PACKAGE_NAME}":"^${DISTVERSION}"}}' > package.json && \
			${CP} ${FILESDIR}/package-lock.json . ; \
			${SETENV} HOME=${WRKDIR} npm ci --ignore-scripts --global-style --legacy-peer-deps --omit=dev ; \
		else \
			${ECHO} '{"name":"yaml-language-server-installer","version":"1.0.0"}' > package.json && \
			npm install --package-lock-only --global-style --legacy-peer-deps ${PACKAGE_NAME}@${DISTVERSION} && \
			${CP} package-lock.json ${WRKDIR}/package-lock.json.generated && \
			${ECHO} "" && \
			${ECHO} "=====================================================================" && \
			${ECHO} "WARNING: package-lock.json not found in files/ directory" && \
			${ECHO} "Generated one at: ${WRKDIR}/package-lock.json.generated" && \
			${ECHO} "" && \
			${ECHO} "To enable reproducible builds, please:" && \
			${ECHO} "  1. mkdir -p ${.CURDIR}/files" && \
			${ECHO} "  2. cp ${WRKDIR}/package-lock.json.generated ${.CURDIR}/files/package-lock.json" && \
			${ECHO} "  3. Re-run 'make clean distclean && make fetch'" && \
			${ECHO} "=====================================================================" && \
			${ECHO} "" && \
			${SETENV} HOME=${WRKDIR} npm ci --ignore-scripts --global-style --legacy-peer-deps --omit=dev ; \
		fi && \
		${MKDIR} -p lib/node_modules && \
		${MKDIR} -p bin && \
		${MV} node_modules/${PACKAGE_NAME} lib/node_modules/ && \
		${LN} -sf ../lib/node_modules/${PACKAGE_NAME}/bin/yaml-language-server bin/yaml-language-server && \
		${RM} -rf node_modules package.json package-lock.json && \
		${FIND} ${WRKDIR} -and -exec ${TOUCH} -h -d 1970-01-01T00:00:00Z {} \; && \
		cd ${WRKDIR} && ${FIND} ${PORTNAME}-${DISTVERSION} -print0 | ${SORT} -z | \
			${TAR} czf ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} --format=bsdtar --gid 0 --uid 0 --options gzip:!timestamp --no-recursion --null -T - \
	); fi

do-install:
	@cd ${WRKSRC} && \
		${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}
	${REINPLACE_CMD} \
		-e "s|#!/usr/bin/env node|#!${PREFIX}/bin/node|" \
		${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/bin/yaml-language-server
	@${RM} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/bin/yaml-language-server.bak
	@${CHMOD} +x ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/bin/yaml-language-server

.include <bsd.port.mk>