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)