Mercurial > repos > nml > bundle_collections
changeset 0:bae199dc511f draft
planemo upload commit 75c510cf71217015f3f83baf61a4a54a3a1f4bfd
author | nml |
---|---|
date | Fri, 20 Nov 2015 10:23:17 -0500 |
parents | |
children | cd6da887a5f4 |
files | bundle_collection.pl bundle_collection.xml |
diffstat | 2 files changed, 148 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bundle_collection.pl Fri Nov 20 10:23:17 2015 -0500 @@ -0,0 +1,120 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use File::Copy; +use File::Basename; +use Getopt::Long; +use Pod::Usage; + +my ($html_file, $html_path, @args, %information, $folder); + +Getopt::Long::Configure('bundling'); +GetOptions( + 'i|input=s' => \@args, + 'h|html=s' => \$html_file, + 'p|path=s' => \$html_path + ); + +pod2usage(1) unless @args && $html_file && $html_path; + +#At this point, the output directory does not exist yet. So we have to make it +mkdir $html_path or die "Could not make directory $!"; + +#Now make a folder for all our files +my $data_folder = $html_path."/Bundled_Collection"; +mkdir $data_folder or die "Could not make directory $!"; + +#Go through each list item +foreach my $entry (@args) +{ + #Get key and value. Remove any spaces + my ($info, $file) = split /=/, $entry; + my ($name, $ext) = split /,/, $info; + $name=~s/ /_/g; + my $full_name = $name.".".$ext; + + #We store this for later to make the html file + $information{$name}{$ext}=1; + + #copy each file to its directory + + my $file_path = $data_folder."/".$full_name; + + copy($file,$file_path) or die "Could not copy $file to $file_path: $!"; +} + +#Write out the html file +open my $out, ">", $html_file or die "Could not open html file: $!"; + +my $num_keys = scalar(keys %information); +my $num_vals = scalar(@args); + +printf $out "<!DOCTYPE html> +<html> +<style type=\"text/css\"> + +body { + font-family: sans-serif; + color: #000; + } + +table { + margin-left: 3em; + text-align: center; + } +th { + text-align:center; + background-color: #000080; + color: #FFF; + padding: 0.4em; + } +td { + font-family: monospace; + text-align: left; + background-color: #EEE; + color: #000; + padding: 0.4em; + } +h2 { + color: #800000; + padding-bottom: 0; + margin-bottom: 0; + clear: left; + } +</style></head> + + <body> + +<h2 id=\"M0\">Bundle Collection Summary</h2><br><br> + +Number of keys: $num_keys<br> +Number of values: $num_vals<br><br> + +<table border=\"1\"><tr><th>File name</th><th>File type</th></tr>"; + +foreach my $key (sort(keys %information)) +{ + + foreach my $val (keys %{$information{$key}} ) + { + printf $out "<tr><td>$key</td><td>$val</td></tr>"; + } +} + +printf $out "</table></body></html>"; + +close $out; + +__END__ + +=head1 name + + bundle_collection.pl - Downloads a collection from Galaxy + +=head1 SYNOPSIS + + bundle_collection.pl -h html_file -p output_path -o "key=value" + +=back +=cut \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bundle_collection.xml Fri Nov 20 10:23:17 2015 -0500 @@ -0,0 +1,28 @@ +<tool id="bundle_collection" name="Bundle Collection" version="1.0.1"> + <description>Download a collection of files</description> + <command interpreter="perl">bundle_collection.pl -h $html_file -p $html_file.files_path + #for $f in $input.keys + -i "$f,$input[$f].ext=$input[$f]" + #if $input[$f].metadata.bam_index and $input[$f].metadata.bam_index != "None" + #set $bamind = $f+","+$input[$f].ext+".bai="+$input[$f].metadata.bam_index + -i "$bamind" + #end if + #end for + </command> + + <inputs> + <param name="input" type="data_collection" label="Data Collection" collection_type="list"/> + </inputs> + + <outputs> + <data name="html_file" format="html" label="Bundled Collection" /> + </outputs> + <help> + ***What it does** + + This tool will bundle up files in a list collection into a downloadable zip file + + Author: Mariam Iskander and Jen Cabral + </help> + +</tool>