File update-sources.sh of Package matrix-appservice-irc
#!/bin/bash
set -e
export NODE_PATH="${NODE_PATH:-/usr/lib/node_modules}"
node -e "require('npm-remote-ls')"
update_specfile () {
local specfile
for specfile in "$@"; do
local package="`rpmspec -q --qf '%{NAME}' \"$specfile\"`"
local version="`rpmspec -q --qf '%{VERSION}' \"$specfile\"`"
package="${package#nodejs-}"
{
sed -n -e '1,/^#NODEJS_BUNDLED_DEPS_BEGIN$/p' "$specfile"
node -e "
var npmls = require('npm-remote-ls');
var package = '$package';
var version = '$version';
npmls.config({verbose: false, development: false, optional: true});
npmls.ls(package, version, true, function(deps) {
var i = 100;
deps.sort();
deps.forEach(function(p) {
var pos = p.lastIndexOf('@');
var name = p.substring(0, pos);
var ver = p.substring(pos + 1);
var scope = '';
var namesuffix = '';
pos = name.lastIndexOf('/');
if (pos > 0) {
scope = name.substring(0, pos);
name = name.substring(pos + 1);
namesuffix = '#/' + scope + '-' + name + '-' + ver + '.tgz';
}
if (name != package || ver != version) {
if (name != 'iconv') {
console.log('Source' + i + ': https://registry.npmjs.org/' +
scope + '/' + name + '/-/' +
name + '-' + ver + '.tgz' + namesuffix);
i++;
}
}
});
});
" | grep '^Source'
sed -n -e '/^#NODEJS_BUNDLED_DEPS_END$/,$p' "$specfile"
} > "$specfile.tmp" && mv "$specfile.tmp" "$specfile"
done
}
if [ $# -gt 0 ]; then
update_specfile "$@"
else
update_specfile *.spec
fi