Developer's Diary
Software development, with Terry Ebdon
17-Jul-2020 The big picture

Table of Contents

Photo Shoot

NewPostProd will be used to create AutoHotKey scripts which in turn automate the GeoSetter GUI. This allows me to very rapidly add tags, captions etc. to hundreds of images. I currently use Adobe Lightroom for Digital Asset Management, i.e. to hold my photo catalogue, but find GeoSetter is much better for the initial key wording and captioning. Doing it from scratch in Lightroom or AfterShot Pro would take several hours. With GeoSetter the time drops to an hour or less. Add in my scripts and, on a good day, I can tag and caption everything in about 10 minutes. It's a substantial time saver.

Console Input

I put together some simple text menus for the NewPostProd CLI interface. I tripped over the same console input problem that I'd fixed in Trk21, Gradle doesn't wire stdin to System.in unless you tell it to. This breaks the Gradle run command.

It's an easy work-around, just add this to build.gradle:

run {
standardInput = System.in
}

I'd forgotten that this was needed. Trk21 also avoids using System.console().readLine() as that doesn't work with GroovyServ. The work around is to use new Scanner(System.in).next(). I've re-used Trk21's TrekCli.getLine() method in NewPostProd.

class Cli {
private final Scanner sc = new Scanner( System.in )
// …
private String getLine( final String prompt ) {
printf prompt
try {
sc.next().toLowerCase() - '\r'
} catch ( NoSuchElementException ex ) { // Caused by user entering CTRL+Z
''
}
}
}

16-JUL-2020 👈 Top of page 👉 18-JUL-2020

© 2020 Terry Ebdon.

Find me coding on GitHub, networking on LinkedIn, answering questions on Stack Exchange and hanging out on twitter.