diff options
-rw-r--r-- | eclass/npm.eclass | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/eclass/npm.eclass b/eclass/npm.eclass new file mode 100644 index 0000000..d77b9ba --- /dev/null +++ b/eclass/npm.eclass @@ -0,0 +1,103 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +# @ECLASS: npm.eclass +# @MAINTAINER: +# Jesus Rivero <neurogeek@gentoo.org> +# @BLURB: Eclass for NodeJS packages available through the npm registry. +# @DESCRIPTION: +# This eclass contains various functions that may be useful when +# dealing with packages from the npm registry, for NodeJS. +# Requires EAPI=2 or later. + +case ${EAPI} in + 2|3|4|5) : ;; + *) die "npm.eclass: unsupported EAPI=${EAPI:-0}" ;; +esac + +inherit multilib + +# @ECLASS-VARIABLE: NPM_MODULE +# @DESCRIPTION: +# Name of the resulting NodeJS/npm module. +# The Default value for NPM_MODULE is ${PN} +# +# Example: NPM_MODULE="${MY_PN}" +NPM_MODULE="${PN}" + +# @ECLASS-VARIABLE: NPM_FILES +# @INTERNAL +# @DESCRIPTION: +# Files and directories that usually come in a standard +# NodeJS/npm module. +NPM_FILES="lib package.json index.js" + +# @ECLASS-VARIABLE: NPM_DOCS +# @INTERNAL +# @DESCRIPTION: +# Document files that usually come in a standard +# NodeJS/npm module. +NPM_DOCS="README* LICENSE HISTORY*" + +# @ECLASS-VARIABLE: NPM_EXTRA_FILES +# @DESCRIPTION: +# If additional dist files are present in the NodeJS/npm module +# that are not listed in NPM_FILES, then this is the place to put them in. +# Can be either files, or directories. +# Example: NPM_EXTRA_FILES="rigger.js modules" + +# @ECLASS-VARIABLE: NPM_EXTRA_DOCS +# @DESCRIPTION: +# Variable for additional document files that are not listed +# in NPM_DOCS +# Example: NPM_EXTRA_DOCS="docs index.html" + +HOMEPAGE="https://www.npmjs.org/package/${PN}" +SRC_URI="http://registry.npmjs.org/${PN}/-/${P}.tgz" + +# @FUNCTION: npm-src_unpack +# @DESCRIPTION: +# Default src_unpack function for NodeJS/npm packages. This funtions +# unpacks the source code, then renames the 'package' dir to $S + +npm_src_unpack() { + unpack "${A}" + mv "${WORKDIR}/package" ${S} +} + +# @FUNCTION: npm-src_compile +# @DESCRIPTION: +# This function does nothing. + +npm_src_compile() { + true +} + +# @FUNCTION: npm-src_install +# @DESCRIPTION: +# This function installs the NodeJS/npm module to an appropriate location, +# also taking care of NPM_FILES, NPM_EXTRA_FILES, NPM_DOCS and NPM_EXTRA_DOCS + +npm_src_install() { + local node_modules="${D}/usr/$(get_libdir)/node_modules/${NPM_MODULE}" + mkdir -p ${node_modules} || die "Could not create DEST folder" + + # These are basically the 'standard' files in an npm package + # We'll handle additional files in NPM_EXTRA_FILES + for f in "${NPM_FILES} ${NPM_EXTRA_FILES}" + do + if [[ -e "${S}/$f" ]]; then + cp -r "${S}/$f" ${node_modules} + fi + done + + for f in "${NPM_DOCS} ${NPM_EXTRA_DOCS}" + do + if [[ -e "${S}/$f" ]]; then + dodoc -r "${S}/$f" + fi + done +} + +EXPORT_FUNCTIONS src_unpack src_compile src_install |