Switch to GitHub actions, update analysis options, fix analysis issues. (#35)

This removes Travis configuration and switches to GitHub actions. Also, updated the analysis options to use package:lints/recommended.yaml.
diff --git a/.github/workflows/platform.yml b/.github/workflows/platform.yml
new file mode 100644
index 0000000..dfcf6cd
--- /dev/null
+++ b/.github/workflows/platform.yml
@@ -0,0 +1,38 @@
+name: Process Package
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+  workflow_dispatch:
+
+jobs:
+  correctness:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+      - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+        with:
+          sdk: dev
+      - name: Install dependencies
+        run: dart pub upgrade
+      - name: Verify formatting
+        run: dart format --output=none --set-exit-if-changed .
+      - name: Analyze project source
+        run: dart analyze --fatal-infos
+  test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-latest, windows-latest]
+        sdk: [stable, beta, dev]
+    steps:
+      - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+      - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+        with:
+          sdk: ${{ matrix.sdk }}
+      - name: Install dependencies
+        run: dart pub upgrade
+      - name: Run Tests
+        run: dart test
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 5722c5b..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: dart
-sudo: false
-dart:
-  - dev
-install:
-  - gem install coveralls-lcov
-before_script:
-  - ./dev/setup.sh
-script:
-  - ./dev/travis.sh
-after_success:
-  - (coveralls-lcov coverage/lcov.info)
-cache:
-  directories:
-    - $HOME/.pub-cache
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 1b14e09..8fbd2e4 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,62 +1,6 @@
+include: package:lints/recommended.yaml
+
 analyzer:
-  enable-experiment:
-    - non-nullable
   errors:
     # Allow having TODOs in the code
     todo: ignore
-
-linter:
-  rules:
-    # these rules are documented on and in the same order as
-    # the Dart Lint rules page to make maintenance easier
-    # http://dart-lang.github.io/linter/lints/
-
-    # === error rules ===
-    - avoid_empty_else
-    - comment_references
-    - cancel_subscriptions
-    - close_sinks
-    - control_flow_in_finally
-    - empty_statements
-    - hash_and_equals
-    - invariant_booleans
-    - iterable_contains_unrelated_type
-    - list_remove_unrelated_type
-    - literal_only_boolean_expressions
-    - test_types_in_equals
-    - throw_in_finally
-    - unrelated_type_equality_checks
-    - valid_regexps
-
-    # === style rules ===
-    - always_declare_return_types
-    - always_specify_types
-    - annotate_overrides
-    - avoid_as
-    - avoid_init_to_null
-    - avoid_return_types_on_setters
-    - await_only_futures
-    - camel_case_types
-    - constant_identifier_names
-    - empty_constructor_bodies
-    - implementation_imports
-    - library_names
-    - library_prefixes
-    - non_constant_identifier_names
-    - one_member_abstracts
-    - only_throw_errors
-    - overridden_fields
-    - package_api_docs
-    - package_prefixed_library_names
-    - prefer_is_not_empty
-    - public_member_api_docs
-    - slash_for_doc_comments
-    - sort_constructors_first
-    - sort_unnamed_constructors_first
-    - type_annotate_public_apis
-    - type_init_formals
-    - unawaited_futures
-    - unnecessary_getters_setters
-
-    # === pub rules ===
-    - package_names
diff --git a/dev/setup.sh b/dev/setup.sh
deleted file mode 100755
index 99ec284..0000000
--- a/dev/setup.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-# 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.
-
-pub upgrade
diff --git a/dev/travis.sh b/dev/travis.sh
deleted file mode 100755
index 03d489c..0000000
--- a/dev/travis.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# 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.
-
-# Make sure dartfmt is run on everything
-echo "Checking dart format..."
-needs_dart_format="$(dart format --set-exit-if-changed --output=none lib test dev 2>&1)"
-if [[ $? != 0 ]]; then
-  echo "FAILED"
-  echo "$needs_dart_format"
-  exit 1
-fi
-echo "PASSED"
-
-# Make sure we pass the analyzer
-echo "Checking dartanalyzer..."
-fails_analyzer="$(find lib test dev -name "*.dart" --print0 | xargs -0 dartanalyzer --options analysis_options.yaml 2>&1)"
-if [[ "$fails_analyzer" == *"[error]"* ]]; then
-  echo "FAILED"
-  echo "$fails_analyzer"
-  exit 1
-fi
-echo "PASSED"
-
-# Make sure we could publish if we wanted to.
-echo "Checking publishing..."
-fails_publish="$(pub publish --dry-run 2>&1)"
-if [[ $? != 0 ]]; then
-  echo "FAILED"
-  echo "$fails_publish"
-  exit 1
-fi
-echo "PASSED"
-
-# Fast fail the script on failures.
-set -e
-
-# Run the tests.
-pub run test
diff --git a/lib/src/interface/local_platform.dart b/lib/src/interface/local_platform.dart
index c8573bd..2abd434 100644
--- a/lib/src/interface/local_platform.dart
+++ b/lib/src/interface/local_platform.dart
@@ -42,8 +42,7 @@
   List<String> get executableArguments => io.Platform.executableArguments;
 
   @override
