Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Bring over latest files from flutter/packages #46

Merged
merged 4 commits into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 44 additions & 19 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,82 +1,107 @@
### 3.1.0
## NEXT

* Updates minimum supported SDK version to Flutter 3.16/Dart 3.2.
* Transfers the package source from https://github.com/flutter/packages
to https://github.com/dart-lang/platform.

## 3.1.4

* Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.
* Fixes new lint warnings.

## 3.1.3

* Adds example app.

## 3.1.2

* Adds pub topics to package metadata.
* Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.

## 3.1.1

* Transfers the package source from https://github.com/google/platform.dart to
https://github.com/flutter/packages.

## 3.1.0

* Removed `Platform.packageRoot`, which was already marked deprecated, and which
didn't work in Dart 2.

### 3.0.2
## 3.0.2

* Added `FakePlatform.copyWith` function.

### 3.0.1
## 3.0.1

* Added string constants for each of the supported platforms for use in switch
statements.

### 3.0.0
## 3.0.0

* First stable null safe release.

### 3.0.0-nullsafety.4
## 3.0.0-nullsafety.4

* Update supported SDK range.

### 3.0.0-nullsafety.3
## 3.0.0-nullsafety.3

* Update supported SDK range.

### 3.0.0-nullsafety.2
## 3.0.0-nullsafety.2

* Update supported SDK range.

### 3.0.0-nullsafety.1
## 3.0.0-nullsafety.1

* Migrate package to null-safe dart.

### 2.2.1
## 2.2.1

* Add `operatingSystemVersion`

### 2.2.0
## 2.2.0

* Declare compatibility with Dart 2 stable
* Update dependency on `package:test` to 1.0

### 2.1.2
## 2.1.2

* Relax sdk upper bound constraint to '<2.0.0' to allow 'edge' dart sdk use.

### 2.1.1
## 2.1.1

* Bumped maximum Dart SDK version to 2.0.0-dev.infinity

### 2.1.0
## 2.1.0

* Added `localeName`
* Bumped minimum Dart SDK version to 1.24.0-dev.0.0

### 2.0.0
## 2.0.0

* Added `stdinSupportsAnsi` and `stdinSupportsAnsi`
* Removed `ansiSupported`

### 1.1.1
## 1.1.1

* Updated `LocalPlatform` to use new `dart.io` API for ansi color support queries
* Bumped minimum Dart SDK version to 1.23.0-dev.10.0

### 1.1.0
## 1.1.0

* Added `ansiSupported`
* Bumped minimum Dart SDK version to 1.23.0-dev.9.0

#### 1.0.2
## 1.0.2

* Minor doc updates

#### 1.0.1
## 1.0.1

* Added const constructors for `Platform` and `LocalPlatform`

#### 1.0.0
## 1.0.0

