about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--Documentation/dtas-tl.txt2
-rwxr-xr-xbin/dtas-tl20
2 files changed, 22 insertions, 0 deletions
diff --git a/Documentation/dtas-tl.txt b/Documentation/dtas-tl.txt
index 7c54f10..f7a3a1a 100644
--- a/Documentation/dtas-tl.txt
+++ b/Documentation/dtas-tl.txt
@@ -28,6 +28,8 @@ client).
 * goto TRACKID [POS] - play TRACKID immediately, optionally seek to POS
 TRACKID may be looked up via cat, and POS should be a timestamp in
 HH:MM:SS.FRAC format.
+* reto REGEXP [POS] - play first track with path matching REGEXP immediately,
+optionally seek to POS.  POS should be a timestamp in HH:MM:SS.FRAC format.
 * next - play the next track in the tracklist
 * previous - play the previous track in the tracklist
 * repeat 1 - repeat the current track
diff --git a/bin/dtas-tl b/bin/dtas-tl
index f34a83c..7793f23 100755
--- a/bin/dtas-tl
+++ b/bin/dtas-tl
@@ -47,6 +47,26 @@ when "addtail"
     puts "#{path} #{res}"
     last_id = res if res =~ /\A\d+\z/
   end
+when "reto"
+  fixed = ARGV.delete("-F")
+  ignorecase = ARGV.delete("-i")
+  re = ARGV[1]
+  time = ARGV[2]
+  re = Regexp.quote(re) if fixed
+  re = ignorecase ? %r{#{re}}i : %r{#{re}}
+  get_track_ids(c).each do |track_id|
+    res = c.req("tl get #{track_id}")
+    res.sub!(/\A1 /, '')
+    if re =~ res
+      req = %W(tl goto #{track_id})
+      req << time if time
+      res = c.req(req)
+      puts res
+      exit(res == "OK")
+    end
+  end
+  warn "#{re.inspect} not found"
+  exit 1
 else
   # act like dtas-ctl for now...
   puts c.req([ "tl", *ARGV ])