-  String? get packageRoot =>
-      io.Platform.packageRoot; // ignore: deprecated_member_use
+  String? get packageRoot => null;
 
   @override
   String? get packageConfig => io.Platform.packageConfig;
diff --git a/lib/src/interface/platform.dart b/lib/src/interface/platform.dart
index 7f9262f..70a7130 100644
--- a/lib/src/interface/platform.dart
+++ b/lib/src/interface/platform.dart
@@ -159,12 +159,14 @@
   /// list containing the flags passed to the executable.
   List<String> get executableArguments;
 
-  /// The value of the `--package-root` flag passed to the executable
-  /// used to run the script in this isolate.  This is the directory in which
-  /// Dart packages are looked up.
+  /// Deprecated, do not use.
   ///
-  /// If there is no `--package-root` flag, `null` is returned.
-  @deprecated
+  /// This used to be the value of the `--package-root` flag passed to the
+  /// executable used to run the script in this isolate, but is no longer
+  /// supported in Dart 2.
+  ///
+  /// Always returns null.
+  @Deprecated('packages/ directory resolution is not supported in Dart 2.')
   String? get packageRoot;
 
   /// The value of the `--packages` flag passed to the executable
diff --git a/lib/src/testing/fake_platform.dart b/lib/src/testing/fake_platform.dart
index 046dd0a..8fe49c9 100644
--- a/lib/src/testing/fake_platform.dart
+++ b/lib/src/testing/fake_platform.dart
@@ -72,8 +72,8 @@
   /// [json] must be a JSON string that matches the encoding produced by
   /// [toJson].
   factory FakePlatform.fromJson(String json) {
-    Map<String, dynamic> map = new JsonDecoder().convert(json);
-    return new FakePlatform(
+    Map<String, dynamic> map = JsonDecoder().convert(json);
+    return FakePlatform(
       numberOfProcessors: map['numberOfProcessors'],
       pathSeparator: map['pathSeparator'],
       operatingSystem: map['operatingSystem'],
diff --git a/pubspec.yaml b/pubspec.yaml
index efe79e0..123723b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,4 +7,5 @@
   sdk: '>=2.12.0 <3.0.0'
 
 dev_dependencies:
+  lints: ^1.0.1
   test: ^1.16.8
diff --git a/test/fake_platform_test.dart b/test/fake_platform_test.dart
index 3f954b6..2203852 100644
--- a/test/fake_platform_test.dart
+++ b/test/fake_platform_test.dart
@@ -32,13 +32,13 @@
     late LocalPlatform local;
 
     setUp(() {
-      fake = new FakePlatform();
-      local = new LocalPlatform();
+      fake = FakePlatform();
+      local = LocalPlatform();
     });
 
     group('fromPlatform', () {
       setUp(() {
-        fake = new FakePlatform.fromPlatform(local);
+        fake = FakePlatform.fromPlatform(local);
       });
 
       test('copiesAllProperties', () {
@@ -61,7 +61,7 @@
 
     group('copyWith', () {
       setUp(() {
-        fake = new FakePlatform.fromPlatform(local);
+        fake = FakePlatform.fromPlatform(local);
       });
 
       test('overrides a value, but leaves others intact', () {
@@ -85,7 +85,7 @@
         expect(copy.localeName, local.localeName);
       });
       test('can override all values', () {
-        fake = new FakePlatform(
+        fake = FakePlatform(
           numberOfProcessors: 8,
           pathSeparator: ':',
           operatingSystem: 'fake',
@@ -94,7 +94,7 @@
           environment: <String, String>{'PATH': '.'},
           executable: 'executable',
           resolvedExecutable: '/executable',
-          script: new Uri.file('/platform/test/fake_platform_test.dart'),
+          script: Uri.file('/platform/test/fake_platform_test.dart'),
           executableArguments: <String>['scriptarg'],
           version: '0.1.1',
           stdinSupportsAnsi: false,
@@ -125,8 +125,8 @@
 
     group('json', () {
       test('fromJson', () {
-        String json = new io.File('test/platform.json').readAsStringSync();
-        fake = new FakePlatform.fromJson(json);
+        String json = io.File('test/platform.json').readAsStringSync();
+        fake = FakePlatform.fromJson(json);
         expect(fake.numberOfProcessors, 8);
         expect(fake.pathSeparator, '/');
         expect(fake.operatingSystem, 'macos');
@@ -139,7 +139,7 @@
         expect(fake.executable, '/bin/dart');
         expect(fake.resolvedExecutable, '/bin/dart');
         expect(fake.script,
-            new Uri.file('/platform/test/fake_platform_test.dart'));
+            Uri.file('/platform/test/fake_platform_test.dart'));
         expect(fake.executableArguments, <String>['--checked']);
         expect(fake.packageRoot, null);
         expect(fake.packageConfig, null);
@@ -148,7 +148,7 @@
       });
 
       test('fromJsonToJson', () {
-        fake = new FakePlatform.fromJson(local.toJson());
+        fake = FakePlatform.fromJson(local.toJson());
         _expectPlatformsEqual(fake, local);
       });
     });