Anatomy of a range selector
[dygraphs.git] / release.sh
CommitLineData
806e1ea5
DV
1#!/bin/bash
2# This script "releases" a version of dygraphs.
3
4if [ $# -ne 1 ]; then
5 echo "Usage: $0 X.Y.Z" >&2
6 exit 1
7fi
8
9VERSION=$1
10echo $VERSION | egrep '\d+\.\d+\.\d+' > /dev/null
11if [ $? -ne 0 ]; then
12 echo "Version must be of the form 1.2.3 (got '$VERSION')" >&2
13 exit 1
14fi
15
16# Make sure this is being run from a release branch with the correct name.
17branch=$(git rev-parse --abbrev-ref HEAD)
18if [ $branch != "release-$VERSION" ]; then
19 echo "Must be on a branch named 'release-$VERSION' (found '$branch')" >&2
20 exit 1
21fi
22
7655a77a
DV
23git status | grep 'working directory clean' > /dev/null
24if [ $? -ne 0 ]; then
25 echo "Must release with a clean working directory. Commit your changes." >&2
26 exit 1
27fi
28
9d3b9a9e
DV
29grep "$VERSION" package.json
30if [ $? -ne 0 ]; then
31 echo "Version in package.json doesn't match command line argument." >&2
32 exit 1
33fi
34
35grep "v$VERSION" bower.json
36if [ $? -ne 0 ]; then
37 echo "Version in bower.json doesn't match command line argument." >&2
38 exit 1
39fi
40
fd674af0
DV
41grep "$VERSION" releases.json
42if [ $? -ne 0 ]; then
43 echo "Version $VERSION does not appear in releases.json." >&2
44 exit 1
45fi
46
b3845506 47rm dygraph-combined.js # changes to this will make the tests fail.
7655a77a
DV
48make lint test test-combined
49if [ $? -ne 0 ]; then
50 echo "Tests failed. Won't release!" >&2
51 exit 1
52fi
fd674af0 53git reset --hard # make test-combined deletes the source map
7655a77a 54
806e1ea5
DV
55# Push a permanent copy of documentation & generated files to a versioned copy
56# of the site. This is where the downloadable files are generated.
57# TODO(danvk): make sure this actually generates the downloadable files!
58echo "Pushing docs and generated files to dygraphs.com/$VERSION"
59./push-to-web.sh dygraphs.com:dygraphs.com/$VERSION
60if [ $? -ne 0 ]; then
61 echo "Push to web failed" >&2
62 exit 1
63fi
64
172be781
DV
65# Everything is good.
66# Switch to the "releases" branch, merge this change and tag it.
67echo "Switching branches to do the release."
68git checkout releases
69git merge --no-ff $branch
70
806e1ea5
DV
71COMMIT=$(git rev-parse HEAD)
72echo "Tagging commit $COMMIT as version $VERSION"
7655a77a 73git tag -a "v$VERSION" -m "Release of version $VERSION"
06682812 74git push --tags
806e1ea5
DV
75
76echo "Release was successful!"
9023a6d6
DV
77echo "Pushing the new version to dygraphs.com..."
78./push-to-web.sh dygraphs.com:dygraphs.com
79
80echo "Success!\n"
81echo "Don't forget to merge changes on this branch back into master:"
00179556 82echo "git merge --no-ff $branch"
172be781
DV
83
84# Discourage users from working on the "releases" branch.
85git checkout master