Bio-MUST-Core
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
bin/import-itol.pl view on Meta::CPAN
#!/usr/bin/env perl
# PODNAME: import-itol.pl
# ABSTRACT: Upload trees and associate metadata files to iTOL
# CONTRIBUTOR: Valerian LUPO <valerian.lupo@doct.uliege.be>
use Modern::Perl '2011';
use autodie;
use Getopt::Euclid qw(:vars);
use Smart::Comments '###';
use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
use File::Basename;
use File::Find::Rule;
use HTTP::Request::Common;
use LWP::UserAgent;
my $upload_url = "https://itol.embl.de/batch_uploader.cgi";
# optionally setup tree id outfile
my $out;
if ($ARGV_tree_id_out) {
open $out, '>', $ARGV_tree_id_out;
say {$out} '# ' . join "\t", qw ( file id );
}
FILE:
for my $infile (@ARGV_infiles) {
### Processing: $infile
# write ZIP archive file
my $zip = Archive::Zip->new();
my ($basename, $dir, $suffix) = fileparse($infile, qr{\.[^.]*}xms);
my $zipfile = "$basename.zip";
my $newname = "$basename.tree"; # iTOL wants a .tree suffix
symlink($infile, $newname); # TODO: improve this
$zip->addFile($newname);
$zip->addFile($_) for File::Find::Rule->file()
->maxdepth(1)->name("$basename\-*.txt")->in($dir);
### Storing ZIP file: $zipfile
unless ( $zip->writeToFileNamed($zipfile) == AZ_OK ) {
warn <<"EOT";
Warning: cannot ZIP archive file; skipping!
EOT
next FILE;
}
# delete the symlink
unlink($newname); # TODO: improve this
# prepare the data
my %data_for;
$data_for{ 'zipFile' } = [ $zipfile ];
$data_for{ 'treeName' } = $basename;
$data_for{ 'APIkey' } = $ARGV_api_key;
$data_for{ 'projectName' } = $ARGV_project;
$data_for{ 'treeDescription' } = $ARGV_description if $ARGV_description;
# submit the data
my $ua = LWP::UserAgent->new();
$ua->agent("iTOLbatchUploader4.0");
my $request = POST $upload_url,
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.449 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )