#!/usr/bin/env ruby # Encoding: utf-8 #-------------------------------------------------------------------- # ExpandSync # # Synchronizes text expansion snippets between aText and # TextExpander Touch # # Copyright (c) 2014 # Aaron Bach # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. #-------------------------------------------------------------------- require 'cliutils' require 'expandsync' require 'methadone' require 'optparse' class App include CLIUtils::Messenging include Methadone::Main main do |atext_filepath| begin atext = ExpandSync::AText.new(atext_filepath, options[:a]) textexpander = ExpandSync::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 messenger.error(e.to_s) exit!(1) end end description ExpandSync::DESCRIPTION version ExpandSync::VERSION # Flags & Switches on('-a FILEPATH', "Output location for aText rules (defaults to ~/#{ ExpandSync::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