c9-core/integrations/scripts/update.sh

97 wiersze
2.3 KiB
Bash
Czysty Zwykły widok Historia

2016-06-26 11:53:19 +00:00
#!/bin/bash
set -e
cd `dirname $0`/..
2016-07-25 19:28:08 +00:00
# set -x
2016-06-26 11:53:19 +00:00
NAME=$1
2016-07-25 19:28:08 +00:00
shift
2016-08-01 19:37:06 +00:00
BRANCH=master
2016-07-25 19:28:08 +00:00
URL=
for i in "$@"; do
case $i in
-b=*|--branch=*)
BRANCH="${i#*=}"
shift
;;
-u=*|--url=*)
URL="${i#*=}"
shift
;;
*)
# unknown option
;;
esac
done
2016-06-26 11:53:19 +00:00
if [ "$NAME" == "" ]; then
2016-07-25 19:28:08 +00:00
echo "add name [--url=git@github.com:c9/NAME.git] [--branch=master]"
2016-06-26 11:53:19 +00:00
exit 0
fi
2016-07-25 19:28:08 +00:00
echo adding name=$NAME url=$URL branch=refs/remotes/origin/$BRANCH
2016-06-26 11:53:19 +00:00
if [ "$URL" == "" ]; then
URL=git@github.com:c9/$NAME.git
fi
if [ -d $NAME/.git ]; then
pushd $NAME
OLD_URL=$(git config --get remote.origin.url)
if [ "$OLD_URL" != "$URL" ]; then
echo "folder $NAME exists and points to $OLD_URL"
exit 1
fi
git fetch origin
popd
else
mkdir -p $NAME
git clone $URL $NAME
fi
pushd $NAME
2016-07-25 19:28:08 +00:00
HASH=$(git rev-parse --revs-only refs/remotes/origin/$BRANCH)
2016-06-26 11:53:19 +00:00
popd
[ -f ./config.json ] || echo "{}" > ./config.json
node -e '
var name = "'$NAME'";
var url = "'$URL'";
2016-08-01 19:37:06 +00:00
var hash = "'$HASH'".trim();
2016-06-26 11:53:19 +00:00
var fs = require("fs");
function updateJSON(path, fn) {
var text = fs.readFileSync(path, "utf8");
var indent = text.match(/^\s*(?=")/m);
indent = indent && indent[0] || 4;
console.log(indent)
var r = JSON.parse(text);
r = fn(r) || r;
text = JSON.stringify(r, null, indent) + "\n";
fs.writeFileSync(path, text, "utf8");
}
updateJSON("./config.json", function(config) {
var packages = config.packages || (config.packages = {});
config.packages[name] = {
name: name,
hash: hash,
url: url,
};
});
updateJSON("../package.json", function(package) {
var deps = package.dependencies;
console.log(deps[name], hash)
2016-08-01 19:37:06 +00:00
deps[name] = deps[name].replace(/#[a-f\d]*$/i, "#" + hash)
2016-06-26 11:53:19 +00:00
console.log(deps[name], hash)
});
updateJSON("../npm-shrinkwrap.json", function(package) {
var deps = package.dependencies;
2016-08-01 19:37:06 +00:00
deps[name].from = deps[name].from.replace(/#[a-f\d]*$/i, "#" + hash);
deps[name].resolved = deps[name].resolved.replace(/#[a-f\d]*$/i, "#" + hash);
2016-06-26 11:53:19 +00:00
});
'
rm -rf "../node_modules/$NAME"
ln -s `pwd`/$NAME `pwd`/../node_modules/$NAME