* Initial version
7 changes: 0 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
[![Pub](https://img.shields.io/pub/v/platform.svg)](https://pub.dartlang.org/packages/platform)

## Moved

The source for the `platform` package has moved to [the `flutter/packages`
repository](https://github.com/flutter/packages/tree/main/packages/platform).

-----

A generic platform abstraction for Dart.

Like `dart:io`, `package:platform` supplies a rich, Dart-idiomatic API for
Expand Down
3 changes: 3 additions & 0 deletions example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# https://dart.dev/guides/libraries/private-files
# Created by `dart pub`
.dart_tool/
2 changes: 2 additions & 0 deletions example/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
A small example application demonstrating how to use the platform information
APIs in `package:platform`.
30 changes: 30 additions & 0 deletions example/analysis_options.yaml
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not familiar with dart-lang-owned package conventions; is it normal to have a custom analysis options for the example directory?

Copy link

Choose a reason for hiding this comment

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

I don't know, but I'd expect examples to use lints/recommended, to be written for users using those lints, and the package itself to use dart_flutter_team_lints (or whatever it's called, I can never remember, or seem to find it when I need it).

Could probably use the same lints everywhere, since the dart/flutter team lints includes everything in recommended, and probably won't add many extra restrictions for traditional example code.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Wasn't strictly needed before, but now example and package use different lints, so now it's needed

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.

include: package:lints/recommended.yaml

# Uncomment the following section to specify additional rules.

# linter:
# rules:
# - camel_case_types

# analyzer:
# exclude:
# - path/to/excluded/files/**

# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints

# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options
15 changes: 15 additions & 0 deletions example/bin/example.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:platform/platform.dart';

void main(List<String> arguments) {
const LocalPlatform platform = LocalPlatform();

print('Operating System: ${platform.operatingSystem}.');
print('Local Hostname: ${platform.localHostname}.');
print('Number of Processors: ${platform.numberOfProcessors}.');
print('Path Separator: ${platform.pathSeparator}.');
print('Locale Name: ${platform.localeName}.');
print('Stdin Supports ANSI: ${platform.stdinSupportsAnsi}.');
print('Stdout Supports ANSI: ${platform.stdoutSupportsAnsi}.');
print('Executable Arguments: ${platform.executableArguments}.');
print('Dart Version: ${platform.version}.');
}
14 changes: 14 additions & 0 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: example
description: Demonstrates how to use the platform api.
version: 1.0.0
publish_to: none

environment:
sdk: ^3.0.0
Copy link
Contributor

Choose a reason for hiding this comment

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

This should probably use 3.2 like the package itself.

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


dependencies:
platform:
path: ../

dev_dependencies:
lints: ^4.0.0
8 changes: 4 additions & 4 deletions lib/platform.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/// Core interfaces & classes.
// Core interfaces & classes.
export 'src/interface/local_platform.dart';
export 'src/interface/platform.dart';
export 'src/testing/fake_platform.dart';
6 changes: 3 additions & 3 deletions lib/src/interface/local_platform.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io' as io show Platform, stdin, stdout;

Expand Down
6 changes: 3 additions & 3 deletions lib/src/interface/platform.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:convert';

Expand Down
43 changes: 23 additions & 20 deletions lib/src/testing/fake_platform.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:convert';

Expand All @@ -12,7 +12,7 @@ class FakePlatform extends Platform {
///
/// Unspecified properties will *not* be assigned default values (they will
/// remain `null`). If an unset non-null value is read, a [StateError] will
/// be thrown instead of returnin `null`.
/// be thrown instead of returning `null`.
FakePlatform({
int? numberOfProcessors,
String? pathSeparator,
Expand Down Expand Up @@ -69,23 +69,26 @@ class FakePlatform extends Platform {
/// [json] must be a JSON string that matches the encoding produced by
/// [toJson].
factory FakePlatform.fromJson(String json) {
Map<String, dynamic> map = JsonDecoder().convert(json);
final Map<String, dynamic> map =
const JsonDecoder().convert(json) as Map<String, dynamic>;
return FakePlatform(
numberOfProcessors: map['numberOfProcessors'],
pathSeparator: map['pathSeparator'],
operatingSystem: map['operatingSystem'],
operatingSystemVersion: map['operatingSystemVersion'],
localHostname: map['localHostname'],
environment: map['environment'].cast<String, String>(),
executable: map['executable'],
resolvedExecutable: map['resolvedExecutable'],
script: Uri.parse(map['script']),
executableArguments: map['executableArguments'].cast<String>(),
packageConfig: map['packageConfig'],
version: map['version'],
stdinSupportsAnsi: map['stdinSupportsAnsi'],
stdoutSupportsAnsi: map['stdoutSupportsAnsi'],
localeName: map['localeName'],
numberOfProcessors: map['numberOfProcessors'] as int?,
pathSeparator: map['pathSeparator'] as String?,
operatingSystem: map['operatingSystem'] as String?,
operatingSystemVersion: map['operatingSystemVersion'] as String?,
localHostname: map['localHostname'] as String?,
environment:
(map['environment'] as Map<Object?, Object?>).cast<String, String>(),
executable: map['executable'] as String?,
resolvedExecutable: map['resolvedExecutable'] as String?,
script: Uri.parse(map['script'] as String),
executableArguments:
(map['executableArguments'] as List<Object?>).cast<String>(),
packageConfig: map['packageConfig'] as String?,
version: map['version'] as String?,
stdinSupportsAnsi: map['stdinSupportsAnsi'] as bool?,
stdoutSupportsAnsi: map['stdoutSupportsAnsi'] as bool?,
localeName: map['localeName'] as String?,
);
}

Expand Down
15 changes: 10 additions & 5 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
name: platform
version: 3.1.0
description: A pluggable, mockable platform abstraction for Dart.
homepage: https://github.com/google/platform.dart
description: A pluggable, mockable platform information abstraction for Dart.
repository: https://github.com/dart-lang/platform
issue_tracker: https://github.com/dart-lang/platform/issues
version: 3.1.4

environment:
sdk: ">=2.12.0 <3.0.0"
sdk: ^3.2.0

dev_dependencies:
lints: ^1.0.1
lints: ^4.0.0
Copy link

@lrhn lrhn Jun 10, 2024

Choose a reason for hiding this comment

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

Use dart_flutter_team_lints?
(Not that I prefer them, but they exist now.)

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

test: ^1.16.8

topics:
- information
- platform
16 changes: 8 additions & 8 deletions test/fake_platform_test.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io' as io;

Expand Down Expand Up @@ -30,7 +30,7 @@ void main() {

setUp(() {
fake = FakePlatform();
local = LocalPlatform();
local = const LocalPlatform();
});

group('fromPlatform', () {
Expand All @@ -43,7 +43,7 @@ void main() {
});

test('convertsPropertiesToMutable', () {
String key = fake.environment.keys.first;
final String key = fake.environment.keys.first;

expect(fake.environment[key], local.environment[key]);
fake.environment[key] = 'FAKE';
Expand All @@ -62,7 +62,7 @@ void main() {
});

test('overrides a value, but leaves others intact', () {
FakePlatform copy = fake.copyWith(
final FakePlatform copy = fake.copyWith(
numberOfProcessors: -1,
);
expect(copy.numberOfProcessors, equals(-1));
Expand Down Expand Up @@ -96,7 +96,7 @@ void main() {
stdoutSupportsAnsi: true,
localeName: 'local',
);
FakePlatform copy = fake.copyWith(
final FakePlatform copy = fake.copyWith(
numberOfProcessors: local.numberOfProcessors,
pathSeparator: local.pathSeparator,
operatingSystem: local.operatingSystem,
Expand All @@ -119,7 +119,7 @@ void main() {

group('json', () {
test('fromJson', () {
String json = io.File('test/platform.json').readAsStringSync();
final String json = io.File('test/platform.json').readAsStringSync();
fake = FakePlatform.fromJson(json);
expect(fake.numberOfProcessors, 8);
expect(fake.pathSeparator, '/');
Expand Down