jquery-ui/build/release/prepare-release

337 lines
7.1 KiB
Plaintext
Raw Normal View History

#!/bin/sh
base_dir="`pwd`/jquery-ui-release"
repo_dir="$base_dir/jquery-ui"
release_dir="$repo_dir/build/release"
github_repo="git@github.com:jquery/jquery-ui.git"
git_branch="1-8-stable"
trac_url="http://bugs.jqueryui.com"
#
# Setup environment
#
echo
echo "--------------------------"
echo "| SETTING UP ENVIRONMENT |"
echo "--------------------------"
echo
mkdir $base_dir
cd $base_dir
echo "Cloning repo from $github_repo..."
git clone $github_repo
cd $repo_dir
git checkout $git_branch
echo
echo "Environment setup complete."
echo
#
# Figure out which versions we're dealing with
#
echo
echo "------------------------"
echo "| CALCULATING VERSIONS |"
echo "------------------------"
echo
# NOTE: this will be different for minor and major releases
version_new=`node -e "console.log(require(\"${repo_dir}/package\").version)"`
version_new=${version_new:0:$((${#version_new} - 3))}
major_minor=${version_new%.*}
point=${version_new##*.}
version="${major_minor}.$(($point - 1))"
version_next="${major_minor}.$(($point + 1))pre"
echo "We are going from $version to $version_new."
echo "version.txt will be set to $version_next when complete."
echo "Press enter to continue, or ctrl+c to cancel."
read
#
# Generate shell for changelog
#
echo
echo "------------------------"
echo "| GENERATING CHANGELOG |"
echo "------------------------"
echo
echo "Creating shell for changelog..."
changelog_url="http:\/\/docs.jquery.com\/action\/edit\/UI\/Changelog\/$version_new"
`sed "s/CHANGELOG_URL/$changelog_url/" <$release_dir/changelog-shell >$base_dir/changelog`
# find all commits
echo "Adding commits to changelog..."
format_ticket='[http://dev.jqueryui.com/ticket/XXXX #XXXX]'
format_commit='[http://github.com/jquery/jquery-ui/commit/%H %h]'
format_full="* %s ($format_ticket, $format_commit)"
git whatchanged $version... --pretty=format:"$format_full" \
-- ui themes demos build \
| sed '/^:/ d' \
| sed '/^$/ d' \
| sed 's/\(Fixe[sd] #\)\([0-9][0-9]*\)\(.*\)\(XXXX #XXXX\)/Fixed #\2\3\2 #\2/' \
2010-10-25 15:31:37 +00:00
| LC_ALL='C' sort -f \
>> $base_dir/changelog
# find all fixed tickets
echo "Adding Trac tickets to changelog..."
trac_changelog="$trac_url/query?format=tab&milestone=$version_new"
trac_changelog="$trac_changelog&resolution=fixed&col=id&col=component&col=summary&order=component"
curl $trac_changelog >> $base_dir/changelog
echo
echo "Changelog complete."
echo
#
# Generate list of contributors
#
echo
echo "--------------------------"
echo "| GATHERING CONTRIBUTORS |"
echo "--------------------------"
echo
# find all committers and authors
echo "Adding commiters and authors..."
format_contributors='%aN%n%cN'
git whatchanged $version... --pretty=format:"$format_contributors" \
| sed '/^:/ d' \
| sed '/^$/ d' \
> $base_dir/thankyou
# find all reporters and commenters from Trac
echo "Adding reporters and commenters from Trac..."
curl "$trac_url/report/22?V=$version_new&max=-1&format=tab" | tail -n +2 >> $base_dir/thankyou
# sort names
echo "Sorting contributors..."
LC_ALL='C' sort -f $base_dir/thankyou | col -b | uniq > $base_dir/_thankyou
mv $base_dir/_thankyou $base_dir/thankyou
# find all people that were thanked
echo "Adding people thanked in commits..."
git whatchanged $version... \
| grep -i thank \
>> $base_dir/thankyou
2011-08-02 13:54:36 +00:00
#echo
#echo "Find contributors from duplicates of fixed tickets and add them to:"
#echo "$base_dir/thankyou"
#echo "Press enter when done."
#read
echo
echo "Contributors list complete."
echo
#
# Update version
#
echo
echo "--------------------"
echo "| UPDATING VERSION |"
echo "--------------------"
echo
echo "Updating package.json to $version_new..."
sed "s/\(version\": \"\)\([^\"]*\)/\1${version_new}/" < package.json > _package.json
mv _package.json package.json
git commit -a -m "Tagging the $version_new release."
version_new_time=`git log -1 --pretty=format:"%ad"`
echo "Committed package.json at $version_new_time..."
echo "Tagging $version_new..."
git tag $version_new
echo "Updating package.json to $version_next..."
sed "s/\(version\": \"\)\([^\"]*\)/\1${version_next}/" < package.json > _package.json
mv _package.json package.json
git commit -a -m "Updating the $git_branch version to $version_next"
echo "Committed package.json..."
echo
echo "Version update complete."
echo
#
# Push to GitHub
#
echo
echo "---------------------"
echo "| PUSHING TO GITHUB |"
echo "---------------------"
echo
echo "Please review the output and generated files as a sanity check."
echo "Press enter to continue or ctrl+c to abort."
read
git push
git push --tags
echo
echo "Push to GitHub complete."
echo
#
# Update Trac
#
echo
echo "-----------------"
echo "| UPDATING TRAC |"
echo "-----------------"
echo
# TODO: automate this
# NOTE: this will be different for minor and major releases
# Create new milestrone and version
echo "$version_new was tagged at $version_new_time."
2011-08-02 13:54:36 +00:00
echo "Close the $version_new Milestone with the above date and time."
2010-09-24 19:43:17 +00:00
echo "Create the $version_new Version with the above date and time."
2011-08-02 13:54:36 +00:00
echo "Create a Milestone for the next minor release."
echo "Press enter when done."
read
echo
echo "Trac updates complete."
echo
#
# Build jQuery UI
#
echo
echo "----------------------"
echo "| BUILDING JQUERY UI |"
echo "----------------------"
echo
# check out the tagged version
echo "Checking out $version_new..."
git checkout $version_new
# install dependencies
echo "Installing dependencies..."
npm install
# Run the build
echo "Running build..."
grunt release
echo
echo "Build complete."
echo
#
# Upload zip to Google Code
#
echo
echo "----------------------"
echo "| UPDATE GOOGLE CODE |"
echo "----------------------"
echo
echo "Upload zip to Google Code."
echo " http://code.google.com/p/jquery-ui/downloads/entry"
echo " Summary: jQuery UI $version_new (Source, demos, docs, themes, tests) STABLE"
echo " Labels: Featured, Type-Source, OpSys-All"
echo "Modify the previous release to no longer say STABLE at the end."
echo "Remove the featured label from the previous release."
echo "Press enter when done."
read
echo
echo "Google Code update complete."
echo
#
# Update SVN
#
echo
echo "----------------"
echo "| UPDATING SVN |"
echo "----------------"
echo
cd $base_dir
mkdir svn
cd svn
echo "Checking out SVN tags..."
svn co --depth immediates https://jquery-ui.googlecode.com/svn/tags
cd tags
echo "Unzipping build into tags/$version_new..."
unzip $repo_dir/dist/jquery-ui-$version_new.zip
mv jquery-ui-$version_new $version_new
echo "Adding files to SVN..."
svn add $version_new
echo "Setting svn:mime-type..."
find $version_new -name \*.js -exec svn propset svn:mime-type text/javascript {} \;
find $version_new -name \*.css -exec svn propset svn:mime-type text/css {} \;
find $version_new -name \*.html -exec svn propset svn:mime-type text/html {} \;
find $version_new -name \*.png -exec svn propset svn:mime-type image/png {} \;
find $version_new -name \*.gif -exec svn propset svn:mime-type image/gif {} \;
# TODO: commit
echo
echo "svn commit with the following message:"
echo "Created $version_new tag from http://jquery-ui.googlecode.com/files/jquery-ui-$version_new.zip"
echo "Press enter when done."
read
echo
echo "SVN update complete."
echo
#
# Generate themes
#
2011-08-02 13:54:36 +00:00
# ruby -e 'puts File.read("thankyou").split("\n").join(", ")' | pbcopy