#!/bin/sh # # Author:: Gwenhael Le Moine # Copyright:: Copyright (c) 2013, Gwenhael Le Moine # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # * Neither the name of the @organization@ nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GWENHAEL LE MOINE BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # BUILD=${BUILD:=1} TAG=${TAG:=SBo} OUTPUT=${OUTPUT:=/tmp} ARCH=${ARCH:=npmjs} PREFIX=${PREFIX:=/usr} NPMBIN=${NPMBIN:=/usr/bin/npm} NPMROOT=${NPMROOT:-$($NPMBIN -g root)} [ ! -x $NPMBIN ] && echo "npm missing" && exit 1 if [ "x$1" == "x" ] || [ "x$1" == "x--help" ] || [ "x$1" == "x-h" ]; then echo "$0 generates a Slackware compatible package from a node module" echo " usage: $0 " echo " The resulting package is located under $OUTPUT" echo " possible OPTIONS are:" echo " BUILD= (currently: $BUILD)" echo " TAG= (currently: $TAG)" echo " OUTPUT= (currently: $OUTPUT)" echo " ARCH= (currently: $ARCH)" echo " PREFIX= (currently: $PREFIX)" echo " NPMBIN= (currently: $NPMBIN)" echo " NPMROOT= (currently: $NPMROOT)" exit 1 fi PRGNAM=$1 PKG=/tmp/$TAG/pkg-$PRGNAM [ -e $PKG ] && rm -fr $PKG mkdir -p $PKG DESTDIR=$PKG npm install -g $PRGNAM VERSION=$(grep -io "\"version\": \"\(.*\)\"" $PKG${NPMROOT}/$PRGNAM/package.json | sed 's|^[ ]*"version": "\(.*\)"|\1|g') DESCRIPTION=$(grep -i "\"description\": \"\(.*\)\"," $PKG${NPMROOT}/$PRGNAM/package.json | sed 's|^[ ]*"description": "\(.*\)",$|\1|g') HOMEPAGE=$(grep -i "\"homepage\": \"\(.*\)\"," $PKG${NPMROOT}/$PRGNAM/package.json | sed 's|^[ ]*"homepage": "\(.*\)",$|\1|g') mkdir -p $PKG/install cat < $PKG/install/slack-desc # HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' # on the right side marks the last column you can put a character in. You must # make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':'. |-----handy-ruler------------------------------------------------------| $PRGNAM: $PRGNAM ($DESCRIPTION) $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $PRGNAM: $HOMEPAGE $PRGNAM: EOF cd $PKG makepkg -l y -c n $OUTPUT/$PRGNAM-$(echo $VERSION | tr - .)-$ARCH-$BUILD$TAG.txz