forked from moment/moment
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Grunt task to meteor publish; improved scripts
- Loading branch information
Showing
7 changed files
with
147 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
Packaging [Moment](momentjs.org) for [Meteor.js](http://meteor.com). | ||
|
||
|
||
# Meteor | ||
|
||
If you're new to Meteor, here's what the excitement is all about - | ||
[watch the first two minutes](https://www.youtube.com/watch?v=fsi0aJ9yr2o); you'll be hooked by 1:28. | ||
|
||
That screencast is from 2012. In the meantime, Meteor has become a mature JavaScript-everywhere web | ||
development framework. Read more at [Why Meteor](http://www.meteorpedia.com/read/Why_Meteor). | ||
|
||
|
||
# Issues | ||
|
||
If you encounter an issue while using this package, please CC @dandv when you file it in this repo. | ||
|
||
|
||
# DONE | ||
|
||
* Simple test. Should be enough. | ||
|
||
|
||
# TODO | ||
|
||
* Add other tests; however, that is overkill, and the responsibiity of Moment, not of the Meteor integration. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,29 @@ | ||
var packageName = 'moment:moment'; | ||
// package metadata file for Meteor.js | ||
'use strict'; | ||
|
||
var packageName = 'momentjs:moment'; // https://atmospherejs.com/momentjs/moment | ||
|
||
var packageJson = JSON.parse(Npm.require("fs").readFileSync('package.json')); | ||
|
||
Package.describe({ | ||
name: packageName, | ||
summary: 'Moment.js: parse, validate, manipulate, and display dates - official Meteor packaging', | ||
version: '2.8.4', | ||
summary: 'Moment.js (official): parse, validate, manipulate, and display dates - official Meteor packaging', | ||
version: packageJson.version, | ||
git: 'https://github.com/moment/moment.git' | ||
}); | ||
|
||
Package.onUse(function (api) { | ||
api.versionsFrom('0.9.0'); | ||
api.export('moment', ['client', 'server']); | ||
api.versionsFrom('METEOR@1.0'); | ||
api.export('moment'); | ||
api.addFiles([ | ||
'moment.js', 'meteor/export.js' | ||
], ['client', 'server'] | ||
); | ||
'moment.js', | ||
'meteor/export.js' | ||
]); | ||
}); | ||
|
||
Package.onTest(function (api) { | ||
api.use(packageName, ['client', 'server']); | ||
api.use('tinytest', ['client', 'server']); | ||
api.use(packageName); | ||
api.use('tinytest'); | ||
|
||
api.addFiles('meteor/test.js', ['client', 'server']); | ||
api.addFiles('meteor/test.js'); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,77 @@ | ||
#!/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 | ||
DIR=$( cd "$( dirname "$0" )" && pwd ) | ||
cd $DIR/.. | ||
cd "$( dirname "$0" )/.." | ||
|
||
# move away the package.js for Dojo | ||
mv package.js package.dojo | ||
cp meteor/package.js ./ | ||
|
||
# publish package, creating it if it's the first time we're publishing | ||
PACKAGE_NAME=$(grep -i name package.js | head -1 | cut -d "'" -f 2) | ||
PACKAGE_EXISTS=$(meteor search $PACKAGE_NAME 2>/dev/null | wc -l) | ||
function cleanup() { | ||
# restore package.js for Dojo | ||
mv package.dojo package.js | ||
|
||
if [ $PACKAGE_EXISTS -gt 0 ]; then | ||
meteor publish | ||
else | ||
meteor publish --create | ||
fi | ||
# temporary build files | ||
rm -rf ".build.$PACKAGE_NAME" versions.json | ||
} | ||
|
||
# restore the Dojo package.js | ||
mv package.dojo package.js | ||
|
||
# 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, but we already have a package.js for Dojo | ||
mv package.js package.dojo | ||
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 | ||
OUTPUT=$( meteor publish 2>&1 ) | ||
|
||
if (( $? > 0 )); then | ||
# there was an error | ||
|
||
if [[ $OUTPUT =~ "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 | ||
# 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< -------------------------------------------------------- | ||
$OUTPUT | ||
--------------------------------------------- >8 -------------------------------------------------------- | ||
" | ||
cleanup | ||
exit 1 | ||
fi | ||
else | ||
# no error on the first `meteor publish` attempt | ||
echo "$OUTPUT" # just in case meteor said something interesting | ||
echo "Thanks for releasing a new version of $PACKAGE_NAME! You can see it at | ||
https://atmospherejs.com/$ATMOSPHERE_NAME" | ||
fi | ||
|
||
cleanup | ||
|
||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,38 @@ | ||
# Test Meteor package before publishing to Atmosphere.js | ||
#!/bin/sh | ||
# Test Meteor package before publishing to Atmospherejs.com | ||
|
||
# Make sure Meteor is installed, per https://www.meteor.com/install | ||
# 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 | ||
DIR=$( cd "$( dirname "$0" )" && pwd ) | ||
cd $DIR/.. | ||
cd "$( dirname "$0" )/.." | ||
|
||
# move away the package.js for Dojo | ||
mv package.js package.dojo | ||
cp meteor/package.js ./ | ||
|
||
# run tests and restore the Dojo package.js even if Ctrl+C is pressed | ||
# run tests and delete the temporary package.js even if Ctrl+C is pressed | ||
int_trap() { | ||
echo | ||
echo "Tests interrupted." | ||
printf "Tests interrupted. Hopefully you verified in the browser that tests pass?\n\n" | ||
} | ||
|
||
trap int_trap INT | ||
|
||
meteor test-packages ./ | ||
# test any package*.js packages we may have, e.g. package.js, package-compat.js | ||
for PACKAGE_FILE in meteor/package*.js; do | ||
|
||
PACKAGE_NAME=$(grep -i name $PACKAGE_FILE | head -1 | cut -d "'" -f 2) | ||
|
||
echo "Testing $PACKAGE_NAME..." | ||
|
||
# Meteor expects package.js to be in the root directory of the checkout, but we already have a package.js for Dojo | ||
mv package.js package.dojo | ||
cp $PACKAGE_FILE ./package.js | ||
|
||
# provide an invalid MONGO_URL so Meteor doesn't bog us down with an empty Mongo database | ||
MONGO_URL=mongodb:// meteor test-packages ./ | ||
|
||
rm -rf ".build.$PACKAGE_NAME" | ||
rm -rf ".build.local-test:$PACKAGE_NAME" | ||
rm versions.json 2>/dev/null | ||
|
||
PACKAGE_NAME=$(grep -i name package.js | head -1 | cut -d "'" -f 2) | ||
rm -rf ".build.$PACKAGE_NAME" | ||
rm -rf ".build.local-test:$PACKAGE_NAME" | ||
rm versions.json | ||
mv package.dojo package.js | ||
|
||
mv package.dojo package.js | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
'use strict'; | ||
|
||
Tinytest.add('Moment.is', function (test) { | ||
test.ok(moment.isMoment(moment()), 'simple moment object'); | ||
test.ok(moment.isMoment(moment()), {message: 'simple moment object'}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters