App-Licensecheck

 view release on metacpan or  search on metacpan

TODO.md  view on Meta::CPAN

    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
    * maybe use HTTP::Negotiate to resolve decoders and parsers to apply


## decode by media-type

  * Implement decoding options:
    * --decode-html
      regular expression for paths to parse as html.
      Pass empty regexp to only enable support (see --decode-magic).
    * --decode-xml
      regular expression for paths to parse as xml.
      Pass empty regexp to only enable support (see --decode-magic).
      * test detection of both metadata and comments
        e.g. in Darktable 3.6.0 appdata in-file
    * --decode-svg
      regular expression for paths to parse as svg.
      Pass empty regexp to only enable support (see --decode-magic).
      * test detection of both RDF metadata and comments
    * --decode-exif
      regular expression for paths to extract EXIF and other metadata from
      (see exiftool and Image::ExifTool).
      Pass empty regexp to only enable support (see --decode-magic).
    * --decode-skip



( run in 1.835 second using v1.01-cache-2.11-cpan-6aa56a78535 )