App-Licensecheck

 view release on metacpan or  search on metacpan

TODO.md  view on Meta::CPAN

# 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 )