Revision history for App-lcpan 0.66 2016-02-07 (PERLANCAR) - [Bugfix] file should be indexed by (cpanid,name) not (name) because PAUSE allows two authors to have the same filename. - Bump database schema version to v7 due to the above fix. - [Incompatible change] deps: Change default --include-core to 1. - copy_*, extract_*: Check that release file exists. 0.65 2016-01-23 (PERLANCAR) - [Bugfix] deps: Dependency to unindexed modules was not shown. - Use authors/00whois.xml (produced by e.g. OrePAN) when authors/01mailrc.txt.gz does not exist. - [doc] Update mini CPAN current size. - mods: Complete namespace. 0.64 2016-01-16 (PERLANCAR) - Adjust so we can be used like a daemon. - [Bugfix] mod2dist: Used wrong database result field. - [Bugfix] releases: Used wrong result field. - [doc] Update information about mini CPAN current size. 0.63 2016-01-06 (PERLANCAR) - [Bugfix] Propagate error from _update_index(). - Add safety code to bail out when indexer_version is newer than current version, remove old code. 0.62 2016-01-04 (PERLANCAR) - mods: Allow specifying multiple namespaces. 0.61 2015-12-31 (PERLANCAR) - No functional changes. - [build] Rebuild with updated PWR:DumpPerinciCmdLineScript (0.04) which lets us avoid extraneous subcommands from being included in the bin/lcpan's POD. 0.60 2015-12-25 (PERLANCAR) (It's *this* Christmas!) - Replace --exact-match with the more general --query-type to be able to search certain fields only or exact match on certain fields only. - deps: Add option --flatten when doing recursive. - [internal] Replace 'format_options' result metadata with the simpler 'table.fields'. - Bump prereq version Log::Any::IfLOG to 0.07. 0.59 2015-12-07 (PERLANCAR) - No functional changes. - [Build] [Bugfix] Don't include subcommand modules outside of our dist when building with dzil, because we'll document and depend on extraneous subcommands/modules [CT]. 0.58 2015-12-07 (PERLANCAR) - mods-by-rdep-count: [ux] Allow lowercase names in author argument. - [Incompatible change] Rename subcommands author{rdeps,mods,rels,dists} to author-{rdeps,mods,rels,dists} to be more consistent. It's recommended that you first uninstall the old version (e.g. using 'pm-uninstall' or 'pmuninst') before installing this version, to clean up old names. 0.57 2015-11-22 (PERLANCAR) - No functional changes. - [doc] Don't show large results in example. 0.56 2015-11-21 (PERLANCAR) - stats: Add num_authors_with_releases. - [dist] Bump version of IPC::System::Options to fixed 0.22 version. 0.55 2015-10-20 (PERLANCAR) - deps: Add --with-xs-or-pp to show dependency is XS/PP. - Warn about modules that don't have dist ID. - Avoid perl undef warning. 0.54 2015-10-09 (PERLANCAR) - Add convenience commands: copy-rel & copy-mod. 0.53 2015-09-17 (PERLANCAR) - No functional changes. - Adjust to Complete::Util 0.36 (complete_file() split to Complete-File). 0.52 2015-09-09 (PERLANCAR) - No functional changes. - [dist] Remove prereq: Complete because it is not directly used. 0.51 2015-09-03 (PERLANCAR) - No functional changes. - [dist] Move spec prereqs from RuntimeRequires to DevelopRecommends to reduce deps but still allow indicating spec requirement. 0.50 2015-08-11 (PERLANCAR) - No functional changes. - Shave about 6ms of startup time (56ms -> 50ms) when doing completion, by delay-loading POSIX and avoiding experimental (+Carp) in App::lcpan as well as in Perinci::Sub::Complete and Complete::Util. 0.49 2015-08-11 (PERLANCAR) - No functional changes. - Shave about 8ms of startup time (64ms -> 56ms) when doing completion, by replacing Log::Any with Log::Any::IfLOG. 0.48 2015-08-11 (PERLANCAR) - Save about 10ms of startup time (74ms -> 64ms) when doing completion, by replacing Module:List with PERLANCAR::Module::List. - [Bugfix] Avoid SQL error when there are nulls in IN(...) clause. 0.47 2015-07-27 (PERLANCAR) - [ux] Show local/remote size which exceeds size. 0.46 2015-07-02 (PERLANCAR) - [ux] Add alias -l for --detail (like in ls). - [ux] namespaces: Remove alias -l for --level, because we want -l to mean --detail in all subcommands (like in ls) 0.45 2015-07-02 (PERLANCAR) - Add subcommand: reset. - update: Add options --skip-index-file (-F), --force-update-index. - Don't assume an empty indexer_version in meta table to mean reindex from scratch. It might be that the current version fails/crashes in the middle while indexing. 0.44 2015-07-02 (PERLANCAR) - [Bugfix] Fix deleting old file records (forgot to $sth->execute, forgot to delete records in file table). 0.43 2015-07-01 (PERLANCAR) - modst, dists, authors, rels, namespaces: Change multiple query to have AND logic instead of OR, and provide --or switch. 0.42 2015-06-28 (PERLANCAR) - Add subcommand 'rels' as alias for 'releases' (for consistency, the term 'rels' and not 'release'/'releases' is used in all other subcommand names). - mods, dists, authors, rels, namespaces: Accept multiple queries, add option --exact-match. This way, you can use the subcommand to list several things of certain names. - [Bugfix] Fix namespace matching (previously --namespace Win32 would also match Win32API). 0.41 2015-06-17 (PERLANCAR) - [Bugfix] authorrdeps: Fix completion for --user-author-{is,isnt}. - [Bugfix] modules: Forgot to give default SQL order. - Add FAQ item about seeing SQL queries. 0.40 2015-06-16 (PERLANCAR) - Add subcommand 'mods' as alias for 'modules' (for consistency, the term 'mods' and not 'module'/'modules' is used in all other subcommand names). - mods: Add option --sort which allows sorting by name, author, as well as rdeps (number of reverse dependencies). This means we can show "popular" modules first. 0.39 2015-06-13 (PERLANCAR) - Add subcommands for convenience: extract-mod, extract-rel. 0.38 2015-06-10 (PERLANCAR) - [Bugfix] Update referenced function name in lcpanm. 0.37 2015-06-09 (PERLANCAR) - [dist] Add missing prereq to PerlIO::gzip. - [Bugfix] Fix way to use Parse::CPAN::Meta. - Replace YAML::XS with core module Parse::CPAN::Meta (thanks ether). 0.36 2015-05-20 (PERLANCAR) - [Bugfix] Search for META.json, META.yml, Build.PL, Makefile.PL at the top-level or second-level only, not anywhere. - Switch from YAML::Syck to YAML::XS (YAML::Syck can't parse things like '--- # YAML1.0' header). 0.35 2015-05-19 (PERLANCAR) - dists: Add filtering options --has-{makefilepl,buildpl,metayml,metajson}. 0.34 2015-05-15 (PERLANCAR) - mod2dist: Accept multiple modules. - authorrdeps: Add completion for --user-author{,--isnt}. 0.33 2015-04-29 (PERLANCAR) - [Bugfix] (update schema) Mixed up 'has_child' and 'num_sep' columns when filling the 'namespace' table. So we need to empty and re-fill the table. - [Bugfix] update: Forgot to update 'namespace' table when adding a new module. 0.32 2015-04-29 (PERLANCAR) - Bump database schema version to v6 (add 'namespace' table). This is mostly to help speed up tab completion query when completing module name. - Add subcommand: namespaces. - modules: Add filter option --namespace. 0.31 2015-04-28 (PERLANCAR) - [Bugfix] Don't update dist by name because name is not unique, update by id instead. 0.30 2015-04-26 (PERLANCAR) - This version will require full reindex. - [Bugfix] When indexing, used wrong dist_id (from last_insert_id()) when record already exists. - [Bugfix] deps, rdeps: Result ordering fixes. 0.29 2015-04-24 (PERLANCAR) - [Bugfix] Fix missing dependencies/reverse dependencies information when a depended module is updated, this is because we used INSERT OR REPLACE {dist,module} which changes module/dist IDs. We should've used INSERT or UPDATE. From this new version on we record the module version which did the reindexing. We are doing a full reindex when indexer <= 0.28. 0.28 2015-04-24 (PERLANCAR) - No functional changes. - Avoid perl undef warning. 0.27 2015-04-23 (PERLANCAR) - rdeps: Implement recursive (-l/-R). - deps: Ordering when in -l/-R mode. - deps: Optimize query (avoid retrieving module ID's twice when in recursive mode). - [Bugfix] deps: Forget to clone data causing deps --phase & --level defaults being reset to 'ALL'. 0.26 2015-04-22 (PERLANCAR) - Add phase & rel arguments to rdeps & authorrdeps. - Add test: xt/author/sql_schema_versioned.t. 0.25 2015-04-22 (PERLANCAR) - [Bugfix] Fix SQL error when creating schema. 0.24 2015-04-21 (PERLANCAR) - deps: Accept multiple modules, speed up query. 0.23 2015-04-16 (PERLANCAR) - Add subcommand: dists-by-dep-count. - Add subcommand: authors-by-rdep-count. - Remove unnecessary (and unhelpful) package metadata in command modules, module abstract will be retrieved from handle_cmd's metadata anyway. - mods-by-rdep-count: Add filter options --phase & --rel. 0.22 2015-04-15 (PERLANCAR) - rdeps: Accept multiple modules. - New subcommand: authorrdeps. If you are a CPAN author, this subcommand makes it easy to list all distributions that use one of your modules. To filter only distributions created by others, just pass --user-author-isnt YOURCPANID. - New subcommand: mods-by-rdep-count. 0.21 2015-04-15 (PERLANCAR) - [Removed feature] Remove separate 'update-files' and 'update-index' subcommands, to simplify configuration. Merge options to 'update' subcommand. - update: Add filter options --include-author, --exclude-author. 0.20 2015-04-15 (PERLANCAR) - Bump database schema version to v5 (add column is_latest to dist table to ease queries). - Allow --nolatest in addition to --latest. - Add --latest filter option to 'modules' and 'mods-from-same-dist' subcommands. 0.19 2015-04-15 (PERLANCAR) - Replace Module::CoreList->is_core with Module::CoreList::More->is_still_core. 0.18 2015-04-15 (PERLANCAR) - mods-from-same-dist: Accept multiple modules. 0.17 2015-04-14 (PERLANCAR) - Add command: mods-from-same-dist. - stats: Add raw_mirror_mtime & raw_last_index_time to ease scripts calculating freshness. 0.16 2015-04-12 (PERLANCAR) - [ux] Rename functions in App::lcpan to match CLI subcommand names (e.g. list_local_cpan_authors -> authors) to make codebase easier to use/understand. - Various minor tweaks and fixes. 0.15 2015-04-11 (PERLANCAR) - Bump database schema version to v4. This update mainly adds column 'cpanid' to tables 'module' and 'dist' to speed up queries. This version requires a full reindex. - [Bugfix] Dependency information were sometimes lost when we update mirror and old files information were removed, because we stored dependency information on a per-dist basis instead of per-file. - Enable authors-by-{mod,rel}-count because the queries are now fast. - Add command: authors-by-dist-count. 0.14 2015-04-07 (PERLANCAR) - Make subcommands pluggable (App::lcpan::Cmd::*) to prepare for adding more/custom subcommands by plugins. - Add subcommands authors-by-mod-count & authors-by-rel-count, though they are currently disabled by default because the queries are slow (100+ secs). - [Optimization] update: don't update index if mirrored files do not change (done by checking the mtime of modules/02packages.details.txt.gz). - Add completion for --index-name. - [dist] Rebuild with newer Pod::Weaver::Plugin::Rinci for producing Configuration POD section. 0.13 2015-02-26 (PERLANCAR) - No functional changes. - Forget to tag 'index_name' arg as common arg. 0.12 2015-02-25 (PERLANCAR) - [ux] Avoid creating index database automatically when we are just reading the index (ro mode). - Allow customizing db filename via --index-name. 0.11 2015-02-24 (PERLANCAR) - To help chase bugs in updating index, now keeps old indexes (by default 7, customize via --num-backups). 0.10 2015-02-06 (PERLANCAR) - Mark common args with 'common' tag. - Add convenient option --all (equivalent to: --phase ALL --rel ALL). 0.09 2015-01-20 (PERLANCAR) - Skip erroneous version in dep information, instead of exploding. - rdeps: Allow multiple --author & --author-isnt options. 0.08 2015-01-14 (PERLANCAR) - More tweaks and minor bug fixes. - Add more examples. 0.07 2015-01-14 (PERLANCAR) - Various small tweaks. 0.06 2015-01-14 (PERLANCAR) [REMOVED FEATURES] - Remove the feature that extracts dist metadata from Makefile.PL and Build.PL because this is unsafe (we are running untrusted code). Note that MetaCPAN also does not extract dist metadata from Makefile.PL and Build.PL for the same reason. Also, it has been pointed out to me that the current way is not proper ("idiomatic"). The more proper way is to let perl run Makefile.PL and Build.PL to generate Makefile/Build as well as MYMETA.{json,yml}. Then we read MYMETA. Perhaps this feature will come back as an optional plugin later, should there be any demand. BTW, Dist::Requires does this kind of functionality. - Also remove the feature that detects *.meta files, because these files are not present in a mini CPAN mirror. [ENHANCEMENTS] - New subcommands: releases, mod2dist, mod2rel, dist2rel, distmods, authormods, authordists, authorrels. [DATABASE CHANGES] - Bump database schema version to v3: add columns has_{metayml,metajson,makefilepl,buildpl} to 'file' table. Add 'version_numified' to 'dist' and 'module' tables. - Clear data for reindexing. 0.05 2015-01-14 (PERLANCAR) - No functional changes. - Rebuild to update TODO.md (d'oh). 0.04 2015-01-14 (PERLANCAR) - Use Perinci::CmdLine::Util::Config to get lcpan configuration without running the binary. - Rebuild to update TODO.md. 0.03 2015-01-14 (PERLANCAR) - Bump database schema version to v2. - The indexer now tries to extract dist metadata from Makefile.PL or Build.PL in addition to from META.{json,yml}. This allows for more thorough indexing of dependencies information (as well as distribution name & abstract), as a lot of older releases do not include CPAN META files. But this also means actually executing the Makefile.PL & Build.PL scripts, which might have some side effects. - Add script: lcpanm. - Rename 'rev-deps' subcommand to 'rdeps'. - rdeps: Add options --author and --author-isnt to be able to filter by author. This allows you to, for example, see if a module is used by other authors instead of just herself. 0.02 2015-01-13 (PERLANCAR) - Rename module/dist from CPAN::Local to App::lcpan (PAUSE conflict, CPAN::Local already exists on CPAN). 0.01 2015-01-13 (PERLANCAR) - First version.