class KPM::PluginsManager

def update_fs(plugin_name_or_path, plugin_version=nil, &block)

Note: the plugin name here is the directory name on the filesystem
def update_fs(plugin_name_or_path, plugin_version=nil, &block)
  if plugin_name_or_path.nil?
    @logger.warn('Unable to update the filesystem: no name or path specified')
    return
  end
  p = plugin_version.nil? ? plugin_name_or_path : @plugins_dir.join('*').join(plugin_name_or_path).join(plugin_version == :all ? '*' : plugin_version)
  modified = []
  Dir.glob(p).each do |plugin_dir_path|
    plugin_dir = Pathname.new(plugin_dir_path)
    tmp_dir = plugin_dir.join('tmp')
    FileUtils.mkdir_p(tmp_dir)
    yield(tmp_dir) if block_given?
    modified << plugin_dir
  end
  if modified.empty?
    if plugin_version.nil?
      @logger.warn("No plugin found with name #{plugin_name_or_path}. Installed plugins: #{Dir.glob(@plugins_dir.join('*').join('*'))}")
    else
      @logger.warn("No plugin found with name #{plugin_name_or_path} and version #{plugin_version}. Installed plugins: #{Dir.glob(@plugins_dir.join('*').join('*').join('*'))}")
    end
  end
  modified
end