bin/dtas-sourceedit in dtas-0.0.0 vs bin/dtas-sourceedit in dtas-0.1.I

- old
+ new

@@ -1,48 +1,33 @@ #!/usr/bin/env ruby # -*- encoding: binary -*- # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) -require 'tempfile' -require 'yaml' -require 'dtas/unix_client' -require 'dtas/disclaimer' -editor = ENV["VISUAL"] || ENV["EDITOR"] -c = DTAS::UNIXClient.new -usage = $0 -ARGV.size == 0 or abort usage -name = ARGV[0] +require 'dtas/edit_client' +include DTAS::EditClient +c = client_socket +sources = c.req('source ls') || "(unknown)" +usage = "Usage: #{DTAS_PROGNAME} SOURCENAME\n" \ + "available SOURCENAME values: #{sources}" +ARGV.size <= 1 or abort usage +name = ARGV[0] || "sox" -tmp = Tempfile.new(%w(dtas-sourceedit .yml)) -tmp.sync = true -tmp.binmode - -buf = c.req(%W(source cat)) +tmp = tmpyaml +buf = c.req(%W(source cat #{name})) abort(buf) if buf =~ /\AERR/ orig = YAML.load(buf) tmp.write(buf << DTAS_DISCLAIMER) cmd = "#{editor} #{tmp.path}" system(cmd) or abort "#{cmd} failed: #$?" tmp.rewind source = YAML.load(tmp.read) -cmd = %W(source ed) -if env = source["env"] - env.each do |k,v| - cmd << (v.nil? ? "env##{k}" : "env.#{k}=#{v}") - end -end +cmd = %W(source ed #{name}) +update_cmd_env(cmd, orig, source) -# 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] - cmd << "#{field}=#{value}" +# nil OK +%w(tryorder command).each do |field| + cmd << "#{field}=#{source[field]}" end c.req_ok(cmd)