|
|
|
#!/bin/bash
|
|
|
|
# Publish package on Meteor's Atmosphere.js
|
|
|
|
|
|
|
|
# Make sure Meteor is installed, per https://www.meteor.com/install. The curl'ed script is totally safe; takes 2 minutes to read its source and check.
|
|
|
|
type meteor >/dev/null 2>&1 || { curl https://install.meteor.com/ | sh; }
|
|
|
|
|
|
|
|
# sanity check: make sure we're in the root directory of the checkout
|
|
|
|
cd "$( dirname "$0" )/.."
|
|
|
|
|
|
|
|
|
|
|
|
function cleanup() {
|
|
|
|
# we copied the file as package.js, regardless of its original name
|
|
|
|
rm package.js
|
|
|
|
|
|
|
|
# temporary build files
|
|
|
|
rm -rf ".build.$PACKAGE_NAME" versions.json
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# publish separately any package*.js files we have, e.g. package.js, package-compat.js
|
|
|
|
for PACKAGE_FILE in meteor/package*.js; do
|
|
|
|
|
|
|
|
# Meteor expects package.js to be in the root directory of the checkout, so copy there our package file under that name, temporarily
|
|
|
|
cp $PACKAGE_FILE ./package.js
|
|
|
|
|
|
|
|
# publish package, creating it if it's the first time we're publishing
|
|
|
|
PACKAGE_NAME=$(grep -i name $PACKAGE_FILE | head -1 | cut -d "'" -f 2)
|
|
|
|
ATMOSPHERE_NAME=${PACKAGE_NAME/://}
|
|
|
|
|
|
|
|
echo "Publishing $PACKAGE_NAME..."
|
|
|
|
|
|
|
|
# attempt to re-publish the package - the most common operation once the initial release has been made
|
|
|
|
POTENTIAL_ERROR=$( meteor publish 2>&1 )
|
|
|
|
|
|
|
|
if [[ $POTENTIAL_ERROR =~ "There is no package named" ]]; then
|
|
|
|
# actually this is the first time the package is created, so pass the special --create flag and congratulate the maintainer
|
|
|
|
echo "Thank you for creating the official Meteor package for this library!"
|
|
|
|
if meteor publish --create; then
|
|
|
|
echo "Please post the following to https://github.com/raix/Meteor-community-discussions/issues/14:
|
|
|
|
|
|
|
|
--------------------------------------------- 8< --------------------------------------------------------
|
|
|
|
|
|
|
|
Happy to announce that I've published the official $PACKAGE_NAME to Atmosphere. Please star!
|
|
|
|
https://atmospherejs.com/$ATMOSPHERE_NAME
|
|
|
|
|
|
|
|
--------------------------------------------- >8 --------------------------------------------------------
|
|
|
|
|
|
|
|
"
|
|
|
|
else
|
|
|
|
echo "We got an error. Please post it at https://github.com/raix/Meteor-community-discussions/issues/14"
|
|
|
|
cleanup
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if (( $? > 0 )); then
|
|
|
|
# the error wasn't that the package didn't exist, so we need to ask for help
|
|
|
|
echo "We got an error. Please post it at https://github.com/raix/Meteor-community-discussions/issues/14:
|
|
|
|
--------------------------------------------- 8< --------------------------------------------------------
|
|
|
|
$POTENTIAL_ERROR
|
|
|
|
--------------------------------------------- >8 --------------------------------------------------------
|
|
|
|
"
|
|
|
|
cleanup
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
echo "Thanks for releasing a new version of $PACKAGE_NAME! You can see it at
|
|
|
|
https://atmospherejs.com/$ATMOSPHERE_NAME"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
cleanup
|
|
|
|
|
|
|
|
done
|