{"id":18981417,"url":"https://github.com/awncorp/notice","last_synced_at":"2025-08-02T05:07:51.415Z","repository":{"id":56190374,"uuid":"314828535","full_name":"awncorp/notice","owner":"awncorp","description":"Breaking-Change Acknowledgement Enforcement","archived":false,"fork":false,"pushed_at":"2020-11-21T16:00:07.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-21T09:19:27.488Z","etag":null,"topics":["perl","perl5"],"latest_commit_sha":null,"homepage":"https://metacpan.org/release/notice","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awncorp.png","metadata":{"files":{"readme":"README","changelog":"CHANGES","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-21T14:20:20.000Z","updated_at":"2022-07-24T20:59:42.000Z","dependencies_parsed_at":"2022-08-15T14:20:42.892Z","dependency_job_id":null,"html_url":"https://github.com/awncorp/notice","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/awncorp/notice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awncorp%2Fnotice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awncorp%2Fnotice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awncorp%2Fnotice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awncorp%2Fnotice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awncorp","download_url":"https://codeload.github.com/awncorp/notice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awncorp%2Fnotice/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268338004,"owners_count":24234538,"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-02T02:00:12.353Z","response_time":74,"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","perl5"],"created_at":"2024-11-08T16:09:47.971Z","updated_at":"2025-08-02T05:07:51.369Z","avatar_url":"https://github.com/awncorp.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"NAME\n\n    notice - Breaking-Change Acknowledgement\n\nABSTRACT\n\n    Breaking-Change Acknowledgement Enforcement\n\nSYNOPSIS\n\n      package Example;\n    \n      BEGIN {\n        $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;\n      }\n    \n      use notice unstable =\u003e {\n        space =\u003e 'Example',\n        until =\u003e '2020-09-01',\n        notes =\u003e 'See https://example.com/latest/release-notes',\n      };\n    \n      1;\n\nDESCRIPTION\n\n    This package provides a mechanism for enforcing breaking-change\n    acknowledgements. When configured under a module namespace, a fatal\n    error (notice) will be thrown prompting the operator to acknowledge the\n    notice (unless the notice has already been ackowledged). Notices are\n    acknowledged by setting a predetermined environment variable. The\n    environment variable always takes the form of\n    ACK_NOTICE_CLASS_NOTICENAME. The fatal error (notice) is thrown\n    whenever, the encapsulating package is \"used\", the notice criteria is\n    met, and the environment variable is missing. Multiple notices can be\n    configured and each can have a time-based expiry aftewhich the notice\n    will never be triggered.\n\nFUNCTIONS\n\n    This package implements the following functions:\n\n check\n\n      check(ClassName $name, Any %args) : Maybe[Tuple[Str, Str, Str, Str, Str | ArrayRef]]\n\n    The check method returns truthy or falsy based upon whether the notice\n    criteria is met. When met, this function returns details about the\n    trigger engaged.\n\n    check example #1\n\n        # given: synopsis\n      \n        delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};\n      \n        # notice: triggered (not acknowledged)\n      \n        notice::check('Example', (\n          unstable =\u003e {\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #2\n\n        # given: synopsis\n      \n        delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};\n      \n        # notice: not triggered (notice expired)\n      \n        notice::check('Example', (\n          unstable =\u003e {\n            until =\u003e '2000-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #3\n\n        # given: synopsis\n      \n        delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};\n      \n        # notice: triggered (not ackowledged)\n      \n        notice::check('Example::Agent', (\n          unstable =\u003e {\n            space =\u003e 'Example',\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #4\n\n        # given: synopsis\n      \n        $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;\n      \n        # notice: triggered (refactor not ackowledged)\n      \n        notice::check('Example::Agent', (\n          refactor =\u003e {\n            space =\u003e 'Example',\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see refactor',\n          },\n          unstable =\u003e {\n            space =\u003e 'Example',\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #5\n\n        # given: synopsis\n      \n        $ENV{ACK_NOTICE_EXAMPLE_REFACTOR} = 1;\n        $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;\n      \n        # notice: not triggered (unstable and refactor ackowledged)\n      \n        notice::check('Example::Agent', (\n          refactor =\u003e {\n            space =\u003e 'Example',\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n          unstable =\u003e {\n            space =\u003e 'Example',\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #6\n\n        # given: synopsis\n      \n        $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;\n      \n        # notice: triggered (wrong namespace ackowledged)\n      \n        notice::check('Example::Agent', (\n          unstable =\u003e {\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #7\n\n        # given: synopsis\n      \n        $ENV{ACK_NOTICE_EXAMPLE_AGENT_UNSTABLE} = 1;\n      \n        # notice: not triggered (notice ackowledged)\n      \n        notice::check('Example::Agent', (\n          unstable =\u003e {\n            until =\u003e '9999-09-01',\n            notes =\u003e 'see changelog',\n          },\n        ));\n\n    check example #8\n\n        # given: synopsis\n      \n        delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};\n      \n        # notice: triggered (not ackowledged)\n      \n        notice::check('Example', (\n          unstable =\u003e {\n            until =\u003e '9999-09-01',\n            notes =\u003e [\n              'see release notes for details',\n              'see https://example.com/latest/release-notes',\n            ],\n          },\n        ));\n\nAUTHOR\n\n    Al Newkirk, awncorp@cpan.org\n\nLICENSE\n\n    Copyright (C) 2011-2019, Al Newkirk, et al.\n\n    This is free software; you can redistribute it and/or modify it under\n    the terms of the The Apache License, Version 2.0, as elucidated in the\n    \"license file\"\n    \u003chttps://github.com/iamalnewkirk/notice/blob/master/LICENSE\u003e.\n\nPROJECT\n\n    Wiki \u003chttps://github.com/iamalnewkirk/notice/wiki\u003e\n\n    Project \u003chttps://github.com/iamalnewkirk/notice\u003e\n\n    Initiatives \u003chttps://github.com/iamalnewkirk/notice/projects\u003e\n\n    Milestones \u003chttps://github.com/iamalnewkirk/notice/milestones\u003e\n\n    Contributing\n    \u003chttps://github.com/iamalnewkirk/notice/blob/master/CONTRIBUTE.md\u003e\n\n    Issues \u003chttps://github.com/iamalnewkirk/notice/issues\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawncorp%2Fnotice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawncorp%2Fnotice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawncorp%2Fnotice/lists"}