Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions tools/setfacl/setfacl.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<tool id="setfact" name="setfacl: Grant permissions" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01" license="MIT">
<description></description>
<macros>
<token name="@TOOL_VERSION@">0.1.0</token>
<token name="@VERSION_SUFFIX@">0</token>
</macros>
<code file="tool_form_utils.py" />
<command detect_errors="exit_code"><![CDATA[
#for dir in $directories
echo '$dir' >> '$log' &&
#end for
true
]]></command>
<inputs>
<param name="top_level" type="select" refresh_on_change="true">
<options from_data_table="setfacl_directories"/>
</param>
<param name="directories" type="drill_down" multiple="true" label="TODO" dynamic_options="get_trans(__trans__, top_level)"/>
</inputs>
<outputs>
<data name="log" format="txt"/>
</outputs>
<tests>
</tests>
<help><![CDATA[
TODO: Fill in help in reStructuredText format (https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html)

Usage
.....

**Input**

**Output**

]]></help>
<citations>
<!-- <citation type="doi"> </citation> -->
</citations>
</tool>
2 changes: 2 additions & 0 deletions tools/setfacl/test-data/setfacl_directories.loc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
root_one one level / 1
root_two two levels / 2
1 change: 1 addition & 0 deletions tools/setfacl/tool-data/setfacl_directories.loc.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# <unique_id> <name> <path> <levels>
7 changes: 7 additions & 0 deletions tools/setfacl/tool_data_table_conf.xml.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0"?>
<tables>
<table name="setfacl_directories" comment_char="#">
<columns>value, name, path, levels</columns>
<file path="tool-data/setfacl_directories.sample.loc" />
</table>
</tables>
7 changes: 7 additions & 0 deletions tools/setfacl/tool_data_table_conf.xml.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0"?>
<tables>
<table name="setfacl_directories" comment_char="#">
<columns>value, name, path, levels</columns>
<file path="${__HERE__}/test-data/setfacl_directories.loc" />
</table>
</tables>
27 changes: 27 additions & 0 deletions tools/setfacl/tool_form_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import os

def get_directory_list(dir):
return [(os.path.join(dir, d), os.path.join(dir, d), False) for d in os.listdir(dir) if os.path.isdir(os.path.join(dir, d)) and not d.startswith(".")]

def get_trans(trans, top_level):
setfacl_data_table = trans.app.tool_data_tables.get('setfacl_directories')
data_field = setfacl_data_table.get_field(top_level)
path = data_field['path']
try:
levels = int(data_field['levels'])
except ValueError:
levels = 0
return get_directory_hierarchy(path, levels)

def get_directory_hierarchy(dir, levels=1):
options = []
if levels <= 0:
return options
subdirs = [os.path.join(dir, d) for d in os.listdir(dir) if os.path.isdir(os.path.join(dir, d)) and not d.startswith(".")]
for s in subdirs:
try:
sub = get_directory_hierarchy(s, levels-1)
except:
sub = []
options.append({"name": s, 'value': s, "selected": False, 'options': sub})
return options