From a7ddb9b64ed863110c1e129bf6c2612b0c2d9ff9 Mon Sep 17 00:00:00 2001 From: Kevin Chisholm Date: Wed, 15 Jun 2022 13:14:18 -0500 Subject: [PATCH] readability refactor (#106026) --- dev/conductor/core/lib/src/globals.dart | 15 ++++++ dev/conductor/core/lib/src/state.dart | 69 ++++++++++++------------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/dev/conductor/core/lib/src/globals.dart b/dev/conductor/core/lib/src/globals.dart index e9c7bfa31c7..5eb1541033a 100644 --- a/dev/conductor/core/lib/src/globals.dart +++ b/dev/conductor/core/lib/src/globals.dart @@ -22,6 +22,21 @@ const String kLuciPackagingConsoleLink = 'https://ci.chromium.org/p/flutter/g/pa const String kWebsiteReleasesUrl = 'https://docs.flutter.dev/development/tools/sdk/releases'; +const String discordReleaseChannel = + 'https://discord.com/channels/608014603317936148/783492179922124850'; + +const String flutterReleaseHotline = + 'https://mail.google.com/chat/u/0/#chat/space/AAAA6RKcK2k'; + +const String hotfixToStableWiki = + 'https://github.com/flutter/flutter/wiki/Hotfixes-to-the-Stable-Channel'; + +const String flutterAnnounceGroup = + 'https://groups.google.com/g/flutter-announce'; + +const String hotfixDocumentationBestPractices = + 'https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices'; + final RegExp releaseCandidateBranchRegex = RegExp( r'flutter-(\d+)\.(\d+)-candidate\.(\d+)', ); diff --git a/dev/conductor/core/lib/src/state.dart b/dev/conductor/core/lib/src/state.dart index 3078a0a5acf..505440c8ed9 100644 --- a/dev/conductor/core/lib/src/state.dart +++ b/dev/conductor/core/lib/src/state.dart @@ -7,15 +7,36 @@ import 'dart:convert' show JsonEncoder, jsonDecode; import 'package:file/file.dart' show File; import 'package:platform/platform.dart'; -import './globals.dart'; +import './globals.dart' as globals; import './proto/conductor_state.pb.dart' as pb; import './proto/conductor_state.pbenum.dart' show ReleasePhase; const String kStateFileName = '.flutter_conductor_state.json'; +const String betaPostReleaseMsg = """ + 'Ensure the following post release steps are complete:', + '\t 1. Post announcement to discord', + '\t\t Discord: ${globals.discordReleaseChannel}', + '\t 2. Post announcement flutter release hotline chat room', + '\t\t Chatroom: ${globals.flutterReleaseHotline}', +"""; + +const String stablePostReleaseMsg = """ + 'Ensure the following post release steps are complete:', + '\t 1. Update hotfix to stable wiki following documentation best practices', + '\t\t Wiki link: ${globals.hotfixToStableWiki}', + '\t\t Best practices: ${globals.hotfixDocumentationBestPractices}', + '\t 2. Post announcement to flutter-announce group', + '\t\t Flutter Announce: ${globals.flutterAnnounceGroup}', + '\t 3. Post announcement to discord', + '\t\t Discord: ${globals.discordReleaseChannel}', + '\t 4. Post announcement flutter release hotline chat room', + '\t\t Chatroom: ${globals.flutterReleaseHotline}', +"""; + String luciConsoleLink(String channel, String groupName) { assert( - kReleaseChannels.contains(channel), + globals.kReleaseChannels.contains(channel), 'channel $channel not recognized', ); assert( @@ -30,7 +51,8 @@ String luciConsoleLink(String channel, String groupName) { String defaultStateFilePath(Platform platform) { final String? home = platform.environment['HOME']; if (home == null) { - throw ConductorException(r'Environment variable $HOME must be set!'); + throw globals.ConductorException( + r'Environment variable $HOME must be set!'); } return [ home, @@ -134,7 +156,7 @@ String phaseInstructions(pb.ConductorState state) { 'at ${state.engine.checkoutPath} in order:', for (final pb.Cherrypick cherrypick in state.engine.cherrypicks) '\t${cherrypick.trunkRevision}', - 'See $kReleaseDocumentationUrl for more information.', + 'See ${globals.kReleaseDocumentationUrl} for more information.', ].join('\n'); case ReleasePhase.CODESIGN_ENGINE_BINARIES: if (!requiresEnginePR(state)) { @@ -143,7 +165,7 @@ String phaseInstructions(pb.ConductorState state) { } // User's working branch was pushed to their mirror, but a PR needs to be // opened on GitHub. - final String newPrLink = getNewPrLink( + final String newPrLink = globals.getNewPrLink( userName: githubAccount(state.engine.mirror.url), repoName: 'engine', state: state, @@ -179,7 +201,7 @@ String phaseInstructions(pb.ConductorState state) { 'PR is necessary.'; } - final String newPrLink = getNewPrLink( + final String newPrLink = globals.getNewPrLink( userName: githubAccount(state.framework.mirror.url), repoName: 'flutter', state: state, @@ -195,44 +217,21 @@ String phaseInstructions(pb.ConductorState state) { case ReleasePhase.VERIFY_RELEASE: return 'Release archive packages must be verified on cloud storage: ${luciConsoleLink(state.releaseChannel, 'packaging')}'; case ReleasePhase.RELEASE_COMPLETED: - const String DISCORD_RELEASE_CHANNEL = - 'https://discord.com/channels/608014603317936148/783492179922124850'; - const String FLUTTER_RELEASE_HOTLINE = - 'https://mail.google.com/chat/u/0/#chat/space/AAAA6RKcK2k'; - const String HOTFIX_TO_STABLE_WIKI = - 'https://github.com/flutter/flutter/wiki/Hotfixes-to-the-Stable-Channel'; - const String FLUTTER_ANNOUNCE_GROUP = - 'https://groups.google.com/g/flutter-announce'; - const String DOCUMENTATION_BEST_PRACTICES = - 'https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices'; if (state.releaseChannel == 'beta') { return [ - 'Ensure the following post release steps are complete:', - '\t 1. Post announcement to discord', - '\t\t Discord: $DISCORD_RELEASE_CHANNEL', - '\t 2. Post announcement flutter release hotline chat room', - '\t\t Chatroom: $FLUTTER_RELEASE_HOTLINE', + betaPostReleaseMsg, '-----------------------------------------------------------------------', 'This release has been completed.', ].join('\n'); } return [ - 'Ensure the following post release steps are complete:', - '\t 1. Update hotfix to stable wiki following documentation best practices', - '\t\t Wiki link: $HOTFIX_TO_STABLE_WIKI', - '\t\t Best practices: $DOCUMENTATION_BEST_PRACTICES', - '\t 2. Post announcement to flutter-announce group', - '\t\t Flutter Announce: $FLUTTER_ANNOUNCE_GROUP', - '\t 3. Post announcement to discord', - '\t\t Discord: $DISCORD_RELEASE_CHANNEL', - '\t 4. Post announcement flutter release hotline chat room', - '\t\t Chatroom: $FLUTTER_RELEASE_HOTLINE', + stablePostReleaseMsg, '-----------------------------------------------------------------------', 'This release has been completed.', ].join('\n'); } // For analyzer - throw ConductorException('Unimplemented phase ${state.currentPhase}'); + throw globals.ConductorException('Unimplemented phase ${state.currentPhase}'); } /// Regex pattern for git remote host URLs. @@ -250,13 +249,13 @@ String githubAccount(String remoteUrl) { final String engineUrl = remoteUrl; final RegExpMatch? match = githubRemotePattern.firstMatch(engineUrl); if (match == null) { - throw ConductorException( + throw globals.ConductorException( 'Cannot determine the GitHub account from $engineUrl', ); } final String? accountName = match.group(2); if (accountName == null || accountName.isEmpty) { - throw ConductorException( + throw globals.ConductorException( 'Cannot determine the GitHub account from $match', ); } @@ -271,7 +270,7 @@ ReleasePhase getNextPhase(ReleasePhase currentPhase) { assert(currentPhase != null); final ReleasePhase? nextPhase = ReleasePhase.valueOf(currentPhase.value + 1); if (nextPhase == null) { - throw ConductorException('There is no next ReleasePhase!'); + throw globals.ConductorException('There is no next ReleasePhase!'); } return nextPhase; }