Don't know if you already know this, but using Groovy property syntax makes code even more readable, e.g.:

println "${it}: ${it.getOwner()} ${it.getPosixFilePermissions()}"

can be written as:

println "$it: $it.owner $it.posixFilePermissions"

In general:
1. Any getter can be accessed without the "get" prefix with a lowercase first char 2. A simplified string interpolation syntax without the enclosing curly braces can be used in these cases
(same goes for setters)

Cheers,
mg


On 20/10/2021 12:14, James McMahon wrote:
Many thanks to each of you who offered guidance. Redirecting back to this today, anticipating success given your advice. Still getting a feel for Groovy so this helps quite a bit.
Cheers,
-Jim

On Fri, Oct 15, 2021 at 11:22 AM Søren Berg Glasius <soe...@glasius.dk> wrote:

    @Rachel Rudnick <mailto:rac...@cirrusidentity.com> that is a very
    clever use of *use* - good call!

    Best regards / Med venlig hilsen,
    Søren Berg Glasius

    Hedevej 1, Gl. Rye, 8680 Ry, Denmark
    Mobile: +45 40 44 91 88, Skype: sbglasius
    --- Press ESC once to quit - twice to save the changes.


    Den fre. 15. okt. 2021 kl. 17.12 skrev Rachel Greenham
    <rac...@merus.eu>:

        Looks like you could pretty much use Files as an extension
        module and/or category for Path...

        Hang on, does it work?

        groovy> import java.nio.file.*
        groovy> use (Files) {
        groovy>     Path p = Path.of("src/groovy")
        groovy>     println "is directory? ${p.isDirectory()}"
        groovy>     p.list().each { println "${it}: ${it.getOwner()}
        ${it.getPosixFilePermissions()}" }
        groovy> }

        is directory? true
        src/groovy/benchmark: rachel [OWNER_WRITE, OTHERS_READ,
        OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE, OTHERS_EXECUTE,
        OWNER_READ]
        src/groovy/xdocs: rachel [OWNER_WRITE, OTHERS_READ,
        OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE, OTHERS_EXECUTE,
        OWNER_READ]
        src/groovy/bootstrap: rachel [OWNER_WRITE, OTHERS_READ,
        OWNER_EXECUTE, GROUP_READ, GROUP_EXECUTE, OTHERS_EXECUTE,
        OWNER_READ]
        src/groovy/LICENSE: rachel [OWNER_WRITE, OTHERS_READ,
        GROUP_READ, OWNER_READ]
        ...

        oh yeah that works 😉

-- Rachel Greenham
        rac...@merus.eu

        > On 15 Oct 2021, at 15:57, Nelson, Erick
        <erick.nel...@hdsupply.com> wrote:
        >
        > import java.nio.file.Path
        > import java.nio.file.Files
        >
        > File f = new File('test')
        > Path p = f.toPath()
        > Files.isReadable(p) // boolean
        > Files.isWritable(p) // boolean
        > Files.isExecutable(p) // boolean
        > Files.isDirectory(p) // boolean
        > Files.isRegularFile(p) // boolean
        >
        >
        > From: James McMahon <jsmcmah...@gmail.com>
        > Date: Friday, October 15, 2021 at 4:50 AM
        > To: users@groovy.apache.org <users@groovy.apache.org>
        > Subject: Checking directory state using Groovy
        >
        > Hello. I am trying to convert an existing script from python
        to Groovy. It executes a number of os.path and os.access
        commands, which I've not yet been able to find examples of
        that are written in Groovy. I have found similar
        implementations that employ "add on" Jenkins libraries for
        Groovy, but I will not have access to such libraries.Here is a
        brief excerpt from what I now do in python. Has anyone done
        similarly in Groovy? Can I impose for an example?
        >
        > Thanks very much in advance. Here is my python:
        >
        > if ( os.path.exists(result['thisURL']) and
        os.path.isfile(result['thisURL']) ) :
        >      if ( os.access(result['thisURL'], os.F_OK)
        >           and os.access(result['thisURL'], os.R_OK)
        >           and os.access(thisDri, os.W_OK)
        >           and os.access(thisDir, os.X_OK) ) :
        >           # do some stuff
        >       else :
        >           # dir and file not accessible, do some different stuff

Reply via email to