I see there was a feature request for this, but they do not note how they actually worked around it. In a nutshell, we download a groovy archive, unzip it, and create slaves for every file in the archive that is not the groovy executable, and doesnt end with .bat. We then do a update-alternatives for groovy.
`
GROOVY_ALT_SLAVES=“”
for f in $(ls /opt/groovy-${GROOVY_VERSION}/bin | fgrep -v .bat | grep -v ‘^groovy$’); do
GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/${f} ${f} /opt/groovy-${GROOVY_VERSION}/bin/${f}"
done
update-alternatives --install /usr/bin/groovy groovy /opt/groovy-${GROOVY_VERSION}/bin/groovy 2000 ${GROOVY_ALT_SLAVES}
update-alternatives --set groovy /opt/groovy-${GROOVY_VERSION}/bin/groovy
`
I cant really wrap my head around the best way to dupe this, that isnt just running the shell module. Once I resigned myself to using the shell module, I then read that doing something like
- shell: GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/{{ item }} {{ item }} /opt/groovy-{{ groovy_version }}/bin/{{ item }}"
with_items: ['file1', 'file2']
Wouldn’t work, since each shell run is a separate connection, so Im not really building up a long string to then append to the update-alternatives command. There is also the fact I have to manually specify a list of items, since I cant use glob because i need to match files that do not match a certain set of expressions.
Im sure Im missing something obvious, but I haven’t made any progress on this one and any help would be great.