From 57bd6f96e007097219cdd31b034f8ca386927ed6 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 26 Aug 2013 05:59:07 +0000 Subject: dtas-{sink,source}edit: reduce redundant code These two are similar enough that it's possible to share some code between them and also increase user-friendliness at the same time. --- lib/dtas/disclaimer.rb | 7 ++++--- lib/dtas/edit_client.rb | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 lib/dtas/edit_client.rb (limited to 'lib/dtas') diff --git a/lib/dtas/disclaimer.rb b/lib/dtas/disclaimer.rb index 608956d..5747971 100644 --- a/lib/dtas/disclaimer.rb +++ b/lib/dtas/disclaimer.rb @@ -2,17 +2,18 @@ # :enddoc: # Copyright (C) 2013, Eric Wong # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +DTAS_PROGNAME = File.basename($0) DTAS_DISCLAIMER = < +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +require 'tempfile' +require 'yaml' +require_relative 'unix_client' +require_relative 'disclaimer' + +# common code between dtas-sourceedit and dtas-sinkedit +module DTAS::EditClient # :nodoc: + def editor + %w(VISUAL EDITOR).each do |key| + v = ENV[key] or next + v.empty? and next + return v + end + "vi" + end + + def client_socket + DTAS::UNIXClient.new + rescue + e = "DTAS_PLAYER_SOCK=#{DTAS::UNIXClient.default_path}" + abort "dtas-player not running on #{e}" + end + + def tmpyaml + tmp = Tempfile.new(%W(#{File.basename($0)} .yml)) + tmp.sync = true + tmp.binmode + tmp + end + + def update_cmd_env(cmd, orig, updated) + if env = updated["env"] + env.each do |k,v| + cmd << (v.nil? ? "env##{k}" : "env.#{k}=#{v}") + 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 + end +end -- cgit v1.2.3-24-ge0c7