#!/usr/bin/env ruby require 'csv' require 'expandsync' require 'fileutils' require 'methadone' require 'nokogiri' require 'optparse' class App include Methadone::Main include Methadone::CLILogging main do |atext_filepath| begin atext = AText.new(atext_filepath, options[:a]) textexpander = TextExpander.new # Create file content (CSV for aText, XML for TextExpander) # that contains the correct data: # 1. aText CSV should contain any new TextExpander snippets. # 2. TextExpander XML should contain original snippets *and* # any new aText snippets. combined_snippets = (atext.snippets + textexpander.snippets).uniq { |s| s[0] } atext.construct_data(combined_snippets - atext.snippets) textexpander.construct_data(combined_snippets - textexpander.snippets) # Save new aText snippets . atext.save # Backup the original TextExpander file (unless the user has specified # that they don't want a backup) and save the new one. textexpander.backup unless options[:n] textexpander.save # This has to be here so that my Cucumber Aruba tests work. Don't ask why. leak_exceptions(true) rescue StandardError => e ExpandSync::CLIMessage.error(e, false) exit!(1) end end description ExpandSync::DESCRIPTION version ExpandSync::VERSION # Flags & Switches on('-a FILEPATH', "Output location for aText rules (defaults to ~/#{ AText::OUTPUT_FILENAME })") on('-n', 'Disable backing up of Settings.textexpander (RUN AT YOUR OWN RISK!)') on('-v', '--verbose', 'Turn on verbose output') # Arguments arg :atext_filepath, 'The filepath to a CSV file exported from aText' go! end