module SifttterRedux

The SifttterRedux module, which wraps everything in this gem.

Constants

DEFAULT_DBU_CONFIG_FILEPATH

The default configuration path for Dropbox Uploader

DEFAULT_DBU_LOCAL_FILEPATH

The default local filepath of the Dropbox-Uploader directory

DEFAULT_DBU_MESSAGE

The default message to display when Dropbox Uploader is running

DEFAULT_SRD_CONFIG_FILEPATH

The default local filepath of the Siftter Redux config file

DEFAULT_SRD_LOG_FILEPATH

The default local filepath of the Siftter Redux log file

DESCRIPTION

The Gem’s description

NEWEST_CONFIG_VERSION

The last version to require a config update

PREF_FILES

Hash of preference files

SUMMARY

The Gem’s summary

VERSION

The Gem’s version

Attributes

initialized[R]

Stores whether initalization has completed. @return [Boolean]

verbose[RW]

Stores whether verbose output is turned on. @return [Boolean]

Public Class Methods

cleanup_temp_files() click to toggle source

Removes temporary directories and their contents @return [void]

# File lib/sifttter-redux.rb, line 21
def self.cleanup_temp_files
  dirs = [
    configuration.sifttter_redux[:dayone_local_filepath],
    configuration.sifttter_redux[:sifttter_local_filepath]
  ]

  messenger.info('Removing temporary local files...')
  dirs.each do |d|
    FileUtils.rm_rf(d)
    messenger.debug("Removed directory: #{ d }")
  end
end
dbu_install_wizard(from_scratch = false) click to toggle source

Runs a wizard that installs Dropbox Uploader on the local filesystem. @param [Boolean] from_scratch @return [void]

# File lib/sifttter-redux.rb, line 38
def self.dbu_install_wizard(from_scratch = false)
  valid_path_chosen = false

  until valid_path_chosen
    # Prompt the user for a location to save Dropbox Uploader.
    if from_scratch && !configuration.db_uploader[:base_filepath].nil?
      default = configuration.db_uploader[:base_filepath]
    else
      default = DEFAULT_DBU_LOCAL_FILEPATH
    end
    path = messenger.prompt('Location for Dropbox-Uploader', default)
    path = default if path.empty?
    path.chop! if path.end_with?('/')

    # If the entered directory exists, clone the repository.
    if Dir.exists?(File.expand_path(path))
      valid_path_chosen = true

      dbu_path = File.join(path, 'Dropbox-Uploader')
      executable_path = File.join(dbu_path, 'dropbox_uploader.sh')

      if File.directory?(dbu_path)
        messenger.warn("Using pre-existing Dropbox Uploader at #{ dbu_path }...")
      else
        messenger.info("Downloading Dropbox Uploader to #{ dbu_path }...")
        system "git clone https://github.com/andreafabrizi/Dropbox-Uploader.git #{ dbu_path }"
        messenger.info('Done.')
      end

      # If the user has never configured Dropbox Uploader, have them do it here.
      unless File.exists?(DEFAULT_DBU_CONFIG_FILEPATH)
        messenger.info('Initializing Dropbox Uploader...')
        system "#{ executable_path }"
      end

      configuration.add_section(:db_uploader) unless configuration.data.key?(:db_uploader)
      configuration.db_uploader.merge!({
        base_filepath: path,
        dbu_filepath: dbu_path,
        exe_filepath: executable_path
      })
    else
      messenger.error("Sorry, but #{ path } isn't a valid directory.")
    end
  end
end
get_dates_from_options(options) click to toggle source

Creates a date range from the supplied command line options. @param [Hash] options GLI command line options @return [Range]

# File lib/sifttter-redux.rb, line 89
def self.get_dates_from_options(options)
  if options[:c] || options[:n] || options[:w] ||
     options[:y] || options[:f] || options[:t] ||
     options[:d]
    # Yesterday
    r = DateRangeMaker.yesterday if options[:y]

    # Specific date
    r = DateRangeMaker.range(options[:d], options[:d]) if options[:d]

    # Current Week
    r = DateRangeMaker.last_n_weeks(0, options[:i]) if options[:c]

    # Last N Days
    r = DateRangeMaker.last_n_days(options[:n].to_i, options[:i]) if options[:n]

    # Last N Weeks
    r = DateRangeMaker.last_n_weeks(options[:w].to_i, options[:i]) if options[:w]

    # Custom Range
    if (options[:f] || options[:t])
      _dates = DateRangeMaker.range(options[:f], options[:t], options[:i])

      if _dates.last > Date.today
        messenger.warn("Ignoring overextended end date and using today's date (#{ Date.today })...")
        r = (_dates.first..Date.today)
      else
        r = _dates
      end
    end
  else
    r = DateRangeMaker.today
  end

  messenger.debug("Date range: #{ r }")
  r
end
init(from_scratch = false) click to toggle source

Initializes Sifttter Redux by downloading and collecting all necessary items and info. @param [Boolean] from_scratch @return [void]

# File lib/sifttter-redux.rb, line 131
def self.init(from_scratch = false)
  messenger.section('INITIALIZING...')

  if from_scratch
    configuration.reset
    configuration.add_section(:sifttter_redux)
  end

  configuration.sifttter_redux.merge!({
    config_location: configuration.config_path,
    log_level: 'WARN',
    version: SifttterRedux::VERSION,
  })

  # Run the wizard to download Dropbox Uploader.
  dbu_install_wizard(from_scratch = from_scratch)

  pm = CLIUtils::Prefs.new(SifttterRedux::PREF_FILES['INIT'], configuration)
  pm.ask
  configuration.ingest_prefs(pm)

  messenger.debug("Collected configuration values: #{ configuration.data }")
  configuration.save
  @initialized = true
end
update_config_file() click to toggle source

Notifies the user that the config file needs to be re-done and does it. @return [void]

# File lib/sifttter-redux.rb, line 160
def self.update_config_file
  m = "This version needs to make some config changes. Don't worry; " \
      "when prompted, your current values for existing config options " \
      "will be presented (so it'll be easier to fly through the upgrade)."
  messenger.info(m)
  messenger.prompt('Press enter to continue')
  SifttterRedux.init(true)
end