{"id":32300881,"url":"https://github.com/marianz-bonfire/pubspec_checker","last_synced_at":"2026-05-14T21:04:10.900Z","repository":{"id":269062877,"uuid":"906204823","full_name":"marianz-bonfire/pubspec_checker","owner":"marianz-bonfire","description":"A simple Flutter package that checks the compatibility of all dependencies in the pubspec.yaml file for specified platforms. This package reads the pubspec.yaml file, fetches the package information from pub.dev, and verifies the platforms (like Android, iOS, web, macOS, Windows, and Linux) against the provided list.","archived":false,"fork":false,"pushed_at":"2025-12-29T16:10:58.000Z","size":1790,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-17T03:24:59.348Z","etag":null,"topics":["checker","dart","flutter","package","pubspec","tarsier"],"latest_commit_sha":null,"homepage":"https://tarsier-marianz.blogspot.com/","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marianz-bonfire.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-20T11:37:31.000Z","updated_at":"2025-12-29T16:11:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"0a8427b3-b398-42d9-83e9-88eb794c2bd6","html_url":"https://github.com/marianz-bonfire/pubspec_checker","commit_stats":null,"previous_names":["marianz-bonfire/pubspec_checker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marianz-bonfire/pubspec_checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marianz-bonfire%2Fpubspec_checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marianz-bonfire%2Fpubspec_checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marianz-bonfire%2Fpubspec_checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marianz-bonfire%2Fpubspec_checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marianz-bonfire","download_url":"https://codeload.github.com/marianz-bonfire/pubspec_checker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marianz-bonfire%2Fpubspec_checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33043249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checker","dart","flutter","package","pubspec","tarsier"],"created_at":"2025-10-23T05:29:29.748Z","updated_at":"2026-05-14T21:04:10.894Z","avatar_url":"https://github.com/marianz-bonfire.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pub.dev/packages/pubspec_checker\"\u003e\n    \u003cimg height=\"260\" src=\"https://raw.githubusercontent.com/marianz-bonfire/tarsier_assets/master/package-assets/pubspec_checker/logo.png\"\u003e\n  \u003c/a\u003e\n  \u003ch1 align=\"center\"\u003ePubspec Checker\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pub.dev/packages/pubspec_checker\"\u003e\n    \u003cimg src=\"https://img.shields.io/pub/v/pubspec_checker?label=pub.dev\u0026labelColor=333940\u0026logo=dart\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pub.dev/packages/pubspec_checker/score\"\u003e\n    \u003cimg src=\"https://img.shields.io/pub/points/pubspec_checker?color=2E8B57\u0026label=pub%20points\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/marianz-bonfire/pubspec_checker/actions/workflows/dart.yml\"\u003e\n    \u003cimg src=\"https://github.com/marianz-bonfire/pubspec_checker/actions/workflows/dart.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pub.dev/packages/pubspec_checker/publisher\"\u003e\n    \u003cimg src=\"https://img.shields.io/pub/publisher/pubspec_checker.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://tarsier-marianz.blogspot.com\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=website\u0026message=tarsier-marianz\u0026labelColor=135d34\u0026logo=blogger\u0026logoColor=white\u0026color=fd3a13\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pub.dev/documentation/pubspec_checker/latest/\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"https://github.com/marianz-bonfire/pubspec_checker/issues\"\u003eIssues\u003c/a\u003e •\n  \u003ca href=\"https://github.com/marianz-bonfire/pubspec_checker/tree/master/example\"\u003eExample\u003c/a\u003e •\n  \u003ca href=\"https://github.com/marianz-bonfire/pubspec_checker/blob/master/LICENSE\"\u003eLicense\u003c/a\u003e •\n  \u003ca href=\"https://pub.dev/packages/pubspec_checker\"\u003ePub.dev\u003c/a\u003e\n\u003c/p\u003e\n\nA simple Dart/Flutter package that checks the compatibility of all dependencies in the `pubspec.yaml` file for specified platforms. This package reads the `pubspec.yaml` file, fetches the package information from `pub.dev`, and verifies the platforms (like `Android`, `iOS`, `web`, `macOS`, `Windows`, and `Linux`) against the provided list.\n\u003c!-- \nThis README describes the package. If you publish this package to pub.dev,\nthis README's contents appear on the landing page for your package.\n\nFor information about how to write a good package README, see the guide for\n[writing package pages](https://dart.dev/guides/libraries/writing-package-pages). \n\nFor general information about developing packages, see the Dart guide for\n[creating packages](https://dart.dev/guides/libraries/create-library-packages)\nand the Flutter guide for\n[developing packages and plugins](https://flutter.dev/developing-packages). \n--\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/marianz-bonfire/tarsier_assets/master/package-assets/pubspec_checker/screenshots/demo-cli.png\"\u003e\n\n\n## ✨ Features\n\n### 🎯 **Platform Compatibility Checking**\n- Check package compatibility across **6 platforms**: Android, iOS, Web, Windows, macOS, Linux\n- Specify platforms via command-line or programmatic API\n- Multi-platform support with a single command\n\n### 📊 **Detailed Reporting \u0026 Visualization**\n- **Tabular format** for clean, structured output that's easy to read and compare\n- **Color-coded status indicators** for instant visual recognition\n- **Optional package links** to pub.dev for quick reference\n- **Summary statistics** showing support counts per platform\n- **Unknown package detection** with clear warnings\n\n### 🎨 **Flexible Display Options**\n- **Icon mode**: Use emoji icons (✅ ❌ ❔) for visual clarity\n- **ASCII mode**: Use plain characters (`Y`, `N`, `?`) for terminal compatibility\n- **Link display**: Show/hide package links to pub.dev\n- **Progress indicators**: Real-time progress during compatibility checks\n\n### ⚡ **Easy Integration**\n- **Command-line interface**: Quick one-liner checks\n- **Programmatic API**: Integrate into your own tools and workflows\n- **Automatic pubspec detection**: Automatically finds your `pubspec.yaml`\n- **Multiple fallback strategies**: Uses 4 different methods to gather platform data\n\n## 🚀 Quick Start\n\n### Installation\n\nAdd `pubspec_checker` to your Flutter or Dart project:\n\n```yaml\ndev_dependencies:\n  pubspec_checker: ^1.3.0\n```\nRun this command:\n```bash\nflutter pub get\n# or\ndart pub get\n```\n\n## 📒 Basic CLI Usage\n\nCommand-Line Interface (CLI)\nTo use the package, run the following command:\n\n```bash\ndart run pubspec_checker \u003cplatforms\u003e [options]\n```\n_Parameters_\n- `\u003cplatforms\u003e`: The platforms to check compatibility for. Supported values are:\n    - android\n    - ios\n    - web\n    - windows\n    - linux\n    - macos\n\n_Options_\n- `-s` or `--show`: Display the platform status indicator as icon (e.g. Supported : ✅ ❌ ❔, otherwise the default `Y`, `N`, `?`).\n- `-l` or `--links`: Display the links to the package details.\n\n## 📚 Examples\nCheck compatibility for `all` platforms with links and show icons:\n\n```bash\ndart run pubspec_checker -s -l\n//or\ndart run pubspec_checker all -s -l\n```\n\nCheck compatibility for `android` and `ios`:\n\n```bash\ndart run pubspec_checker android ios -s -l\n```\nCheck compatibility for `android` and `ios` and shows package link:\n```bash\ndart run pubspec_checker android ios -l\n```\nCheck compatibility for `web`:\n```bash\ndart run pubspec_checker web\ndart run pubspec_checker:web #alternative command with colon\n```\n\nExample output showing status platform as icon (`-s`):\n```bash\ndart run pubspec_checker -l -s\n```\n\u003cimg src=\"https://raw.githubusercontent.com/marianz-bonfire/tarsier_assets/master/package-assets/pubspec_checker/screenshots/demo-cli-icon.png\"\u003e\n\nExample output showing status platform by default (_without_ `-s`):\n```bash\ndart run pubspec_checker -l\n```\n\n\u003cimg src=\"https://raw.githubusercontent.com/marianz-bonfire/tarsier_assets/master/package-assets/pubspec_checker/screenshots/demo-cli-default.png\"\u003e\n\nNOTE: 📝 By default we use ASCII characters (e.g., `Y`, `N`, `?`) on platform status indicator to ensure proper alignment across different terminals such: (_Command Prompt, PowerShell, Linux Terminal, Git Bash_, etc). Emojis like ✅, ❌, and ❔ can sometimes have variable widths depending on the terminal or font.\n\n## 💡 Additional information\n\nIf you want to use the package programmatically, here’s how you can do it:\n\n```dart\nimport 'package:pubspec_checker/pubspec_checker.dart';\n\nvoid main() async {\n  // Initialize with target platforms\n  final platformChecker = PlatformChecker([\n    PackagePlatform.ios,\n    PackagePlatform.android\n  ]);\n\n  // Read dependencies from pubspec.yaml\n  final pubspecReader = PubspecReader();\n  final dependencies = pubspecReader.getDependencies();\n\n  // Check compatibility\n  final results = await platformChecker.checkDependenciesCompatibility(dependencies);\n\n  // Process results\n  for (final entry in results.entries) {\n    final packageName = entry.key;\n    final compatibility = entry.value;\n\n    print('Package: $packageName');\n    print('Version: ${compatibility.version}');\n    print('Supported Platforms: ${compatibility.platforms.map((p) =\u003e p.platformName).join(', ')}');\n    print('Link: ${compatibility.link}');\n  }\n}\n```\nIf you want simply check the list of packages not the dependencies.\n```dart\nimport 'package:pubspec_checker/pubspec_checker.dart';\n\nvoid main() async {\n  // Initialize with target platforms\n  final platformChecker = PlatformChecker([\n    PackagePlatform.ios,\n    PackagePlatform.android\n  ]);\n  \n  // Check compatibility of the packages\n  final results = await platformChecker.checkPackagesCompatibility([\n    'provider',\n    'http',\n    'flutter_bloc',\n  ]);\n\n  // Process results\n  for (final entry in results.entries) {\n    final packageName = entry.key;\n    final compatibility = entry.value;\n\n    print('Package: $packageName');\n    print('Version: ${compatibility.version}');\n    print('Supported Platforms: ${compatibility.platforms.map((p) =\u003e p.platformName).join(', ')}');\n    print('Link: ${compatibility.link}');\n  }\n}\n```\n *Notes*\n\n- Platforms are provided using the `PackagePlatform` enum for compile-time safety.\n- Public APIs are documented with examples, while internal implementations are hidden from API docs.\n- When using the package programmatically, add it under `dependencies`, not `dev_dependencies`.\n\n\nSample Output:\n\n\u003cimg src=\"https://raw.githubusercontent.com/marianz-bonfire/tarsier_assets/master/package-assets/pubspec_checker/screenshots/demo-example.png\"\u003e\n\n## 🔧 How It Works\n### Platform Detection Strategies\n`pubspec_checker` uses multiple methods to determine platform compatibility:\n1. Primary: Direct pubspec metadata from pub.dev API\n2. Fallback 1: Package score tags (platform:xxx tags)\n3. Fallback 2: Search-based platform detection\n4. Fallback 3: Web scraping of package pages\n\nThis multi-layered approach ensures maximum accuracy even when platform data is incomplete.\n\n### Architecture\n- [`PubspecReader`](https://pub.dev/documentation/pubspec_checker/latest/pubspec_checker/PubspecReader-class.html): Parses pubspec.yaml and extracts dependencies\n- [`PlatformChecker`](https://pub.dev/documentation/pubspec_checker/latest/pubspec_checker/PlatformChecker-class.html): Queries pub.dev APIs and analyzes platform support\n- [`PackageChecker`](https://pub.dev/documentation/pubspec_checker/latest/pubspec_checker/PackageChecker-class.html): High-level API with formatted console output\n- [`PackageCompatibility`](https://pub.dev/documentation/pubspec_checker/latest/pubspec_checker/PackageCompatibility-class.html): Data model for compatibility results\n\n## 🐞 Contributing\nContributions are welcome! If you encounter any issues or have feature requests, please open an issue or submit a pull request on [GitHub](https://github.com/marianz-bonfire/pubspec_checker).\n\n## 🎖️ License\nThis package is licensed under the [MIT License](https://mit-license.org/).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarianz-bonfire%2Fpubspec_checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarianz-bonfire%2Fpubspec_checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarianz-bonfire%2Fpubspec_checker/lists"}