From db92b86c6d00e669e7b1b343d07e44a9f8d3c4ad Mon Sep 17 00:00:00 2001 From: wmorgan Date: Mon, 2 Apr 2007 05:30:37 +0000 Subject: [PATCH] added sup-config git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@369 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- Manifest.txt | 1 + bin/sup-config | 221 +++++++++++++++++++++++++++++++++++++++++++++++ lib/sup.rb | 4 +- lib/sup/index.rb | 12 +-- 4 files changed, 230 insertions(+), 8 deletions(-) create mode 100644 bin/sup-config diff --git a/Manifest.txt b/Manifest.txt index 722f119..13ea4c2 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -6,6 +6,7 @@ README.txt Rakefile bin/sup bin/sup-add +bin/sup-config bin/sup-dump bin/sup-recover-sources bin/sup-sync diff --git a/bin/sup-config b/bin/sup-config new file mode 100644 index 0000000..d68fac1 --- /dev/null +++ b/bin/sup-config @@ -0,0 +1,221 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'highline/import' +require 'yaml' +require 'trollop' +require "sup" + +$opts = Trollop::options do + version "sup-config (sup #{Redwood::VERSION})" + banner < "mbox", :path => fn } + when :maildir + fn = axe "What's the full path to the maildir directory?", ENV["MAIL"] #"srm + return if fn.nil? || fn.empty? + { :scheme => "maildir", :path => fn } + when :mboxssh + srv = axe "What server is the mbox file located on?", $last_server + return if srv.nil? || srv.empty? + $last_server = srv + fn = axe "What's the full path to the mbox file?", ENV["MAIL"] #"srm + return if fn.nil? || fn.empty? + { :scheme => "mbox+ssh", :host => srv, :path => fn } + when :imap, :imaps + srv = axe "What is the IMAP server?", $last_server + return if srv.nil? || srv.empty? + $last_server = srv + fn = axe "What's the folder path?", "INBOX" #"srm + return if fn.nil? || fn.empty? + fn = "/#{fn}" # lame + { :scheme => type.to_s, :host => srv, :path => fn } + end + + uri = + begin + URI::Generic.build components + rescue URI::Error => e + say "Whoopsie! I couldn't build a URI from that: #{e.message}" + if axe_yes("Try again?") then next else return end + end + + say "I'm going to add this source: #{uri}." + unless axe("Does that look right?", "y") =~ /^y|yes$/i + if axe_yes("Try again?") then next else return end + end + + usual = axe_yes "Does this source ever receive new messages?", "y" + archive = usual ? axe_yes("Should those new messages be automatically archived?") : false + + cmd = build_cmd "sup-add" + cmd += " --unusual" unless usual + cmd += " --archive" if archive + cmd += " #{uri}" + + puts "Ok, trying to run \"#{cmd}\"..." + + system cmd + if $?.success? + say "Great! Added!" + break + else + say "Rats, that failed. You may have to do it manually." + if axe_yes("Try again?") then next else return end + end + end +end + +$terminal.wrap_at = :auto +Redwood::start +index = Redwood::Index.new +index.load_sources + +say <" + +say "\nDo you have any alternate email addresses that also receive email?" +say "If so, enter them now, separated by spaces." +alts = axe("Alternate email addresses", account[:alternates].join(" ")).split(/\s+/) + +sigfn = axe "What file contains your signature?", account[:signature] +editor = axe "What editor would you like to use?", $config[:editor] + +$config[:accounts][:default][:name] = name +$config[:accounts][:default][:email] = email +$config[:accounts][:default][:alternates] = alts +$config[:accounts][:default][:signature] = sigfn +$config[:editor] = editor + +Redwood::save_yaml_obj $config, Redwood::CONFIG_FN + +say "Ok, I've saved you up a nice lil' #{Redwood::CONFIG_FN}." + +done = false +until done + say "\nNow, we'll tell Sup where to find all your email." + index.load_sources + say "Current sources:" + if index.sources.empty? + say " No sources!" + else + index.sources.each { |s| puts "* #{s}" } + end + + say "\n" + choose do |menu| + menu.prompt = "Your wish?" + menu.choice("Add a new source.") { add_source } + menu.choice("Done adding sources!") { done = true } + end +end + +say < { :default => { - :name => "Your Name Here", - :email => "your.email.here@domain.tld", + :name => "Sup Rocks", + :email => "sup-rocks@reading-my-emails", :alternates => [], :sendmail => "/usr/sbin/sendmail -oem -ti", :signature => File.join(ENV["HOME"], ".signature") diff --git a/lib/sup/index.rb b/lib/sup/index.rb index 2fa70cd..19d4ed6 100644 --- a/lib/sup/index.rb +++ b/lib/sup/index.rb @@ -272,6 +272,12 @@ class Index contacts.keys.compact end + def load_sources fn=Redwood::SOURCE_FN + source_array = (Redwood::load_yaml_obj(fn) || []).map { |o| Recoverable.new o } + @sources = Hash[*(source_array).map { |s| [s.id, s] }.flatten] + @sources_dirty = false + end + protected def parse_user_query_string str; @qparser.parse str; end @@ -295,12 +301,6 @@ protected query end - def load_sources fn=Redwood::SOURCE_FN - source_array = (Redwood::load_yaml_obj(fn) || []).map { |o| Recoverable.new o } - @sources = Hash[*(source_array).map { |s| [s.id, s] }.flatten] - @sources_dirty = false - end - def save_sources fn=Redwood::SOURCE_FN if @sources_dirty || @sources.any? { |id, s| s.dirty? } bakfn = fn + ".bak" -- 2.45.2