about summary refs log tree commit homepage
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/dtas-splitfx39
1 files changed, 39 insertions, 0 deletions
diff --git a/bin/dtas-splitfx b/bin/dtas-splitfx
new file mode 100755
index 0000000..2d66c0d
--- /dev/null
+++ b/bin/dtas-splitfx
@@ -0,0 +1,39 @@
+#!/usr/bin/env ruby
+# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
+# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
+require 'yaml'
+require 'optparse'
+require 'dtas/splitfx'
+usage = "#$0 [-n|--dry-run][-j [JOBS]] SPLITFX_FILE.yml [TARGET]"
+overrides = {} # FIXME: not tested
+dryrun = false
+jobs = 1
+op = OptionParser.new('', 24, '  ') do |opts|
+  opts.banner = usage
+  opts.on('-n', '--dry-run') { dryrun = true }
+  opts.on('-j', '--jobs [JOBS]', Integer) { |val| jobs = val }
+  opts.parse!(ARGV)
+end
+
+args = []
+ARGV.each do |arg|
+  case arg
+  when %r{\A(\w+)=(.*)\z}
+    key, val = $1, $2
+    # only one that makes sense is infile=another_file
+    overrides[key] = YAML.load(val)
+  when %r{\A(\w+)\.(\w+)=(.*)\z}
+    # comments.ARTIST='blah'
+    top, key, val = $1, $2, $3
+    hsh = overrides[top] ||= {}
+    hsh[key] = val
+  else
+    args << arg
+  end
+end
+
+file = args.shift or abort usage
+target = args.shift || "flac"
+splitfx = DTAS::SplitFX.new
+splitfx.import(YAML.load(File.read(file)), overrides)
+splitfx.run(target, jobs, dryrun)