Class: Vagrant::Rubymine::RubymineConf

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant/rubymine/rubymine_conf.rb

Constant Summary collapse

GEM_MANAGER_PATH =
'/config/options/gemmanager.xml'
OTHER_PATH =
'/config/options/other.xml'

Instance Method Summary collapse

Constructor Details

#initialize(root_path = nil) ⇒ RubymineConf

Returns a new instance of RubymineConf.

Raises:



15
16
17
18
# File 'lib/vagrant/rubymine/rubymine_conf.rb', line 15

def initialize(root_path=nil)
  @root_path = root_path || detect_root_path
  raise ConfigNotFound, "#{config_gem_manager_path} or #{config_other_path}" if !valid?
end

Instance Method Details

#gems_pathsObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/vagrant/rubymine/rubymine_conf.rb', line 34

def gems_paths
  conf = parse(config_gem_manager_path)
  conf.xpath('/application/component/sdk2gems').inject({}) do |result, sdk|
    sdk_name = (sdk_attr = sdk.xpath('@sdk')).empty? ? nil : sdk_attr.first.value
    if (match = sdk_name.match(/\[(.*)\]/))
      project_name = match[1]
      url_attr = sdk.xpath('box[1]/@url')
      if (gems_path = url_attr.first.value)
        gems_path = gems_path.gsub('file://$USER_HOME$', ENV['USERPROFILE']).gsub('/', '\\').downcase
        result[normalize_project_name(project_name)] = gems_path
      end
    end
    result
  end
end

#projects_pathsObject



24
25
26
27
28
29
30
31
32
# File 'lib/vagrant/rubymine/rubymine_conf.rb', line 24

def projects_paths
  conf = parse(config_other_path)
  conf.xpath("/application/component[@name='RecentDirectoryProjectsManager']/option[@name='recentPaths']/list/option").inject({}) do |result, option|
    project_path = option.xpath('@value').map(&:value).first
    project_name = project_path.split('\\').last
    result[normalize_project_name(project_name)] = project_path.downcase
    result
  end
end

#valid?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/vagrant/rubymine/rubymine_conf.rb', line 20

def valid?
  @root_path && File.exists?(config_gem_manager_path) && File.exists?(config_other_path)
end