diff --git a/Creating-a-release.md b/Creating-a-release.md index 7bed1e0..0093a7b 100644 --- a/Creating-a-release.md +++ b/Creating-a-release.md @@ -68,3 +68,81 @@ koch nsis -d:release || exit /b move /y build\nim_%NIMVER%.exe web\upload\download\nim-%NIMVER%_x64.exe || exit /b ``` + +Shell script, work in progress: + +```sh +#!/bin/sh + +set -eu + +# Test and release a new Nim version + +ask() { + echo "$1 Enter to continue, Ctrl-C to stop" + read _ +} + +ask "Ensure that https://travis-ci.org/nim-lang/Nim is green" + +ask "Ensure the last build on http://ci.nim-lang.org/ is successful" + +orig_dir=$(pwd) +tmp_dir=$(mktemp -d) +cd $tmp_dir + +# Clone repos + +#git clone https://github.com/nim-lang/nim.git --depth 1 +cp -a /tmp/nim . +cd nim +#git clone https://github.com/nim-lang/nimble.git --depth 1 +cp -a /tmp/nimble . +#git clone --depth 1 https://github.com/nim-lang/csources +cp -a /tmp/csources . + +# Build Nim + +cd csources && sh build.sh +cd .. +bin/nim c koch +./koch boot -d:release + +# Run the full testsuite (tests\testament\tester all) and ensure it's green; actually ensure travis is green (Usually the case these days) + +# Set version + +old_version=$(grep ^version compiler.nimble | cut -d'"' -f2) +nim_major="$1" +nim_minor="$2" +nim_patch="$3" +new_version="$nim_major.$nim_minor.$nim_patch" + +ask "Old version is $old_version - new version is $new_version" + +# Update the version + +sed -i "s/^ NimMajor\*: int = [0-9]*$/ NimMajor*: int = $nim_major/" lib/system.nim +sed -i "s/^ NimMinor\*: int = [0-9]*$/ NimMinor*: int = $nim_minor/" lib/system.nim +sed -i "s/^ NimPatch\*: int = [0-9]*$/ NimPatch*: int = $nim_patch/" lib/system.nim + +sed -i "s/version = .*/version = \"$new_version\"/" compiler.nimble +sed -i "s/version = .*/version = \"$new_version\"/" lib/stdlib.nimble + +git diff | cat -n + +ask "Ensure the version was updated in 3 files" + +# Update news.txt +# write a news ticker entry + +# Generate the full docs + +./koch web0 + +# Generate the installers + +./koch csource -d:release +./koch xz -d:release +./koch nsis +``` \ No newline at end of file