{"id":19640402,"url":"https://github.com/kentnl/cpan-meta-prereqs-diff","last_synced_at":"2025-08-16T05:38:17.835Z","repository":{"id":17975544,"uuid":"20975642","full_name":"kentnl/CPAN-Meta-Prereqs-Diff","owner":"kentnl","description":"Compare dependencies between releases using CPAN Meta","archived":false,"fork":false,"pushed_at":"2017-03-04T09:31:23.000Z","size":163,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T22:44:51.844Z","etag":null,"topics":["perl"],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"the-dagger/lEarnit","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kentnl.png","metadata":{"files":{"readme":"README.mkdn","changelog":"Changes","contributing":"CONTRIBUTING.pod","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-18T19:43:55.000Z","updated_at":"2017-03-04T09:15:37.000Z","dependencies_parsed_at":"2022-08-27T03:07:59.935Z","dependency_job_id":null,"html_url":"https://github.com/kentnl/CPAN-Meta-Prereqs-Diff","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/kentnl/CPAN-Meta-Prereqs-Diff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentnl%2FCPAN-Meta-Prereqs-Diff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentnl%2FCPAN-Meta-Prereqs-Diff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentnl%2FCPAN-Meta-Prereqs-Diff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentnl%2FCPAN-Meta-Prereqs-Diff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kentnl","download_url":"https://codeload.github.com/kentnl/CPAN-Meta-Prereqs-Diff/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentnl%2FCPAN-Meta-Prereqs-Diff/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270672864,"owners_count":24626033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"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":["perl"],"created_at":"2024-11-11T14:05:42.044Z","updated_at":"2025-08-16T05:38:17.809Z","avatar_url":"https://github.com/kentnl.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nCPAN::Meta::Prereqs::Diff - Compare dependencies between releases using CPAN::Meta.\n\n# VERSION\n\nversion 0.001005\n\n# SYNOPSIS\n\n    use CPAN::Meta::Prereqs::Diff;\n\n\n    my $diff = CPAN::Meta::Prereqs::Diff-\u003enew(\n      new_prereqs =\u003e CPAN::Meta-\u003eload_file('Dist-Foo-1.01/META.json')-\u003eeffective_prereqs\n      old_prereqs =\u003e CPAN::Meta-\u003eload_file('Dist-Foo-1.00/META.json')-\u003eeffective_prereqs\n    );\n    my @changes = $diff-\u003ediff(\n      phases =\u003e [qw( runtime build configure test )],\n      types  =\u003e [qw( requires suggests configures conflicts )],\n    );\n\n    ## Here, the examples with printf are not needed because -\u003edescribe exists\n    ## But they're there any way for example reasons.\n\n    for my $dep (@prereqs) {\n      if ( $dep-\u003eis_addition ) {\n        # runtime.requires: + Foo::Bar 0.4\n        printf \"%s.%s : + %s %s\",\n          $dep-\u003ephase, $dep-\u003etype, $dep-\u003emodule, $dep-\u003erequirement;\n        next;\n      }\n      if ( $dep-\u003eis_removal ) {\n        # runtime.requires: - Foo::Bar 0.4\n        printf \"%s.%s : - %s %s\",\n          $dep-\u003ephase, $dep-\u003etype, $dep-\u003emodule, $dep-\u003erequirement;\n        next;\n      }\n      if ( $dep-\u003eis_change ) {\n        if ( $dep-\u003eis_upgrade ) {\n          # runtime.requires: ↑ Foo::Bar 0.4 → 0.5\n          printf \"%s.%s : \\x{2191} %s \\x{2192} %s\",\n            $dep-\u003ephase, $dep-\u003etype, $dep-\u003emodule, $dep-\u003eold_requirement, $dep-\u003enew_requirement;\n          next;\n        }\n        if ( $dep-\u003eis_downgrade ) {\n          # runtime.requires: ↓ Foo::Bar 0.5 → 0.4\n          printf \"%s.%s : \\x{2193} %s %s \\x{2192} %s\",\n            $dep-\u003ephase, $dep-\u003etype, $dep-\u003emodule, $dep-\u003eold_requirement, $dep-\u003enew_requirement;\n          next;\n        }\n        # changes that can't be easily determined upgrades or downgrades\n        # runtime.requires: ~ Foo::Bar \u003e=0.5, \u003c=0.7 → \u003e=0.4, \u003c=0.8\n        printf \"%s.%s : ~ %s %s \\x{2192} %s\",\n          $dep-\u003ephase, $dep-\u003etype, $dep-\u003emodule, $dep-\u003eold_requirement, $dep-\u003enew_requirement;\n        next;\n      }\n    }\n\n# DESCRIPTION\n\nThis module allows relatively straight forward routines for comparing and itemizing\ntwo sets of `CPAN::Meta` prerequisites, plucking out kinds of changes that are interesting.\n\n# METHODS\n\n## `diff`\n\n    my @out = $diff-\u003ediff( %options );\n\nReturns a list of `Objects` that `do` [`CPAN::Meta::Prereqs::Diff::Role::Change`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Role::Change), describing the changes between `old_prereqs` and `new_prereqs`\n\n- [`Addition`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Addition)\n- [`Change`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Change)\n- [`Upgrade`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Upgrade)\n- [`Downgrade`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Downgrade)\n- [`Removal`](https://metacpan.org/pod/CPAN::Meta::Prereqs::Diff::Removal)\n\n### `diff.%options`\n\n#### `diff.options.phases`\n\n    my @out = $diff-\u003ediff(\n      phases =\u003e [ ... ]\n    );\n\n    ArrayRef\n    default         = [qw( configure build runtime test )]\n    valid options   = [qw( configure build runtime test develop )]\n\n#### `diff.options.types`\n\n    my @out = $diff-\u003ediff(\n      types =\u003e [ ... ]\n    );\n\n    ArrayRef\n    default         = [qw( requires recommends suggests conflicts )]\n    valid options   = [qw( requires recommends suggests conflicts )]\n\n# ATTRIBUTES\n\n## `new_prereqs`\n\n    required\n    HashRef | CPAN::Meta::Prereqs | CPAN::Meta\n\n## `old_prereqs`\n\n    required\n    HashRef | CPAN::Meta::Prereqs | CPAN::Meta\n\n# AUTHOR\n\nKent Fredric \u003ckentnl@cpan.org\u003e\n\n# COPYRIGHT AND LICENSE\n\nThis software is copyright (c) 2017 by Kent Fredric \u003ckentfredric@gmail.com\u003e.\n\nThis is free software; you can redistribute it and/or modify it under\nthe same terms as the Perl 5 programming language system itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentnl%2Fcpan-meta-prereqs-diff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkentnl%2Fcpan-meta-prereqs-diff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentnl%2Fcpan-meta-prereqs-diff/lists"}