From ef70b5de358a728caa105b91016433ad2e9eeece Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 24 Aug 2013 20:48:31 +0000 Subject: dtas-{sink,source}edit: allow unsetting command and env Omitting a command: entry or an entry inside env: should delete it from the player --- bin/dtas-sinkedit | 18 +++++++++++++++--- bin/dtas-sourceedit | 11 ++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/bin/dtas-sinkedit b/bin/dtas-sinkedit index d1e8fb4..24cd302 100755 --- a/bin/dtas-sinkedit +++ b/bin/dtas-sinkedit @@ -18,9 +18,9 @@ tmp.binmode buf = c.req(%W(sink cat #{name})) abort(buf) if buf =~ /\AERR/ -buf << DTAS_DISCLAIMER +orig = YAML.load(buf) -tmp.write(buf) +tmp.write(buf << DTAS_DISCLAIMER) cmd = "#{editor} #{tmp.path}" system(cmd) or abort "#{cmd} failed: #$?" tmp.rewind @@ -33,14 +33,26 @@ if env = sink["env"] end end +# remove deleted env +if orig_env = orig["env"] + env ||= {} + deleted_keys = orig_env.keys - env.keys + deleted_keys.each { |k| cmd << "env##{k}" } +end + %w(nonblock active).each do |field| if sink.key?(field) cmd << "#{field}=#{sink[field] ? 'true' : 'false'}" end end -%w(prio pipe_size command).each do |field| +%w(prio pipe_size).each do |field| value = sink[field] and cmd << "#{field}=#{value}" end +%w(command).each do |field| + value = sink[field] + cmd << "#{field}=#{value}" +end + c.req_ok(cmd) diff --git a/bin/dtas-sourceedit b/bin/dtas-sourceedit index 9d329d7..3ce7945 100755 --- a/bin/dtas-sourceedit +++ b/bin/dtas-sourceedit @@ -18,6 +18,7 @@ tmp.binmode buf = c.req(%W(source cat)) abort(buf) if buf =~ /\AERR/ +orig = YAML.load(buf) tmp.write(buf << DTAS_DISCLAIMER) cmd = "#{editor} #{tmp.path}" @@ -32,8 +33,16 @@ if env = source["env"] end end +# remove deleted env +if orig_env = orig["env"] + env ||= {} + deleted_keys = orig_env.keys - env.keys + deleted_keys.each { |k| cmd << "env##{k}" } +end + %w(command).each do |field| - value = source[field] and cmd << "#{field}=#{value}" + value = source[field] + cmd << "#{field}=#{value}" end c.req_ok(cmd) -- cgit v1.2.3-24-ge0c7