Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/awncorp/notice
Breaking-Change Acknowledgement Enforcement
https://github.com/awncorp/notice
perl perl5
Last synced: about 1 month ago
JSON representation
Breaking-Change Acknowledgement Enforcement
- Host: GitHub
- URL: https://github.com/awncorp/notice
- Owner: awncorp
- License: other
- Created: 2020-11-21T14:20:20.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2020-11-21T16:00:07.000Z (about 4 years ago)
- Last Synced: 2024-11-08T16:09:45.261Z (3 months ago)
- Topics: perl, perl5
- Language: Perl
- Homepage: https://metacpan.org/release/notice
- Size: 17.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: CHANGES
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
NAME
notice - Breaking-Change Acknowledgement
ABSTRACT
Breaking-Change Acknowledgement Enforcement
SYNOPSIS
package Example;
BEGIN {
$ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;
}
use notice unstable => {
space => 'Example',
until => '2020-09-01',
notes => 'See https://example.com/latest/release-notes',
};
1;DESCRIPTION
This package provides a mechanism for enforcing breaking-change
acknowledgements. When configured under a module namespace, a fatal
error (notice) will be thrown prompting the operator to acknowledge the
notice (unless the notice has already been ackowledged). Notices are
acknowledged by setting a predetermined environment variable. The
environment variable always takes the form of
ACK_NOTICE_CLASS_NOTICENAME. The fatal error (notice) is thrown
whenever, the encapsulating package is "used", the notice criteria is
met, and the environment variable is missing. Multiple notices can be
configured and each can have a time-based expiry aftewhich the notice
will never be triggered.FUNCTIONS
This package implements the following functions:
check
check(ClassName $name, Any %args) : Maybe[Tuple[Str, Str, Str, Str, Str | ArrayRef]]
The check method returns truthy or falsy based upon whether the notice
criteria is met. When met, this function returns details about the
trigger engaged.check example #1
# given: synopsis
delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};
# notice: triggered (not acknowledged)
notice::check('Example', (
unstable => {
until => '9999-09-01',
notes => 'see changelog',
},
));check example #2
# given: synopsis
delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};
# notice: not triggered (notice expired)
notice::check('Example', (
unstable => {
until => '2000-09-01',
notes => 'see changelog',
},
));check example #3
# given: synopsis
delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};
# notice: triggered (not ackowledged)
notice::check('Example::Agent', (
unstable => {
space => 'Example',
until => '9999-09-01',
notes => 'see changelog',
},
));check example #4
# given: synopsis
$ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;
# notice: triggered (refactor not ackowledged)
notice::check('Example::Agent', (
refactor => {
space => 'Example',
until => '9999-09-01',
notes => 'see refactor',
},
unstable => {
space => 'Example',
until => '9999-09-01',
notes => 'see changelog',
},
));check example #5
# given: synopsis
$ENV{ACK_NOTICE_EXAMPLE_REFACTOR} = 1;
$ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;
# notice: not triggered (unstable and refactor ackowledged)
notice::check('Example::Agent', (
refactor => {
space => 'Example',
until => '9999-09-01',
notes => 'see changelog',
},
unstable => {
space => 'Example',
until => '9999-09-01',
notes => 'see changelog',
},
));check example #6
# given: synopsis
$ENV{ACK_NOTICE_EXAMPLE_UNSTABLE} = 1;
# notice: triggered (wrong namespace ackowledged)
notice::check('Example::Agent', (
unstable => {
until => '9999-09-01',
notes => 'see changelog',
},
));check example #7
# given: synopsis
$ENV{ACK_NOTICE_EXAMPLE_AGENT_UNSTABLE} = 1;
# notice: not triggered (notice ackowledged)
notice::check('Example::Agent', (
unstable => {
until => '9999-09-01',
notes => 'see changelog',
},
));check example #8
# given: synopsis
delete $ENV{ACK_NOTICE_EXAMPLE_UNSTABLE};
# notice: triggered (not ackowledged)
notice::check('Example', (
unstable => {
until => '9999-09-01',
notes => [
'see release notes for details',
'see https://example.com/latest/release-notes',
],
},
));AUTHOR
Al Newkirk, [email protected]
LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under
the terms of the The Apache License, Version 2.0, as elucidated in the
"license file"
.PROJECT
Wiki
Project
Initiatives
Milestones
Contributing
Issues