Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

[flutter_plugin_tools] Complete migration to NNBD #4048

Merged
merged 5 commits into from Jun 12, 2021

Conversation

stuartmorgan
Copy link
Contributor

Migrates the publish command to NNBD.

This is the last command, so the top-level files are migrated as well, allowing the tool to run in strong mode.

Fixes flutter/flutter#81912

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Note that unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
  • I updated CHANGELOG.md to add a description of the change.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
  • All existing and new tests are passing.

Copy link
Contributor

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % nits

Comment on lines +157 to +162
final String? remoteUrl = await _verifyRemote(remoteName);
if (remoteUrl == null) {
printError(
'Unable to find URL for remote $remoteName; cannot push tags');
throw ToolExit(1);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits: Can refactor this into _RemoteInfo()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think putting very non-trivial logic (running an external process, potentially killing the whole execution) in the constructor of a data class would be much less clear; keeping it as a simple data object with the logic outside it makes the object, and the failure cases, easier to understand IMO.

@@ -408,15 +403,15 @@ Safe to ignore if the package is deleted in this commit.
return statusOutput.isEmpty;
}

Future<String> _verifyRemote(String remote) async {
Future<String?> _verifyRemote(String remote) async {
final io.ProcessResult remoteInfo = await processRunner.run(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits: Maybe have a different name here as there is a RemoteInfo class now and it might be confusing.
maybe getRemoteUrlResult?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

return _credentialsPath;
}
}

/// The path in which pub expects to find its credentials file.
final String _credentialsPath = () {
final String? _credentialsPath = () {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits:
maybe we can move the above logic in _ensureValidPubCredential:

    final String? credentialsPath = _credentialsPath;
    if (credentialsPath == null) {
      printError('Unable to determine pub credentials path');
      throw ToolExit(1);
    }

here, so _credentialsPath can return a non-null String, then static String? getCredentialPath() can also return a non-null String

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good thought, done.

@stuartmorgan stuartmorgan added the waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land. label Jun 12, 2021
@fluttergithubbot
Copy link

This pull request is not suitable for automatic merging in its current state.

  • The status or check suite analyze has failed. Please fix the issues identified (or deflake) before re-applying this label.

@fluttergithubbot fluttergithubbot removed the waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land. label Jun 12, 2021
Copy link
Contributor

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still LGTM % nits. CI failure should be an easy fix too.

@@ -500,15 +494,16 @@ Safe to ignore if the package is deleted in this commit.
}

void _ensureValidPubCredential() {
final String credentialsPath = _credentialsPath;
final File credentialFile = packagesDir.fileSystem.file(_credentialsPath);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nits:

Suggested change
final File credentialFile = packagesDir.fileSystem.file(_credentialsPath);
final File credentialFile = packagesDir.fileSystem.file(credentialsPath);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@stuartmorgan stuartmorgan added the waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land. label Jun 12, 2021
@fluttergithubbot fluttergithubbot merged commit 01800a0 into flutter:master Jun 12, 2021
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 12, 2021
fotiDim pushed a commit to fotiDim/plugins that referenced this pull request Sep 13, 2021
@stuartmorgan stuartmorgan deleted the tool-nnbd-finish branch April 19, 2022 17:34
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla: yes waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land.
Projects
None yet
3 participants