jquery-ui/build/release/prepare-release

336 lines
7.0 KiB
Bash
Executable File

#!/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=`cat version.txt`
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/' \
| 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
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 version.txt to $version_new..."
echo $version_new > version.txt
git commit -a -m "Tagging the $version_new release."
version_new_time=`git log -1 --pretty=format:"%ad"`
echo "Committed version.txt at $version_new_time..."
echo "Tagging $version_new..."
git tag $version_new
echo "Updating version.txt to $version_next..."
echo $version_next > version.txt
git commit -a -m "Updating the $git_branch version to $version_next"
echo "Committed version.txt..."
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."
echo "Create and close the $version_new Milestone with the above date and time."
echo "Create the $version_new Version with the above date and time."
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
cd build
# Update the link to the docs (never contains the patch version)
echo "Updating URL for API docs..."
sed "s/UI\/API\/\${release\.version}/UI\/API\/$major_minor/" build.xml >build.xml.tmp
mv build.xml.tmp build.xml
# Run the build
echo "Running build..."
ant
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/build/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
#
# ruby -e 'puts File.read("thankyou").split("\n").join(", ")' > thankyou2