class VagrantPlugins::SyncedFolderSSHFS::Command::SSHFS

Public Class Methods

synopsis() click to toggle source
# File lib/vagrant-sshfs/command.rb, line 8
def self.synopsis
  "mounts SSHFS shared folder mounts into the remote machine"
end

Public Instance Methods

execute() click to toggle source
# File lib/vagrant-sshfs/command.rb, line 12
def execute
  options = {:unmount => false} # Default to mounting shares
  opts = OptionParser.new do |o|
    o.banner = "Usage: vagrant sshfs [--mount|--unmount] [vm-name]"
    o.separator ""
    o.separator "Mount or unmount sshfs synced folders into the vagrant box"
    o.separator ""

    o.on("--mount", "Mount folders - the default") do
      options[:unmount] = false
    end
    o.on("--unmount", "Unmount folders") do
      options[:unmount] = true
    end
  end

  # Parse the options and return if we don't have any target.
  argv = parse_options(opts)
  return if !argv

  # Go through each machine and perform the rsync
  error = false
  with_target_vms(argv) do |machine|

    # Is the machine up yet?
    if !machine.communicate.ready?
      machine.ui.error(I18n.t("vagrant.sshfs.errors.communicator_not_ready"))
      error = true
      next
    end

    # Determine the sshfs synced folders for this machine
    folders = synced_folders(machine, cached: false)[:sshfs]
    next if !folders || folders.empty?

    # Mount or Unmount depending on the user's request
    if options[:unmount]
      SyncedFolder.new.disable(machine, folders, {})
    else
      SyncedFolder.new.enable(machine, folders, {})
    end
  end
  return error ? 1 : 0
end