changeset 8:01687750c862 draft

Uploaded
author david-hoover
date Thu, 01 May 2014 17:11:57 -0400
parents e5a905df7e0b
children 8d6bf2bd8932
files export_local_file.xml import_local_file.sh import_local_file.xml x.sh
diffstat 4 files changed, 66 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/export_local_file.xml	Thu Oct 04 14:48:02 2012 -0400
+++ b/export_local_file.xml	Thu May 01 17:11:57 2014 -0400
@@ -1,10 +1,12 @@
 <?xml version="1.0"?>
-<tool id="export_local_file" name="Export dataset" version="1.1.0">
+<tool id="export_local_file" name="Export dataset" version="1.2.0">
   <description>to a local filesytem</description>
   <command interpreter="sh">export_local_file.sh $input '$filepath' $userEmail $output</command>
   <inputs>   
     <param name="input" type="data" label="Dataset"/>
-    <param name="filepath" type="text" size="100" label="Absolute file path" />
+    <param name="filepath" type="text" size="100" label="Absolute file path" value="/home/foo/blah">
+      <validator type="expression" message="The path must begin with either /home or /data">value.lower()[0:5] == '/home' or value.lower()[0:5] == '/data'</validator>
+    </param>
   </inputs>
   <outputs>
     <data format="txt" name="output" label="local export: $filepath" />
@@ -15,7 +17,7 @@
 
 **Copying files**
 
-This tool will allow you to export a single file from Galaxy to a local filesystem.
+This tool will allow you to export a single file from Galaxy to a local filesystem on Helix or Biowulf.
 You must have permission to write the file to the given directory, and the file must not yet exist.  This tool will
 not overwrite a pre-existing file.
 
@@ -26,6 +28,8 @@
 - The file path must be a file, not a directory
 - You must give the fullpath to the file (/home/user/myfile.txt, not ./myfile.txt)
 - You must have permission to write the file in the given directory
+- Only /home or /data directories are allowed.
+- The directories must exist on Helix or Biowulf!
 
 -----
 
--- a/import_local_file.sh	Thu Oct 04 14:48:02 2012 -0400
+++ b/import_local_file.sh	Thu May 01 17:11:57 2014 -0400
@@ -27,15 +27,53 @@
 
 # Filter any unwanted directories
 
-if [[ `echo $INPUT | grep -c ^/data/` -lt 1 ]] && [[ `echo $INPUT | grep -c ^/home/` -lt 1 ]] ; then
-  echo "Error: \"$INPUT\" is not allowed" >&2
+topdir1=$(echo $INPUT | grep -oP '^/home/\w+|^/data/\w+')
+if [[ -z $topdir1 ]]
+then
+  echo "Error: The input file must begin with either '/home' or '/data'." >&2
+  exit 1
+else
+  topdir2=$(echo $INPUT | grep -oP '^/home/\w+/|^/data/\w+/')
+  if [[ ! -d $topdir2 ]]
+  then  
+    echo "Error: The directory $topdir1 doesn't exist." >&2
+    exit 1
+  fi
+fi
+
+
+path1=$(echo $INPUT | grep -oP '^/home/\w+/\S+|^/data/\w+/S+')
+if [[ -z $path1 ]]
+then  
+  echo "Error: The path $INPUT is not formatted correctly." >&2
   exit 1
 fi
 
 # Do the deed
 cpx $INPUT $OUTPUT "$USER"
 if [ $? != 0  ]; then
-  echo "Error: $USER failed to copy \"$INPUT\"" >&2
+  echo "Error: $USER failed to copy \"$INPUT\". 
+Click 'View details' and then 'stderr' to see more information about the error.
+===============================================================================
+
+This could happen for one of several reasons:
+
+1.  The path is formatted incorrectly (example: \home\user\bogus.txt)
+2.  The path doesn’t exist (example: /home/bogususer/file.txt)
+3.  The path is not a full path (example: bogusfile.txt)
+4.  The user doesn’t have permission (example: /home/anotheruser/file.txt)
+5.  Something went horribly wrong (???)
+
+Make sure that your file exists within your /home or /data directory, that you have
+read access to that file, and that the input is formattted like the following:
+
+  /home/$USER/path/to/file
+
+or
+
+  /data/$USER/path/to/file
+
+" >&2
   exit 1
 fi
 
--- a/import_local_file.xml	Thu Oct 04 14:48:02 2012 -0400
+++ b/import_local_file.xml	Thu May 01 17:11:57 2014 -0400
@@ -1,9 +1,12 @@
 <?xml version="1.0"?>
-<tool id="import_local_file" name="Import local file" version="1.1.0">
+<tool id="import_local_file" name="Import local file" version="1.2.0">
   <description>from a local filesystem</description>
   <command interpreter="sh">import_local_file.sh '$filepath' $output $userEmail</command>
   <inputs>   
-    <param name="filepath" type="text" size="100" label="Absolute file path" />
+    <param name="filepath" type="text" size="100" label="Absolute file path" value="/home/foo/blah">
+      <validator type="expression" message="The path must begin with either /home or /data">value.lower()[0:5] == '/home' or value.lower()[0:5] == '/data'</validator>
+    </param>
+      
   </inputs>
   <outputs> 
     <data format="txt" name="output" label="local import: $filepath" />
@@ -14,7 +17,7 @@
 
 **Copying files**
 
-This tool will allow you to upload a single file that is locally available.  There is no browse function,
+This tool will allow you to upload a single file that is locally available on Helix or Biowulf.  There is no browse function,
 however, so you will need to give the full path name.  If you have permission to read the file, Galaxy can import the file.
 
 .. class:: warningmark
@@ -24,6 +27,8 @@
 - The file path must be a file, not a directory
 - You must give the fullpath to the file (/home/user/myfile.txt, not ./myfile.txt)
 - You must have permission to read the file
+- Only /home or /data directories are allowed
+- The files must be on Helix or Biowulf!  Use 'Upload File' for all other files!
 
 -----
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x.sh	Thu May 01 17:11:57 2014 -0400
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+topdir=$(echo $1 | grep -oP '^/home/\w+/|^/data/\w+/')
+
+if [[ -n $topdir ]]
+then
+  echo "$1: good"
+else
+  echo "$1: bad"
+fi