leont / app-modulebuildtiny Goto Github PK
View Code? Open in Web Editor NEWA standalone authoring tool for Module::Build::Tiny
License: Other
A standalone authoring tool for Module::Build::Tiny
License: Other
NAME App::ModuleBuildTiny - A standalone authoring tool for Module::Build::Tiny DESCRIPTION App::ModuleBuildTiny contains the implementation of the mbtiny tool. FUNCTIONS * modulebuildtiny($action, @arguments) This function runs a modulebuildtiny command. It expects at least one argument: the action. It may receive additional ARGV style options dependent on the command. The actions are documented in the mbtiny documentation. SEE ALSO Similar programs * Dist::Zilla An extremely powerful but somewhat heavy authoring tool. * Minilla A more minimalistic than Dist::Zilla but still somewhat customizable authoring tool. AUTHOR Leon Timmermans <[email protected]> COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Leon Timmermans. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
While doing gugod/Hijk#26 for the CPAN PRC, the META.*
files generated by mbtiny generate
write bad output for Ævar's name, for example in META.yml
:
author:
- 'Kang-min Liu <[email protected]>'
- "�\x86var Arnfj�¶r�° Bjarmason <[email protected]>"
- 'Borislav Nikolov <[email protected]>'
- 'Damian Gryski <[email protected]>'
I've confirmed that both the source 'Hijk.pm' is in Unicode:
$ file lib/Hijk.pm
lib/Hijk.pm: Perl5 module source, UTF-8 Unicode text
and it has =encoding utf8
in its pod.
Full context in gugod/Hijk#26 (review)
mbtiny dist
mbtiny regenerate
->
MANIFEST
now contains Some-Dist-Name-0.001.tar.gz
This is typically undesirable, and should either
Currently there is no support for minting distributions. This would need to support:
And maybe README too (#10)
Currently it is hard-coded to use the perl license, this is suboptimal. It should probably be detected from the source much like [LicenseFromModule] does. It should probably also be able to generate a LICENSE file.
requires 'Term::ANSIColor';
on test => sub {
requires 'Term::ANSIColor' => '2.01';
};
perl = 5.8.9
PERL5_CPANPLUS_IS_RUNNING = 24999
PERL5_CPANPLUS_IS_VERSION = 0.9156
Module Name Have Want
Log::Contextual 0.007000 0
+ Term::ANSIColor 1.12 0
Test::Differences 0.64 0
Test::More 1.001014 0.89
:(
Term::ANSIColor version 2.01 required--this is only version 1.12 at t/examples/clan.t line 6.
BEGIN failed--compilation aborted at t/examples/clan.t line 6.
Please support reading the meta data from the .pod file, not just the .pm file. Maybe have a --pod option to request this.
mkdir /tmp/mbt-test
cd /tmp/mbt-test
mbtiny dist
# Can't call method "pod" on an undefined value at /home/kent/perl5/perlbrew/perls/5.24.0-RC5/lib/site_perl/5.24.0/App/ModuleBuildTiny.pm line 110.
I think the right thing to do here would be to assert that $filename
on line 106 is expected to exist,
as nothing really works without that, and subsequent failures in said file generate fatal errors anyway.
As discussed on IRC, it would be handy to be able to specify other META information which could be merged into the META.* files. While Module::Metadata can detect some things, others, like repository/website information or no_index
would be too hard to heuristically extract in any reasonable way.
We have discussed using an external file. I originally proposed a perl file which could be do-loaded and then merged. @Leont has stated a preference for json, though the meta-spec version would have to be specified as a key. @dagolden has stated that CPAN::Meta::Merge could default to the most current version of CPAN::Meta, which would ease that somewhat, though the user should be encouraged to specify the version to avoid breakage later.
scan_prereqs_cpanfile should be scan-prereqs-cpanfile. perl-reversion is an example script which is no longer indexed and uses the version rules of Perl::Version which are not quite the same as version.pm, perl-bump-version or perl-rewrite-version could be referenced instead.
We currently don't have an overview of how to contribute to this project, even if it should be mostly obvious.
I did:
mbtiny regerate
mbtiny test
Got: Use of uninitialized value in numeric lt (<) at App/ModuleBuildTiny.pm line 57
After looking at the source, I deleted META.json, then ran "mbtiny test" and got:
Creating new 'Build' script for 'xxxxxx'
'.' is not recognized as an internal or external command,
operable program or batch file.
Tried deleting Build.PL and rerunning, again.
Got: Can't open perl script "Build.PL": No such file or directory
Here's a reduced set of a Changes file I think should parse, but completely doesn't, and the error is not exactly enlightening.
0.048
- Asdf
mbtiny dist
# Changes appears to be empty
Version 2 of the CPAN Meta Spec specifies the license fields as a list and includes an example with more than 1 license. Currently, this module only allows 1 license.
The current documentation about how to use this tool effectively is somewhat minimal.
mbtiny mint Test::MBTinyTest --dirname=test-mbtinytest
results in
Cannot parse $VERSION from lib/test/mbtinytest.pm at <snip>.perlbrew/libs/perl-5.30.3@doseme/lib/perl5/App/ModuleBuildTiny/Dist.pm line 238.
Trying again:
cd test-mbtinytest
mbtiny regenerate
Again, you get:
Cannot parse $VERSION from lib/test/mbtinytest.pm at <snip>.perlbrew/libs/perl-5.30.3@doseme/lib/perl5/App/ModuleBuildTiny/Dist.pm line 238
cat lib/test/mbtinytest.pm
Version is there. Error persists even if set to 0.001, which is supposed to be the default.
package Test::MBTinyTest;
use strict;
use warnings;
our $VERSION = '0.000';
1;
__END__
=pod
<snip>
Currently ambt doesn't have any end-user tests beyond compilation tests
$ mbtiny regenerate
Can't call method "stringify" on an undefined value at /usr/local/lib64/perl5/5.22.1/App/ModuleBuildTiny.pm line 112.
I suspect
my $version = $data->version($data->name)->stringify;
Where ->version returns 'undef' to be the culprit.
A good error would be
"Cannot parse \$VERSION from $filename"
The upload command requires a .pause
file, but mbtiny configure
doesn't set this up.
See kentnl/CPAN-Testers-TailLog#3
I have the shortcut:
lib/Foo.pm
README.pod -> lib/Foo.pm
In order to convince Github to render Foo.pm as the README
This is apparently a viable hack on Dzil because Dzil converts symlinks to their contents.
But AMBT seems to preserve symlinks as-is.
curl -sLk https://cpan.metacpan.org/authors/id/K/KE/KENTNL/CPAN-Testers-TailLog-0.001001.tar.gz | tar -zvt | grep -i READ
lrwxr-xr-x kent/kent 0 2016-08-22 23:29 CPAN-Testers-TailLog-0.001001/README.pod -> lib/CPAN/Testers/TailLog.pm
Should we also handle README files?
I'm running mbtiny dist
on https://github.com/monsieurp/Gentoo-App-Pram.git and receive error:
Changes appears to be empty
Can't call method "fulltext" on an undefined value at C:/strawberry514/perl/site/lib/App/ModuleBuildTiny.pm line 51.
It's a useful feature in dzil listdeps
, we should steal it.
Given the fix in #30 , the resulting tarball ends up with no file.
readlink README.pod
# lib/Acme/Beamerang/ArgParser.pm
mbtiny dist && tar -tf Acme-Beamerang-ArgParser-0.001000.tar.gz | grep -i READ
# <no output>
mbtiny distdir && ls -la Acme-Beamerang-ArgParser-0.001000/ | grep -i READ
# <no output>
Currently release status is always set to stable
Currently no provides field is added to the metadata, possibly this should be added.
It's a useful feature I contributed to dzil listdeps, I should copy it.
Currently mbtiny doesn't support an xt/
directory for non-enduser tests, this may be useful.
When I do this:
mbtint mint Some::Dist
I see this:
What is the author's name? Curtis "Ovid" Poe
What is the author's email? [email protected]
What license do you want to use? [Perl_5]
It would be nice if it then prompted you to allow it to write out a config file with this information so that you no longer had to re-enter this information.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.