Mercurial > repos > david-hoover > local_file_tools
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! -----