The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

App::lcpan::Cmd::debian_dist2deb - Show Debian package name/version for a dist

VERSION

This document describes version 0.008 of App::lcpan::Cmd::debian_dist2deb (from Perl distribution App-lcpan-CmdBundle-debian), released on 2021-07-17.

SYNOPSIS

Convert some distribution names to Debian package names (using simple rule of converting dist to lowercase and adding "lib" prefix and "-perl" suffix):

 % cat dists.txt
 HTTP-Tiny
 App-lcpan
 Data-Dmp
 Foo

 % lcpan debian-dist2deb < dists.txt
 +-----------+-------------------+--------------+
 | dist      | deb               | dist_version |
 +-----------+-------------------+--------------+
 | HTTP-Tiny | libhttp-tiny-perl | 0.070        |
 | App-lcpan | libapp-lcpan-perl | 1.014        |
 | Data-Dmp  | libdata-dmp-perl  | 0.22         |
 | Foo       | libfoo-perl       |              |
 +-----------+-------------------+--------------+

Like the above, but also check that Debian package exists in the Debian repository (will show package version if exists, or undef if not exists):

 % lcpan debian-dist2deb --check-exists-on-debian < dists.txt
 +-----------+-------------------+--------------+-------------+
 | dist      | deb               | dist_version | deb_version |
 +-----------+-------------------+--------------+-------------+
 | HTTP-Tiny | libhttp-tiny-perl | 0.070        | 0.070-1     |
 | App-lcpan | libapp-lcpan-perl | 1.014        |             |
 | Data-Dmp  | libdata-dmp-perl  | 0.22         | 0.21-1      |
 | Foo       | libfoo-perl       |              |             |
 +-----------+-------------------+--------------+-------------+

Like the above, but download (and cache) allpackages.txt.gz first to speed up checking if you need to check many Debian packages:

 % lcpan debian-dist2deb --check-exists-on-debian --use-allpackages

Only show dists where the Debian package exists on Debian repo (--exists-on-debian implicitly turns on --check-exists-on-debian):

 % lcpan debian-dist2deb --exists-on-debian --use-allpackages < dists.txt
 +-----------+-------------------+--------------+-------------+
 | dist      | deb               | dist_version | deb_version |
 +-----------+-------------------+--------------+-------------+
 | HTTP-Tiny | libhttp-tiny-perl | 0.070        | 0.070-1     |
 | Data-Dmp  | libdata-dmp-perl  | 0.22         | 0.21-1      |
 +-----------+-------------------+--------------+-------------+

Reverse the filter (only show dists which do not have Debian packages):

 % lcpan debian-dist2deb --no-exists-on-debian --use-allpackages < dists.txt
 +-----------+-------------------+--------------+-------------+
 | dist      | deb               | dist_version | deb_version |
 +-----------+-------------------+--------------+-------------+
 | App-lcpan | libapp-lcpan-perl | 1.014        |             |
 | Foo       | libfoo-perl       |              |             |
 +-----------+-------------------+--------------+-------------+

Only show dists where the Debian package exists on Debian repo *and* the Debian package version is less than the dist version:

 % lcpan debian-dist2deb --exists-on-debian --use-allpackages --needs-update < dists.txt
 +-----------+-------------------+--------------+-------------+
 | dist      | deb               | dist_version | deb_version |
 +-----------+-------------------+--------------+-------------+
 | Data-Dmp  | libdata-dmp-perl  | 0.22         | 0.21-1      |
 +-----------+-------------------+--------------+-------------+

DESCRIPTION

This module handles the lcpan subcommand debian-dist2deb.

FUNCTIONS

handle_cmd

Usage:

 handle_cmd(%args) -> [$status_code, $reason, $payload, \%result_meta]

Show Debian package name/version for a dist.

This routine uses the simple rule of: converting the dist name to lowercase then add "lib" prefix and "-perl" suffix. A small percentage of Perl distributions do not follow this rule.

This function is not exported.

Arguments ('*' denotes required arguments):

  • check_exists_on_debian => bool

    Check each distribution if its Debian package exists, using Dist::Util::Debian::dist_has_deb.

  • cpan => dirname

    Location of your local CPAN mirror, e.g. /path/to/cpan.

    Defaults to ~/cpan.

  • dists* => array[perl::distname]

    Distribution names (e.g. Foo-Bar).

  • exists_on_cpan => bool

    Only output debs which exist in database.

  • exists_on_debian => bool

    Only output debs which exist on Debian repository.

  • index_name => filename (default: "index.db")

    Filename of index.

    If index_name is a filename without any path, e.g. index.db then index will be located in the top-level of cpan. If index_name contains a path, e.g. ./index.db or /home/ujang/lcpan.db then the index will be located solely using the index_name.

  • needs_update => bool

    Only output debs which has smaller version than its CPAN counterpart.

  • use_allpackages => bool

    Will be passed to Dist::Util::Debian::dist_has_deb.

    Using this option is faster if you need to check existence for many Debian packages. See Dist::Util::Debian documentation for more details.

  • use_bootstrap => bool (default: 1)

    Whether to use bootstrap database from App-lcpan-Bootstrap.

    If you are indexing your private CPAN-like repository, you want to turn this off.

Returns an enveloped result (an array).

First element ($status_code) is an integer containing HTTP-like status code (200 means OK, 4xx caller error, 5xx function error). Second element ($reason) is a string containing error message, or something like "OK" if status is 200. Third element ($payload) is the actual result, but usually not present when enveloped result is an error response ($status_code is not 2xx). Fourth element (%result_meta) is called result metadata and is optional, a hash that contains extra information, much like how HTTP response headers provide additional metadata.

Return value: (any)

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/App-lcpan-CmdBundle-debian.

SOURCE

Source repository is at https://github.com/perlancar/perl-App-lcpan-CmdBundle-debian.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=App-lcpan-CmdBundle-debian

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021, 2017 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.