From 44b357dec51772a6d7d9589fe857bee62da32522 Mon Sep 17 00:00:00 2001 From: Arron Washington Date: Sun, 12 Jul 2015 05:16:21 -0400 Subject: [PATCH 1/5] Add pub_semver for Semver parsing. --- pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pubspec.yaml b/pubspec.yaml index bba2064f..0d33a2f1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,4 +11,5 @@ dependencies: dev_dependencies: grinder: ^0.7.0 html: ^0.12.0 + pub_semver: ^1.2.1 test: ^0.12.0 From 65ea4c88b33cbace524e6b52b163a6d0741db1c0 Mon Sep 17 00:00:00 2001 From: Arron Washington Date: Sun, 12 Jul 2015 05:44:59 -0400 Subject: [PATCH 2/5] Most of the plumbing to automate version bumps in package. --- tool/deploy.dart | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tool/deploy.dart diff --git a/tool/deploy.dart b/tool/deploy.dart new file mode 100644 index 00000000..8c316fa4 --- /dev/null +++ b/tool/deploy.dart @@ -0,0 +1,60 @@ +import 'dart:io'; + +import 'package:grinder/grinder.dart'; +import 'package:pub_semver/pub_semver.dart'; + +main(List args) => grind(args); + +@DefaultTask('Deploy software') +deploy() { + deployIt(); +} + +deployIt() { + // TODO: command line parsing (major, minor, patch) version update + // Comment out the if statements while developing this task. + var diffResult = Process.runSync("git", ["diff", "--shortstat"]); + if (diffResult.stdout.toString().isNotEmpty) + throw 'Index is dirty; commit files and try again'; + + var syncResult = Process.runSync("git", ["rev-list", "origin..HEAD"]); + if (syncResult.stdout.toString().isNotEmpty) + throw 'Not synchronized with master; git push and try again'; + + var packageFileData = new File('package.json').readAsStringSync(); + var yamlFileData = new File('pubspec.yaml').readAsStringSync(); + var changelogData = new File('CHANGELOG.md').readAsStringSync(); + + var packageData = JSON.decode(packageFileData); + + var currentVersion = new Version.parse(packageData['version']); + // TODO: have this match the parameter passed in on the command line + var nextVersion = currentVersion.nextPatch; + + var jsonPattern = (version) => '"version": "${version}"'; + var yamlPattern = (version) => 'version: ${version}'; + var changelogPattern = (version) => "# ${version}" + // We do pattern matches to preserve the formatting in the existing files. + + var newPackageFileData = + packageFileData.replaceFirst(jsonPattern(currentVersion), + jsonPattern(nextVersion)); + var newYamlFileData = + yamlFileData.replaceFirst(yamlPattern(currentVersion), + yamlPattern(nextVersion)); + var newChangelogData = + changelogData.replaceFirst(changelogPattern('Upcoming Version'), + changelogPattern(nextVersion)); + + new File('package.json').writeAsStringSync(newPackageFileData); + new File('pubspec.yaml').writeAsStringSync(newYamlFileData); + new File('CHANGELOG.md').writeAsStringSync(newChangelogData); + + Process.runSync("git", ["commit", "-a", '-m "prepare $nextVersion"']); + Process.runSync("git", ["tag", nextVersion.toString()]); + Process.runSync("git", ["push", "-t"]); + Process.runSync("apm", ["publish", "-t", nextVersion.toString()]); + + print("Version ${nextVersion} has been prepared!"); + print('¯\\_(ツ)_/¯'); +} From f7148018351211c7466d686357d44609e9ae24ff Mon Sep 17 00:00:00 2001 From: Arron Washington Date: Tue, 14 Jul 2015 22:27:53 -0400 Subject: [PATCH 3/5] Re-add missing code. One too many CTRL-Z? --- tool/deploy.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tool/deploy.dart b/tool/deploy.dart index 8c316fa4..7bb188e5 100644 --- a/tool/deploy.dart +++ b/tool/deploy.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:io'; import 'package:grinder/grinder.dart'; @@ -33,7 +34,7 @@ deployIt() { var jsonPattern = (version) => '"version": "${version}"'; var yamlPattern = (version) => 'version: ${version}'; - var changelogPattern = (version) => "# ${version}" + var changelogPattern = (version) => "# ${version}"; // We do pattern matches to preserve the formatting in the existing files. var newPackageFileData = From 2af5b77f462a39130300fdf58ed5456f568796ca Mon Sep 17 00:00:00 2001 From: Arron Washington Date: Tue, 14 Jul 2015 22:28:06 -0400 Subject: [PATCH 4/5] More clarity to console text. --- tool/deploy.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/deploy.dart b/tool/deploy.dart index 7bb188e5..f7d87ca8 100644 --- a/tool/deploy.dart +++ b/tool/deploy.dart @@ -56,6 +56,6 @@ deployIt() { Process.runSync("git", ["push", "-t"]); Process.runSync("apm", ["publish", "-t", nextVersion.toString()]); - print("Version ${nextVersion} has been prepared!"); + print("Version ${nextVersion} has been published!"); print('¯\\_(ツ)_/¯'); } From e677e52a8aa5dc638692f9cc8978fbf5c6f20148 Mon Sep 17 00:00:00 2001 From: Arron Washington Date: Tue, 14 Jul 2015 23:34:27 -0400 Subject: [PATCH 5/5] publish.dart now belongs to grind.dart. --- tool/grind.dart | 9 +++++++++ tool/{deploy.dart => publish.dart} | 19 ++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) rename tool/{deploy.dart => publish.dart} (87%) diff --git a/tool/grind.dart b/tool/grind.dart index d5f5f811..ed5e56a7 100644 --- a/tool/grind.dart +++ b/tool/grind.dart @@ -5,8 +5,17 @@ library atom.grind; import 'dart:io'; +import 'dart:convert'; + import 'package:grinder/grinder.dart'; +import 'package:pub_semver/pub_semver.dart'; + +part "publish.dart"; + +// crashes grinder -- so add it as a library dependency for now. +// import 'deploy.dart' show deploy; +// export 'publish.dart' show deploy; main(List args) => grind(args); diff --git a/tool/deploy.dart b/tool/publish.dart similarity index 87% rename from tool/deploy.dart rename to tool/publish.dart index f7d87ca8..d40635bf 100644 --- a/tool/deploy.dart +++ b/tool/publish.dart @@ -1,17 +1,14 @@ -import 'dart:convert'; -import 'dart:io'; +part of atom.grind; -import 'package:grinder/grinder.dart'; -import 'package:pub_semver/pub_semver.dart'; +// import 'dart:convert'; +// import 'dart:io'; -main(List args) => grind(args); +// import 'package:grinder/grinder.dart'; +// import 'package:pub_semver/pub_semver.dart'; -@DefaultTask('Deploy software') -deploy() { - deployIt(); -} - -deployIt() { +@Task('Publish a new version of dartlang') +publish() { + throw 'Sorry -- grinder does not yet support specifying options on the command line!'; // TODO: command line parsing (major, minor, patch) version update // Comment out the if statements while developing this task. var diffResult = Process.runSync("git", ["diff", "--shortstat"]);