|
|
|
@ -28,7 +28,7 @@ import static com.jdbernard.wdiwtlt.cli.CliErr.*
|
|
|
|
|
|
|
|
|
|
public class CommandLineInterface {
|
|
|
|
|
|
|
|
|
|
public static final VERSION = "0.1.1"
|
|
|
|
|
public static final VERSION = "0.1.3"
|
|
|
|
|
|
|
|
|
|
public static final def DOC = """\
|
|
|
|
|
wdiwtlt v$VERSION
|
|
|
|
@ -97,14 +97,14 @@ Configuration:
|
|
|
|
|
private String titleStyle, normalStyle, statusStyle, promptStyle,
|
|
|
|
|
artistStyle, albumStyle, fileStyle, errorStyle, playlistStyle,
|
|
|
|
|
cmdStyle, optStyle
|
|
|
|
|
|
|
|
|
|
private String eraseToEnd = new ANSI().eraseLine(Erase.ToEnd).toString()
|
|
|
|
|
private String clearLine = new ANSI().eraseLine(Erase.All).toString()
|
|
|
|
|
private String afterInput =
|
|
|
|
|
new ANSI().eraseLine(Erase.All).scrollUp().cursorUp().toString()
|
|
|
|
|
private String beforeLeader =
|
|
|
|
|
new ANSI().saveCursor().cursorPrevLine(3).toString()
|
|
|
|
|
private String afterLeader =
|
|
|
|
|
new ANSI().restoreCursor().eraseLine(Erase.ToEnd).toString()
|
|
|
|
|
new ANSI().restoreCursor().toString()
|
|
|
|
|
private String eraseLeader =
|
|
|
|
|
new ANSI().eraseLine(Erase.All).cursorPrevLine().eraseLine(Erase.All)
|
|
|
|
|
.cursorPrevLine().eraseLine(Erase.All)
|
|
|
|
@ -391,7 +391,8 @@ Configuration:
|
|
|
|
|
printLongMessage(errorStyle + errMsg + normalStyle) }
|
|
|
|
|
else {
|
|
|
|
|
status.text = errorStyle + errMsg + normalStyle
|
|
|
|
|
dismissMsgDate = new Date(new Date().time + msgTimeout) } } }
|
|
|
|
|
dismissMsgDate = new Date(new Date().time + msgTimeout) } }
|
|
|
|
|
outStream.print eraseToEnd }
|
|
|
|
|
else {
|
|
|
|
|
drawLeader()
|
|
|
|
|
if (curMediaFile &&
|
|
|
|
@ -405,8 +406,13 @@ Configuration:
|
|
|
|
|
Thread.sleep(250) } } }
|
|
|
|
|
|
|
|
|
|
private def processInput(String line) {
|
|
|
|
|
line = line.trim()
|
|
|
|
|
logger.debug("line: $line")
|
|
|
|
|
|
|
|
|
|
if (line.indexOf(' and ') > 0 || line.indexOf(';')> 0) {
|
|
|
|
|
String[] cmds = line.split(/ and |;/)
|
|
|
|
|
return cmds.collect(this.&processInput) }
|
|
|
|
|
|
|
|
|
|
String[] parts = line.split(' ', 2)
|
|
|
|
|
String command = parts[0]?.toLowerCase()
|
|
|
|
|
String rest = parts.size() == 2 ? parts[1]?.trim() : null
|
|
|
|
@ -551,6 +557,7 @@ Configuration:
|
|
|
|
|
[(idKeyFor(selectionClass)): it.id]) }.findAll()
|
|
|
|
|
|
|
|
|
|
case ~/absent files/:
|
|
|
|
|
scanMediaLibrary()
|
|
|
|
|
return library.getMediaFilesWhere(presentLocally: false)
|
|
|
|
|
|
|
|
|
|
case ~/files tagged( as){0,1}((\s[^\s]+)+)/:
|
|
|
|
|