Move custom analysis options into sub-packages (#4603)

When the legacy analysis options were bulk-added to the repository to
allow transitioning incrementally to the Flutter analysis options, they
were added to top-level plugin groups. This makes it harder to migrate
incrementally, and also means that when we add a new sub-package (e.g, a
web or desktop implementation) it's automatically using the legacy
options.

This moves all the legacy option files into each individual package, and
updates the allow list for the tool accordingly, so that migration can
be done package by package.
diff --git a/packages/camera/analysis_options.yaml b/packages/camera/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/camera/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/camera/camera/analysis_options.yaml b/packages/camera/camera/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/camera/camera/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/camera/camera_platform_interface/analysis_options.yaml b/packages/camera/camera_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/camera/camera_platform_interface/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/camera/camera_web/analysis_options.yaml b/packages/camera/camera_web/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/camera/camera_web/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/camera/camera_web/pubspec.yaml b/packages/camera/camera_web/pubspec.yaml
index f37500a..ce09f7e 100644
--- a/packages/camera/camera_web/pubspec.yaml
+++ b/packages/camera/camera_web/pubspec.yaml
@@ -22,9 +22,9 @@
     sdk: flutter
   flutter_web_plugins:
     sdk: flutter
+  pedantic: ^1.11.1
   stream_transform: ^2.0.0
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.11.1
diff --git a/packages/google_maps_flutter/analysis_options.yaml b/packages/google_maps_flutter/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/google_maps_flutter/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/google_maps_flutter/google_maps_flutter/analysis_options.yaml b/packages/google_maps_flutter/google_maps_flutter/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_maps_flutter/google_maps_flutter/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/analysis_options.yaml b/packages/google_maps_flutter/google_maps_flutter_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/analysis_options.yaml b/packages/google_maps_flutter/google_maps_flutter_web/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_maps_flutter/google_maps_flutter_web/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
index 1f5fe4d..080726e 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
@@ -24,13 +24,13 @@
   google_maps_flutter_platform_interface: ^2.1.2
   google_maps: ^5.2.0
   meta: ^1.3.0
+  pedantic: ^1.10.0
   sanitize_html: ^2.0.0
   stream_transform: ^2.0.0
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0
 
 # The example deliberately includes limited-use secrets.
 false_secrets:
diff --git a/packages/google_sign_in/analysis_options.yaml b/packages/google_sign_in/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/google_sign_in/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/google_sign_in/google_sign_in/analysis_options.yaml b/packages/google_sign_in/google_sign_in/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_sign_in/google_sign_in/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_sign_in/google_sign_in_platform_interface/analysis_options.yaml b/packages/google_sign_in/google_sign_in_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_sign_in/google_sign_in_platform_interface/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_sign_in/google_sign_in_web/analysis_options.yaml b/packages/google_sign_in/google_sign_in_web/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/google_sign_in/google_sign_in_web/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/google_sign_in/google_sign_in_web/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
index 723dbe9..7388ea1 100644
--- a/packages/google_sign_in/google_sign_in_web/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
@@ -25,8 +25,8 @@
   google_sign_in_platform_interface: ^2.0.0
   js: ^0.6.3
   meta: ^1.3.0
+  pedantic: ^1.10.0
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0
diff --git a/packages/image_picker/analysis_options.yaml b/packages/image_picker/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/image_picker/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker/analysis_options.yaml b/packages/image_picker/image_picker/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/image_picker/image_picker/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker_for_web/analysis_options.yaml b/packages/image_picker/image_picker_for_web/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/image_picker/image_picker_for_web/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/image_picker/image_picker_for_web/pubspec.yaml b/packages/image_picker/image_picker_for_web/pubspec.yaml
index d0d9701..a104dce 100644
--- a/packages/image_picker/image_picker_for_web/pubspec.yaml
+++ b/packages/image_picker/image_picker_for_web/pubspec.yaml
@@ -23,8 +23,8 @@
     sdk: flutter
   image_picker_platform_interface: ^2.2.0
   meta: ^1.3.0
+  pedantic: ^1.10.0
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0
diff --git a/packages/image_picker/image_picker_platform_interface/analysis_options.yaml b/packages/image_picker/image_picker_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/image_picker/image_picker_platform_interface/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/analysis_options.yaml b/packages/video_player/analysis_options.yaml
deleted file mode 100644
index cda4f6e..0000000
--- a/packages/video_player/analysis_options.yaml
+++ /dev/null
@@ -1 +0,0 @@
-include: ../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player/analysis_options.yaml b/packages/video_player/video_player/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/video_player/video_player/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player_platform_interface/analysis_options.yaml b/packages/video_player/video_player_platform_interface/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/video_player/video_player_platform_interface/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player_web/analysis_options.yaml b/packages/video_player/video_player_web/analysis_options.yaml
new file mode 100644
index 0000000..5aeb4e7
--- /dev/null
+++ b/packages/video_player/video_player_web/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../../analysis_options_legacy.yaml
diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml
index b401673..ac0754b 100644
--- a/packages/video_player/video_player_web/pubspec.yaml
+++ b/packages/video_player/video_player_web/pubspec.yaml
@@ -22,9 +22,9 @@
   flutter_web_plugins:
     sdk: flutter
   meta: ^1.3.0
+  pedantic: ^1.10.0
   video_player_platform_interface: ^4.2.0
 
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0
diff --git a/script/configs/custom_analysis.yaml b/script/configs/custom_analysis.yaml
index 81bb0f5..e991e5e 100644
--- a/script/configs/custom_analysis.yaml
+++ b/script/configs/custom_analysis.yaml
@@ -4,10 +4,6 @@
 # analysis_options.yaml based on flutter/flutter, rather than the original
 # rules based on pedantic (now at analysis_options_legacy.yaml).
 #
-# DO NOT add new entries to the list, unless it is to push the legacy rules
-# from a top-level package into more specific packages in order to incrementally
-# migrate a federated plugin.
-#
 # DO NOT move or delete this file without updating
 # https://github.com/dart-lang/sdk/blob/master/tools/bots/flutter/analyze_flutter_plugins.sh
 # which references this file from source, but out-of-repo.
@@ -15,11 +11,23 @@
 
 # TODO(ecosystem): Remove everything from this list. See:
 # https://github.com/flutter/flutter/issues/76229
-- camera
-- google_maps_flutter
-- google_sign_in
-- image_picker
-- in_app_purchase
+- camera/camera
+- camera/camera_platform_interface
+- camera/camera_web
+- google_maps_flutter/google_maps_flutter
+- google_maps_flutter/google_maps_flutter_platform_interface
+- google_maps_flutter/google_maps_flutter_web
+- google_sign_in/google_sign_in
+- google_sign_in/google_sign_in_platform_interface
+- google_sign_in/google_sign_in_web
+- image_picker/image_picker
+- image_picker/image_picker_for_web
+- image_picker/image_picker_platform_interface
+- in_app_purchase/in_app_purchase
+- in_app_purchase/in_app_purchase_android
+- in_app_purchase/in_app_purchase_storekit
 - ios_platform_images
 - local_auth
-- video_player
+- video_player/video_player
+- video_player/video_player_platform_interface
+- video_player/video_player_web