Skip to content

Commit

Permalink
refactor(package_info_plus)!: two-package federated architecture (#1236)
Browse files Browse the repository at this point in the history
  • Loading branch information
nohli committed Oct 14, 2022
1 parent 1f03d0e commit eccdc58
Show file tree
Hide file tree
Showing 39 changed files with 41 additions and 601 deletions.
Expand Up @@ -13,16 +13,8 @@ dependencies:
path: ../

dependency_overrides:
package_info_plus_linux:
path: ../../package_info_plus_linux
package_info_plus_macos:
path: ../../package_info_plus_macos
package_info_plus_platform_interface:
path: ../../package_info_plus_platform_interface
package_info_plus_web:
path: ../../package_info_plus_web
package_info_plus_windows:
path: ../../package_info_plus_windows

dev_dependencies:
integration_test:
Expand Down
Expand Up @@ -7,6 +7,10 @@ import 'dart:async';
import 'package:flutter/foundation.dart' show visibleForTesting;
import 'package:package_info_plus_platform_interface/package_info_platform_interface.dart';

export 'src/package_info_plus_linux.dart';
export 'src/package_info_plus_windows.dart'
if (dart.library.html) 'src/package_info_plus_web.dart';

/// Application metadata. Provides application bundle information on iOS and
/// application package information on Android.
class PackageInfo {
Expand Down
Expand Up @@ -6,10 +6,10 @@ import 'package:package_info_plus_platform_interface/package_info_platform_inter
import 'package:path/path.dart' as path;

/// The Linux implementation of [PackageInfoPlatform].
class PackageInfoLinux extends PackageInfoPlatform {
class PackageInfoPlusLinuxPlugin extends PackageInfoPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
PackageInfoPlatform.instance = PackageInfoLinux();
PackageInfoPlatform.instance = PackageInfoPlusLinuxPlugin();
}

/// Returns a map with the following keys:
Expand Down
Expand Up @@ -9,15 +9,15 @@ import 'package:package_info_plus_platform_interface/package_info_platform_inter
/// The web implementation of [PackageInfoPlatform].
///
/// This class implements the `package:package_info_plus` functionality for the web.
class PackageInfoPlugin extends PackageInfoPlatform {
class PackageInfoPlusWebPlugin extends PackageInfoPlatform {
final Client? _client;

/// Create plugin with http client.
PackageInfoPlugin([this._client]);
PackageInfoPlusWebPlugin([this._client]);

/// Registers this class as the default instance of [PackageInfoPlatform].
static void registerWith(Registrar registrar) {
PackageInfoPlatform.instance = PackageInfoPlugin();
PackageInfoPlatform.instance = PackageInfoPlusWebPlugin();
}

/// Get version.json full url.
Expand Down
@@ -1,8 +1,8 @@
/// The Windows implementation of `package_info_plus`.
library package_info_plus_windows;

import 'dart:io';
import 'dart:ffi';
import 'dart:io';

import 'package:ffi/ffi.dart';
import 'package:package_info_plus_platform_interface/package_info_data.dart';
Expand All @@ -12,10 +12,10 @@ import 'package:win32/win32.dart';
part 'file_version_info.dart';

/// The Windows implementation of [PackageInfoPlatform].
class PackageInfoWindows extends PackageInfoPlatform {
class PackageInfoPlusWindowsPlugin extends PackageInfoPlatform {
/// Register this dart class as the platform implementation for linux
static void registerWith() {
PackageInfoPlatform.instance = PackageInfoWindows();
PackageInfoPlatform.instance = PackageInfoPlusWindowsPlugin();
}

/// Returns a map with the following keys:
Expand Down
Expand Up @@ -3,10 +3,10 @@
#
Pod::Spec.new do |s|
s.name = 'package_info_plus'
s.version = '0.4.5'
s.version = '0.0.1'
s.summary = 'Flutter Package Info'
s.description = <<-DESC
A new flutter plugin project.
A macOS implementation of the package_info_plus plugin.
DESC
s.homepage = 'https://github.com/fluttercommunity/package_info_plus'
s.license = { :file => '../LICENSE' }
Expand Down
25 changes: 16 additions & 9 deletions packages/package_info_plus/package_info_plus/pubspec.yaml
Expand Up @@ -14,27 +14,34 @@ flutter:
ios:
pluginClass: FLTPackageInfoPlusPlugin
linux:
default_package: package_info_plus_linux
dartPluginClass: PackageInfoPlusLinuxPlugin
macos:
default_package: package_info_plus_macos
pluginClass: FLTPackageInfoPlusPlugin
web:
default_package: package_info_plus_web
pluginClass: PackageInfoPlusWebPlugin
fileName: src/package_info_plus_web.dart
windows:
default_package: package_info_plus_windows
dartPluginClass: PackageInfoPlusWindowsPlugin

dependencies:
ffi: ^2.0.1
flutter:
sdk: flutter
flutter_web_plugins:
sdk: flutter
http: ^0.13.0
meta: ^1.3.0
path: ^1.8.0
package_info_plus_platform_interface: ^2.0.0
package_info_plus_linux: ^2.0.0
package_info_plus_macos: ^2.0.0
package_info_plus_windows: ^3.0.0
package_info_plus_web: ^2.0.0
win32: ">=2.7.0 <4.0.0"

dev_dependencies:
build_runner: ^2.0.3
flutter_lints: ^2.0.1
flutter_test:
sdk: flutter
mockito: ^5.0.7
test: ^1.21.1
flutter_lints: ^2.0.1

environment:
sdk: ">=2.12.0 <3.0.0"
Expand Down
@@ -1,10 +1,10 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:package_info_plus_linux/src/package_info.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:package_info_plus_platform_interface/package_info_platform_interface.dart';

void main() {
test('registered instance', () {
PackageInfoLinux.registerWith();
expect(PackageInfoPlatform.instance, isA<PackageInfoLinux>());
PackageInfoPlusLinuxPlugin.registerWith();
expect(PackageInfoPlatform.instance, isA<PackageInfoPlusLinuxPlugin>());
});
}
@@ -1,5 +1,5 @@
// Mocks generated by Mockito 5.0.14 from annotations
// in package_info_plus_web/test/package_info_plus_web_test.dart.
// in package_info_plus_web/test/package_info_plus_web_test_disabled.dart.
// Do not manually edit this file.

// ignore_for_file: camel_case_types, unnecessary_overrides
Expand Down
@@ -1,10 +1,10 @@
import 'dart:convert';

import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:package_info_plus_web/package_info_plus_web.dart';
import 'package:http/http.dart' as http;
import 'package:package_info_plus/src/package_info_plus_web.dart';

import 'package_info_plus_web_test.mocks.dart';

Expand All @@ -20,12 +20,12 @@ void main() {
'build_signature': '',
};

late PackageInfoPlugin plugin;
late PackageInfoPlusWebPlugin plugin;
late MockClient client;

setUp(() {
client = MockClient();
plugin = PackageInfoPlugin(client);
plugin = PackageInfoPlusWebPlugin(client);
});

group(
Expand Down
@@ -1,10 +1,10 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:package_info_plus/src/package_info_plus_windows.dart';
import 'package:package_info_plus_platform_interface/package_info_platform_interface.dart';
import 'package:package_info_plus_windows/src/package_info_plus_windows.dart';

void main() {
test('registered instance', () {
PackageInfoWindows.registerWith();
expect(PackageInfoPlatform.instance, isA<PackageInfoWindows>());
PackageInfoPlusWindowsPlugin.registerWith();
expect(PackageInfoPlatform.instance, isA<PackageInfoPlusWindowsPlugin>());
});
}
7 changes: 0 additions & 7 deletions packages/package_info_plus/package_info_plus_linux/.gitignore

This file was deleted.

10 changes: 0 additions & 10 deletions packages/package_info_plus/package_info_plus_linux/.metadata

This file was deleted.

36 changes: 0 additions & 36 deletions packages/package_info_plus/package_info_plus_linux/CHANGELOG.md

This file was deleted.

27 changes: 0 additions & 27 deletions packages/package_info_plus/package_info_plus_linux/LICENSE

This file was deleted.

12 changes: 0 additions & 12 deletions packages/package_info_plus/package_info_plus_linux/README.md

This file was deleted.

This file was deleted.

28 changes: 0 additions & 28 deletions packages/package_info_plus/package_info_plus_linux/pubspec.yaml

This file was deleted.

39 changes: 0 additions & 39 deletions packages/package_info_plus/package_info_plus_macos/CHANGELOG.md

This file was deleted.

0 comments on commit eccdc58

Please sign in to comment.