Softpedia
 


LINUX CATEGORIES:



GLOBAL PAGES >>
NEWS ARCHIVE >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Linux Kernel 3.9.6 / 3....
  • Linux Kernel 3.0.82 LTS...
  • KDE Software Compilatio...
  • PulseAudio 4.0
  • Wireshark 1.10.0
  • NetworkManager 0.9.8.2
  • LibreOffice 3.6.6 / 4.0...
  • SystemRescueCd 3.7.0
  • Linux Kernel 3.10 RC6
  • Ubuntu Tweak 0.8.5
  • Home > Linux > Programming > Perl Modules

    Module::Husbandry 0.002

    Download button

    No screenshots available
    Downloads: 383  View global page NEW!  Tell us about an update
    User Rating:
    Rated by:
    Good (3.7/5)
    11 user(s)
    Developer:

    License / Price:

    Last Updated:

    Category:
    Barrie Slaymaker | More programs
    Perl Artistic License / FREE
    April 17th, 2008, 13:37 GMT
    ROOT / Programming / Perl Modules

     Read user reviews (0)  Refer to a friend  Subscribe

    Module::Husbandry description

    Module::Husbandry is a Perl module to build and manage modules in a Perl module distribution.

    Module::Husbandry is a Perl module to build and manage modules in a Perl module distribution.

    FUNCTION

    parse_module_specs

    my @specs = parse_module_specs @ARGV, %options;

    Parses a module specification, one of:

    Foo
    Foo::Bar
    lib/Foo.pm
    lib/Foo/Bar.pm
    lib/Foo/Bar.pod

    and returns the package name (Foo::Bar) and the path to the file (lib/Foo/Bar.pm) for each parameter in a hash. The result HASHes look like:

    {
    Filename => "lib/Foo/Bar.pm",
    Package => "Foo::Bar",
    Spec => $spec, ## What was passed in
    };

    Any name containing characters other that A-Z, 0-9, :, or ' are assumed to be filenames. Filenames should begin with lib/ (or LIB/ on Win32) or will be warned about.

    The only option provided is:

    as_dir Set this to 1 to suppress the add "/" instead of ".pm"
    the Filename when a module name is converted to a filename.
    Does not affect anything when a filename is parsed. This
    is used by mvpm's recurse option.

    parse_bin_specs

    my @specs = parse_bin_specs @ARGV, %options;

    Parses specifications for a "bin" program, like:

    foo
    bin/foo

    and returns the program name (foo) and the path to the file (bin/foo) for each parameter in a hash. The result HASHes look like:

    {
    Filename => "bin/foo",
    Program => "foo",
    Spec => $spec, ## What was passed in
    };

    If a spec has no directory separators, "bin/" is prepended. If a spec has directory separator, no "bin/" is prepended.
    parse_dist_specs

    Takes a list of distributions specs (Foo::Bar, Foo-Bar) and returns a hash like

    {
    Package => "Foo::Bar",
    Spec => $spec,
    }

    reconfigure_dist

    Runs perl Makefile.PL using the current Perl.

    TODO: Support Module::Build methodology.
    add_to_MANIFEST

    add_to_MANIFEST "foo", "bar";

    Adds one or more files to the MANIFEST.
    rm_from_MANIFEST

    rm_from_MANIFEST "foo", "bar";

    Remove one or more files to the MANIFEST.
    install_file

    install_file $from_file_hash, $to_file_hash, %macros;

    Locates the approptiate file in the .newpm directory and copies it, instantiating any needed.

    Reads and tags.

    Meta tags
    =========
    chmod the resulting file (numeric only)

    Any unrecognized meta or macro tags are ignored with a warning.

    Adds file to MANIFEST.

    TODO: adapt to Module::Build's manifesting procedures.
    templates_for

    my @from_files = templates_for @to_files;

    Given a list of files to write to, find the appropriate source files.
    test_scripts_for

    my @test_scripts = test_scripts_for @modules;

    Returns test scripts for any .pm and .pl file in @modules:

    {
    Filename => "t/Foo.t",
    }

    where @modules is an array of HASHes returned by parse_module_specs.
    skeleton_files

    my %skel_map = skeleton_files $target_dir;

    Returns a list of from/to files to install from the skeleton directory.
    cppm

    cppm $from, $to, %options

    Copies a file in a distribution and a related test suite (if found).

    TODO: Don't rewrite changelogs. Not sure how best to recognize them; this could be an option for the mythical .newpmrc.

    TODO: Make the filename substitutions patterns case insensitive on Win32?
    newpm

    Create new modules in ./lib/... and, if it's a .pm module, a test suite in ./t/...

    Does not build the make file.
    newpmbin

    Create new script files in bin/. Does not add a test script (since there's no safe way to test an arbitrary program).
    newpmdist

    Create a new distribution in . and populate it from the skeleton files. newpm() a new module.
    mvpm

    mvpm $from, $to, %options

    Changes the name of a file in a distribution and all occurences of the file's name (and, if applicable, package name) in it and in all other files.

    A backup of any files changed is placed in .newpm/bak_0000 (where 0000 increments each time).

    TODO: some kind of locking so simultaneous mvpms don't happen to choose the same backup directory name.

    TODO: Don't rewrite changelogs. Not sure how best to recognize them; this could be an option for the mythical .newpmrc.

    TODO: Make the filename substitutions patterns case insensitive on Win32?
    rmpm

    Removes any modules and tests named after a package (or module) name.

    Warns about any other files that refer to the doomed package.

    A backup is made in the backup directory (.mvpm/... for now, will change)..

    TODO: Allow a site-specific rm command to be used, like 'trash', so this command may be better integrated with a user's working environment. This will wait until we restructure the directories.
    usage
    parse_cli

    my ( $options, @params ) = parse_options @ARGV, %spec;

    Reads the command line and parses out the options and other parameters. Options may be intermixed with parameters.

    Options -h|-?|--help and -- do the normal things always.

    -n|--describe print out what *would* happen, but do nothing.

    Limitations:

    ASSumes a dir tree and file naming conventions like:

    Foo-Bar/
    Makefile.PL
    ...
    lib/Foo/Bar.pm
    t/Foo-Bar.pm

    This probably won't work out all that well for XS distributions, not sure how they work. Let me know and we'll see if we can add it :)

    Not tested on Win32.

    Does not know about Module::Build.

    Does not use anything like a .newpmrc file.

    Product's homepage

    Requirements:

    · Perl

      


    TAGS:

    build modules | module distribution | Perl module | Perl | module | builder

    Go to top

    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM