App-Licensecheck
view release on metacpan or search on metacpan
# pending tasks and loose ideas
## flexible patterns
* add option to generate either minimal or maximal pattern
* minimal: shortest coverage decisive of one or more objects.
* distinct: shortest coverage to disambiguate from unrelated objects
and objects it depends on,
and large enough for dependent objects to disambiguate from it.
* successive: minimal or distinct + surplus up until next ambiguation point
* maximal: full coverage
## file regimes
Allow setting options only for a subset of processed files -
a "regime" of files.
E.g. a subproject (all files below some dir)
or scattered by pattern (like "autotools files except below foo/").
* introduce setting regime
* parse option --licensecheck-regime
* parse environment variable LICENSECHECK_REGIME
* parse environment variable LICENSECHECK_DEFAULTS
## git integration
* Maybe implement all this as a git module?
## environment defaults
* implement environment variable LICENSECHECK_DEFAULTS
## scripts
* implement licensefind
* parse options and arguments like GNU find (or busybox find?)
* fail on any option supported by find but unsupported here
* parse new options --licensecheck-*
and setting=value pairs in env vars LICENSECHECK LICENSECHECK_FIND
* by default output filenames (i.e. all with any license by default)
* implement licensegrep
* parse options and arguments like grep (or busybox/git grep?)
* fail on any option supported by diff but unsupported here
* parse new options --licensecheck-*
and setting=value pairs in env vars LICENSECHECK LICENSECHECK_GREP
* parse settings from env variables LICENSECHECK LICENSECHECK_GREP
(treated as fallback for --licensecheck-* options without prefix)
* by default output verbatim text, with filename prefixed if multiple
* maybe implement licensegreple
* like licensegrep, but with syntax matching greple
<https://metacpan.org/pod/greple>
* implement licensediff
* parse options and arguments like diff (or git diff?)
* fail on any option supported by diff but unsupported here
* parse new options --licensecheck-*
and setting=value pairs in env vars LICENSECHECK LICENSECHECK_DIFF
* by default output unified diff
* if file B omitted, compute from file A
(with minimal changes by default, or optionally optimized)
* implement licensesort
* parse options and arguments like sort
* fail on any option supported by sort but unsupported here
* parse new options --licensecheck-*
and setting=value pairs in env vars LICENSECHECK LICENSECHECK_DIFF
+ file1-format - debian spdx (default: guess from passed file1)
+ paths-debian - with format=debian try debian/copyright:copyright)
+ merge-copyright-years
+ merge-copyright-holders
+ merge-license-expressions
+ merge-license-parts
+ sort-copyright-years
+ sort-copyright-holders
+ sort-copyright-sections
+ sort-license-expressions
+ sort-license-parts
+ sort-license-sections
* if file B omitted, compute from file A + licensegrep
* if file A omitted, try default file for used format, or fail
(i.e. with format=debian try debian/copyright:copyright)
## relaxed copyright reporting
* support omitting copyright holders when permited by license
## media-type handling
* Implement media-type handling:
* --accept
comma-separated list of media ranges to process
default: */*
set to "text/*" to skip binary files,
or set to "application/postscript;q=0.2;mbx=1024, text/*"
to process plaintext and small Postscript files
takes a string of same syntax as value part of HTTP Accept Header
(see <HTTP::Negotiate#ACCEPT-HEADERS>)
* map MIME types to comment styles
* Regexp::Common::comment
* Padre::Comment
* Syntax::Highlight::Engine::Kate
* licenseutils
( run in 1.203 second using v1.01-cache-2.11-cpan-99c4e6809bf )