Unverified Commit af164fe5 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Migrate vscode to null safety (#79805)

parent 30370c9f
...@@ -2,10 +2,6 @@ ...@@ -2,10 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart';
import '../base/file_system.dart'; import '../base/file_system.dart';
import '../base/platform.dart'; import '../base/platform.dart';
import '../base/utils.dart'; import '../base/utils.dart';
...@@ -21,7 +17,7 @@ const String extensionMarketplaceUrl = ...@@ -21,7 +17,7 @@ const String extensionMarketplaceUrl =
'https://marketplace.visualstudio.com/items?itemName=$extensionIdentifier'; 'https://marketplace.visualstudio.com/items?itemName=$extensionIdentifier';
class VsCode { class VsCode {
VsCode._(this.directory, this.extensionDirectory, { Version version, this.edition, @required FileSystem fileSystem}) VsCode._(this.directory, this.extensionDirectory, { Version? version, this.edition, required FileSystem fileSystem})
: version = version ?? Version.unknown { : version = version ?? Version.unknown {
if (!fileSystem.isDirectorySync(directory)) { if (!fileSystem.isDirectorySync(directory)) {
...@@ -64,13 +60,13 @@ class VsCode { ...@@ -64,13 +60,13 @@ class VsCode {
factory VsCode.fromDirectory( factory VsCode.fromDirectory(
String installPath, String installPath,
String extensionDirectory, { String extensionDirectory, {
String edition, String? edition,
@required FileSystem fileSystem, required FileSystem fileSystem,
}) { }) {
final String packageJsonPath = final String packageJsonPath =
fileSystem.path.join(installPath, 'resources', 'app', 'package.json'); fileSystem.path.join(installPath, 'resources', 'app', 'package.json');
final String versionString = _getVersionFromPackageJson(packageJsonPath, fileSystem); final String? versionString = _getVersionFromPackageJson(packageJsonPath, fileSystem);
Version version; Version? version;
if (versionString != null) { if (versionString != null) {
version = Version.parse(versionString); version = Version.parse(versionString);
} }
...@@ -80,9 +76,9 @@ class VsCode { ...@@ -80,9 +76,9 @@ class VsCode {
final String directory; final String directory;
final String extensionDirectory; final String extensionDirectory;
final Version version; final Version version;
final String edition; final String? edition;
Version _extensionVersion; Version? _extensionVersion;
final List<ValidationMessage> _validationMessages = <ValidationMessage>[]; final List<ValidationMessage> _validationMessages = <ValidationMessage>[];
String get productName => 'VS Code' + (edition != null ? ', $edition' : ''); String get productName => 'VS Code' + (edition != null ? ', $edition' : '');
...@@ -115,35 +111,38 @@ class VsCode { ...@@ -115,35 +111,38 @@ class VsCode {
// $HOME/.vscode/extensions // $HOME/.vscode/extensions
// $HOME/.vscode-insiders/extensions // $HOME/.vscode-insiders/extensions
static List<VsCode> _installedMacOS(FileSystem fileSystem, Platform platform) { static List<VsCode> _installedMacOS(FileSystem fileSystem, Platform platform) {
final String? homeDirPath = FileSystemUtils(fileSystem: fileSystem, platform: platform).homeDirPath;
return _findInstalled(<_VsCodeInstallLocation>[ return _findInstalled(<_VsCodeInstallLocation>[
_VsCodeInstallLocation( _VsCodeInstallLocation(
fileSystem.path.join('/Applications', 'Visual Studio Code.app', 'Contents'), fileSystem.path.join('/Applications', 'Visual Studio Code.app', 'Contents'),
'.vscode', '.vscode',
), ),
_VsCodeInstallLocation( if (homeDirPath != null)
fileSystem.path.join( _VsCodeInstallLocation(
FileSystemUtils(fileSystem: fileSystem, platform: platform).homeDirPath, fileSystem.path.join(
'Applications', homeDirPath,
'Visual Studio Code.app', 'Applications',
'Contents', 'Visual Studio Code.app',
'Contents',
),
'.vscode',
), ),
'.vscode',
),
_VsCodeInstallLocation( _VsCodeInstallLocation(
fileSystem.path.join('/Applications', 'Visual Studio Code - Insiders.app', 'Contents'), fileSystem.path.join('/Applications', 'Visual Studio Code - Insiders.app', 'Contents'),
'.vscode-insiders', '.vscode-insiders',
isInsiders: true, isInsiders: true,
), ),
_VsCodeInstallLocation( if (homeDirPath != null)
fileSystem.path.join( _VsCodeInstallLocation(
FileSystemUtils(fileSystem: fileSystem, platform: platform).homeDirPath, fileSystem.path.join(
'Applications', homeDirPath,
'Visual Studio Code - Insiders.app', 'Applications',
'Contents', 'Visual Studio Code - Insiders.app',
'Contents',
),
'.vscode-insiders',
isInsiders: true,
), ),
'.vscode-insiders',
isInsiders: true,
),
], fileSystem, platform); ], fileSystem, platform);
} }
...@@ -163,9 +162,9 @@ class VsCode { ...@@ -163,9 +162,9 @@ class VsCode {
FileSystem fileSystem, FileSystem fileSystem,
Platform platform, Platform platform,
) { ) {
final String progFiles86 = platform.environment['programfiles(x86)']; final String? progFiles86 = platform.environment['programfiles(x86)'];
final String progFiles = platform.environment['programfiles']; final String? progFiles = platform.environment['programfiles'];
final String localAppData = platform.environment['localappdata']; final String? localAppData = platform.environment['localappdata'];
final List<_VsCodeInstallLocation> searchLocations = <_VsCodeInstallLocation>[ final List<_VsCodeInstallLocation> searchLocations = <_VsCodeInstallLocation>[
if (localAppData != null) if (localAppData != null)
...@@ -241,9 +240,10 @@ class VsCode { ...@@ -241,9 +240,10 @@ class VsCode {
final List<VsCode> results = <VsCode>[]; final List<VsCode> results = <VsCode>[];
for (final _VsCodeInstallLocation searchLocation in searchLocations) { for (final _VsCodeInstallLocation searchLocation in searchLocations) {
if (fileSystem.isDirectorySync(searchLocation.installPath)) { final String? homeDirPath = FileSystemUtils(fileSystem: fileSystem, platform: platform).homeDirPath;
if (homeDirPath != null && fileSystem.isDirectorySync(searchLocation.installPath)) {
final String extensionDirectory = fileSystem.path.join( final String extensionDirectory = fileSystem.path.join(
FileSystemUtils(fileSystem: fileSystem, platform: platform).homeDirPath, homeDirPath,
searchLocation.extensionsFolder, searchLocation.extensionsFolder,
'extensions', 'extensions',
); );
...@@ -263,17 +263,20 @@ class VsCode { ...@@ -263,17 +263,20 @@ class VsCode {
String toString() => String toString() =>
'VS Code ($version)${_extensionVersion != Version.unknown ? ', Flutter ($_extensionVersion)' : ''}'; 'VS Code ($version)${_extensionVersion != Version.unknown ? ', Flutter ($_extensionVersion)' : ''}';
static String _getVersionFromPackageJson(String packageJsonPath, FileSystem fileSystem) { static String? _getVersionFromPackageJson(String packageJsonPath, FileSystem fileSystem) {
if (!fileSystem.isFileSync(packageJsonPath)) { if (!fileSystem.isFileSync(packageJsonPath)) {
return null; return null;
} }
final String jsonString = fileSystem.file(packageJsonPath).readAsStringSync(); final String jsonString = fileSystem.file(packageJsonPath).readAsStringSync();
try { try {
final Map<String, dynamic> jsonObject = castStringKeyedMap(json.decode(jsonString)); final Map<String, dynamic>? jsonObject = castStringKeyedMap(json.decode(jsonString));
return jsonObject['version'] as String; if (jsonObject?.containsKey('version') == true) {
return jsonObject!['version'] as String;
}
} on FormatException { } on FormatException {
return null; return null;
} }
return null;
} }
} }
...@@ -282,11 +285,11 @@ class _VsCodeInstallLocation { ...@@ -282,11 +285,11 @@ class _VsCodeInstallLocation {
this.installPath, this.installPath,
this.extensionsFolder, { this.extensionsFolder, {
this.edition, this.edition,
bool isInsiders bool? isInsiders
}) : isInsiders = isInsiders ?? false; }) : isInsiders = isInsiders ?? false;
final String installPath; final String installPath;
final String extensionsFolder; final String extensionsFolder;
final String edition; final String? edition;
final bool isInsiders; final bool isInsiders;
} }
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import '../base/file_system.dart'; import '../base/file_system.dart';
import '../base/platform.dart'; import '../base/platform.dart';
import '../base/user_messages.dart'; import '../base/user_messages.dart';
...@@ -24,7 +22,7 @@ class VsCodeValidator extends DoctorValidator { ...@@ -24,7 +22,7 @@ class VsCodeValidator extends DoctorValidator {
@override @override
Future<ValidationResult> validate() async { Future<ValidationResult> validate() async {
final String vsCodeVersionText = _vsCode.version == Version.unknown final String? vsCodeVersionText = _vsCode.version == Version.unknown
? null ? null
: userMessages.vsCodeVersion(_vsCode.version.toString()); : userMessages.vsCodeVersion(_vsCode.version.toString());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment