diff --git a/pkgs/unified_analytics/CHANGELOG.md b/pkgs/unified_analytics/CHANGELOG.md index 4b263825..80d889fe 100644 --- a/pkgs/unified_analytics/CHANGELOG.md +++ b/pkgs/unified_analytics/CHANGELOG.md @@ -1,6 +1,7 @@ ## 6.1.4-wip - Fix formatting and remove dependency on `package:intl`. +- Remove direct usage of `package:path` in favor of `package:file`. ## 6.1.3 diff --git a/pkgs/unified_analytics/example/serving_surveys.dart b/pkgs/unified_analytics/example/serving_surveys.dart index cff96ce0..d56339ef 100644 --- a/pkgs/unified_analytics/example/serving_surveys.dart +++ b/pkgs/unified_analytics/example/serving_surveys.dart @@ -5,7 +5,6 @@ import 'package:clock/clock.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; -import 'package:path/path.dart' as p; import 'package:unified_analytics/src/constants.dart'; import 'package:unified_analytics/src/enums.dart'; @@ -54,11 +53,9 @@ void main() async { fs: fs, platform: DevicePlatform.macos, surveyHandler: FakeSurveyHandler.fromList( - dismissedSurveyFile: fs.file(p.join( - home.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )), + dismissedSurveyFile: home + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName), initializedSurveys: [ Survey( uniqueId: 'uniqueId', diff --git a/pkgs/unified_analytics/lib/src/analytics.dart b/pkgs/unified_analytics/lib/src/analytics.dart index de2c89ed..cc8b4bc1 100644 --- a/pkgs/unified_analytics/lib/src/analytics.dart +++ b/pkgs/unified_analytics/lib/src/analytics.dart @@ -9,7 +9,6 @@ import 'package:file/local.dart'; import 'package:file/memory.dart'; import 'package:http/http.dart'; import 'package:meta/meta.dart'; -import 'package:path/path.dart' as p; import 'asserts.dart'; import 'config_handler.dart'; @@ -78,7 +77,7 @@ abstract class Analytics { apiSecret: kGoogleAnalyticsApiSecret, ); - final firstRun = runInitialization(homeDirectory: homeDirectory, fs: fs); + final firstRun = runInitialization(homeDirectory: homeDirectory); return AnalyticsImpl( tool: tool, @@ -91,11 +90,9 @@ abstract class Analytics { fs: fs, gaClient: gaClient, surveyHandler: SurveyHandler( - dismissedSurveyFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )), + dismissedSurveyFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName), ), enableAsserts: enableAsserts, clientIde: clientIde, @@ -157,7 +154,7 @@ abstract class Analytics { apiSecret: kTestApiSecret, ); - final firstRun = runInitialization(homeDirectory: homeDirectory, fs: fs); + final firstRun = runInitialization(homeDirectory: homeDirectory); return AnalyticsImpl( tool: tool, @@ -170,11 +167,9 @@ abstract class Analytics { fs: fs, gaClient: gaClient, surveyHandler: SurveyHandler( - dismissedSurveyFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )), + dismissedSurveyFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName), ), enableAsserts: enableAsserts, clientIde: clientIde, @@ -307,7 +302,7 @@ abstract class Analytics { String toolsMessage = kToolsMessage, bool enableAsserts = true, }) { - final firstRun = runInitialization(homeDirectory: homeDirectory, fs: fs); + final firstRun = runInitialization(homeDirectory: homeDirectory); return FakeAnalytics._( tool: tool, @@ -320,11 +315,9 @@ abstract class Analytics { fs: fs, surveyHandler: surveyHandler ?? FakeSurveyHandler.fromList( - dismissedSurveyFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )), + dismissedSurveyFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName), initializedSurveys: [], ), gaClient: gaClient ?? const FakeGAClient(), @@ -395,17 +388,13 @@ class AnalyticsImpl implements Analytics { }) : _gaClient = gaClient, _surveyHandler = surveyHandler, _enableAsserts = enableAsserts, - _clientIdFile = fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kClientIdFileName, - )), + _clientIdFile = homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kClientIdFileName), _userProperty = UserProperty( - sessionFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kSessionFileName, - )), + sessionFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kSessionFileName), flutterChannel: flutterChannel, host: platform.label, flutterVersion: flutterVersion, @@ -420,20 +409,15 @@ class AnalyticsImpl implements Analytics { enabledFeatures: enabledFeatures, ), _configHandler = ConfigHandler( - fs: fs, homeDirectory: homeDirectory, - configFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kConfigFileName, - )), + configFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kConfigFileName), ), _logHandler = LogHandler( - logFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kLogFileName, - )), + logFile: homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kLogFileName), ) { // This initializer class will let the instance know // if it was the first run; if it is, nothing will be sent diff --git a/pkgs/unified_analytics/lib/src/config_handler.dart b/pkgs/unified_analytics/lib/src/config_handler.dart index 1cead48f..8db46603 100644 --- a/pkgs/unified_analytics/lib/src/config_handler.dart +++ b/pkgs/unified_analytics/lib/src/config_handler.dart @@ -7,9 +7,7 @@ import 'dart:convert'; import 'package:clock/clock.dart'; import 'package:convert/convert.dart'; import 'package:file/file.dart'; -import 'package:path/path.dart' as p; -import 'constants.dart'; import 'initializer.dart'; import 'utils.dart'; @@ -33,7 +31,6 @@ class ConfigHandler { RegExp(telemetryFlagPattern, multiLine: true); static RegExp toolRegex = RegExp(toolPattern, multiLine: true); - final FileSystem fs; final Directory homeDirectory; final File configFile; @@ -45,7 +42,6 @@ class ConfigHandler { bool _telemetryEnabled = true; ConfigHandler({ - required this.fs, required this.homeDirectory, required this.configFile, }) : configFileLastModified = configFile.lastModifiedSync() { @@ -176,12 +172,7 @@ class ConfigHandler { /// [parsedTools] map and trigger parsing the config again. void resetConfig() { createConfigFile( - configFile: fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kConfigFileName, - )), - fs: fs, + configFile: configFile, homeDirectory: homeDirectory, ); parsedTools.clear(); diff --git a/pkgs/unified_analytics/lib/src/initializer.dart b/pkgs/unified_analytics/lib/src/initializer.dart index 650388ba..131968b8 100644 --- a/pkgs/unified_analytics/lib/src/initializer.dart +++ b/pkgs/unified_analytics/lib/src/initializer.dart @@ -4,7 +4,6 @@ import 'package:clock/clock.dart'; import 'package:file/file.dart'; -import 'package:path/path.dart' as p; import 'constants.dart'; import 'utils.dart'; @@ -22,14 +21,13 @@ void createClientIdFile({required File clientIdFile}) { void createConfigFile({ required File configFile, required Directory homeDirectory, - required FileSystem fs, }) { configFile.createSync(recursive: true); // If the user was previously opted out, then we will // replace the line that assumes automatic opt in with // an opt out from the start - if (legacyOptOut(fs: fs, home: homeDirectory)) { + if (legacyOptOut(homeDirectory: homeDirectory)) { configFile.writeAsStringSync( kConfigString.replaceAll('reporting=1', 'reporting=0')); } else { @@ -75,47 +73,43 @@ DateTime createSessionFile({required File sessionFile}) { /// - Dismissed survey JSON file bool runInitialization({ required Directory homeDirectory, - required FileSystem fs, }) { var firstRun = false; + final dartToolDirectory = + homeDirectory.childDirectory(kDartToolDirectoryName); // When the config file doesn't exist, initialize it with the default tools - // and the current date - final configFile = fs.file( - p.join(homeDirectory.path, kDartToolDirectoryName, kConfigFileName)); + // and the current date. + final configFile = dartToolDirectory.childFile(kConfigFileName); if (!configFile.existsSync()) { firstRun = true; createConfigFile( configFile: configFile, - fs: fs, homeDirectory: homeDirectory, ); } - // Begin initialization checks for the client id - final clientFile = fs.file( - p.join(homeDirectory.path, kDartToolDirectoryName, kClientIdFileName)); + // Begin initialization checks for the client id. + final clientFile = dartToolDirectory.childFile(kClientIdFileName); if (!clientFile.existsSync()) { createClientIdFile(clientIdFile: clientFile); } - // Begin initialization checks for the session file - final sessionFile = fs.file( - p.join(homeDirectory.path, kDartToolDirectoryName, kSessionFileName)); + // Begin initialization checks for the session file. + final sessionFile = dartToolDirectory.childFile(kSessionFileName); if (!sessionFile.existsSync()) { createSessionFile(sessionFile: sessionFile); } - // Begin initialization checks for the log file to persist events locally - final logFile = - fs.file(p.join(homeDirectory.path, kDartToolDirectoryName, kLogFileName)); + // Begin initialization checks for the log file to persist events locally. + final logFile = dartToolDirectory.childFile(kLogFileName); if (!logFile.existsSync()) { createLogFile(logFile: logFile); } - // Begin initialization checks for the dismissed survey file - final dismissedSurveyFile = fs.file(p.join( - homeDirectory.path, kDartToolDirectoryName, kDismissedSurveyFileName)); + // Begin initialization checks for the dismissed survey file. + final dismissedSurveyFile = + dartToolDirectory.childFile(kDismissedSurveyFileName); if (!dismissedSurveyFile.existsSync()) { createDismissedSurveyFile(dismissedSurveyFile: dismissedSurveyFile); } diff --git a/pkgs/unified_analytics/lib/src/utils.dart b/pkgs/unified_analytics/lib/src/utils.dart index 9d694ed1..41848a20 100644 --- a/pkgs/unified_analytics/lib/src/utils.dart +++ b/pkgs/unified_analytics/lib/src/utils.dart @@ -9,7 +9,6 @@ import 'dart:math' show Random; import 'package:clock/clock.dart'; import 'package:convert/convert.dart'; import 'package:file/file.dart'; -import 'package:path/path.dart' as p; import 'enums.dart'; import 'event.dart'; @@ -146,30 +145,32 @@ Directory? getHomeDirectory(FileSystem fs) { /// } /// } /// ``` -bool legacyOptOut({required FileSystem fs, required Directory home}) { +bool legacyOptOut({required Directory homeDirectory}) { // List of Maps for each of the config file, `key` refers to the // key in the json file that indicates if the user has been opted // out or not final legacyConfigFiles = [ - { - 'tool': DashTool.dartTool, - 'file': fs.file(p.join(home.path, '.dart', 'dartdev.json')), - 'key': 'enabled', - }, - { - 'tool': DashTool.flutterTool, - 'file': fs.file(p.join(home.path, '.flutter')), - 'key': 'enabled', - }, - { - 'tool': DashTool.devtools, - 'file': fs.file(p.join(home.path, '.flutter-devtools', '.devtools')), - 'key': 'analyticsEnabled', - }, + ( + tool: DashTool.dartTool, + file: homeDirectory.childDirectory('.dart').childFile('dartdev.json'), + key: 'enabled', + ), + ( + tool: DashTool.flutterTool, + file: homeDirectory.childFile('.flutter'), + key: 'enabled', + ), + ( + tool: DashTool.devtools, + file: homeDirectory + .childDirectory('.flutter-devtools') + .childFile('.devtools'), + key: 'analyticsEnabled', + ), ]; for (final legacyConfigObj in legacyConfigFiles) { - final legacyFile = legacyConfigObj['file']! as File; - final lookupKey = legacyConfigObj['key']! as String; + final legacyFile = legacyConfigObj.file; + final lookupKey = legacyConfigObj.key; if (legacyFile.existsSync()) { try { diff --git a/pkgs/unified_analytics/pubspec.yaml b/pkgs/unified_analytics/pubspec.yaml index 2dc65c18..34cb046d 100644 --- a/pkgs/unified_analytics/pubspec.yaml +++ b/pkgs/unified_analytics/pubspec.yaml @@ -18,7 +18,6 @@ dependencies: file: '>=6.1.4 <8.0.0' http: '>=0.13.5 <2.0.0' meta: ^1.9.0 - path: ^1.8.0 dev_dependencies: dart_flutter_team_lints: ^3.0.0 diff --git a/pkgs/unified_analytics/test/events_with_fake_test.dart b/pkgs/unified_analytics/test/events_with_fake_test.dart index b6790886..9794275a 100644 --- a/pkgs/unified_analytics/test/events_with_fake_test.dart +++ b/pkgs/unified_analytics/test/events_with_fake_test.dart @@ -5,7 +5,6 @@ import 'package:clock/clock.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; -import 'package:path/path.dart' as p; import 'package:test/test.dart'; import 'package:unified_analytics/src/constants.dart'; @@ -52,11 +51,9 @@ void main() { setUp(() async { fs = MemoryFileSystem.test(style: FileSystemStyle.posix); homeDirectory = fs.directory('home'); - dismissedSurveyFile = fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )); + dismissedSurveyFile = homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName); final initialAnalytics = Analytics.fake( tool: DashTool.flutterTool, diff --git a/pkgs/unified_analytics/test/log_handler_test.dart b/pkgs/unified_analytics/test/log_handler_test.dart index 05fb466d..db14d96c 100644 --- a/pkgs/unified_analytics/test/log_handler_test.dart +++ b/pkgs/unified_analytics/test/log_handler_test.dart @@ -6,7 +6,6 @@ import 'dart:convert'; import 'package:file/file.dart'; import 'package:file/memory.dart'; -import 'package:path/path.dart' as p; import 'package:test/fake.dart'; import 'package:test/test.dart'; @@ -27,11 +26,9 @@ void main() { setUp(() { fs = MemoryFileSystem.test(style: FileSystemStyle.posix); homeDirectory = fs.directory('home'); - logFile = fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kLogFileName, - )); + logFile = homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kLogFileName); // Create the initialization analytics instance to onboard the tool final initializationAnalytics = Analytics.fake( diff --git a/pkgs/unified_analytics/test/survey_handler_test.dart b/pkgs/unified_analytics/test/survey_handler_test.dart index 1ba6fa48..3d8c8dd6 100644 --- a/pkgs/unified_analytics/test/survey_handler_test.dart +++ b/pkgs/unified_analytics/test/survey_handler_test.dart @@ -7,7 +7,6 @@ import 'dart:convert'; import 'package:clock/clock.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; -import 'package:path/path.dart' as p; import 'package:test/test.dart'; import 'package:unified_analytics/src/constants.dart'; @@ -274,20 +273,16 @@ void main() { // Write the client ID file out so that we don't get // a randomly assigned id for this test generated within // the analytics constructor - clientIdFile = fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kClientIdFileName, - )); + clientIdFile = homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kClientIdFileName); clientIdFile.createSync(recursive: true); clientIdFile.writeAsStringSync('string1'); // Assign the json file that will hold the persisted surveys - dismissedSurveyFile = fs.file(p.join( - homeDirectory.path, - kDartToolDirectoryName, - kDismissedSurveyFileName, - )); + dismissedSurveyFile = homeDirectory + .childDirectory(kDartToolDirectoryName) + .childFile(kDismissedSurveyFileName); // Setup two tools to be onboarded with this package so // that we can simulate two different tools interacting with