class Buildr::IntellijIdea::IdeaProject

IdeaModule represents an .ipr file

Attributes

artifacts[RW]
configurations[RW]
data_sources[RW]
extra_modules[RW]
jdk_version[W]
version[W]

Public Class Methods

new(buildr_project) click to toggle source
Calls superclass method Buildr::IntellijIdea::IdeaFile.new
# File lib/buildr/ide/idea.rb, line 698
def initialize(buildr_project)
  super()
  @buildr_project = buildr_project
  @extra_modules = []
  @artifacts = []
  @data_sources = []
  @configurations = []
end

Public Instance Methods

add_artifact(name, type, build_on_make = false) { |xml| ... } click to toggle source
# File lib/buildr/ide/idea.rb, line 715
def add_artifact(name, type, build_on_make = false)
  add_to_composite_component(self.artifacts) do |xml|
    xml.artifact(:name => name, :type => type, 'build-on-make' => build_on_make) do |xml|
      yield xml if block_given?
    end
  end
end
add_configuration(name, type, factory_name, default = false, options = {}) { |xml| ... } click to toggle source
# File lib/buildr/ide/idea.rb, line 723
def add_configuration(name, type, factory_name, default = false, options = {})
  add_to_composite_component(self.configurations) do |xml|
    params = options.dup
    params[:type] = type
    params[:factoryName] = factory_name
    params[:name] = name unless default
    params[:default] = true if default
    xml.configuration(params) do |xml|
      yield xml if block_given?
    end
  end
end
add_data_source(name, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 799
def add_data_source(name, options = {})
  add_to_composite_component(self.data_sources) do |xml|
    data_source_options = {
      :source => 'LOCAL',
      :name => name,
      :uuid => Buildr::Util.uuid
    }
    classpath = options[:classpath] || []
    xml.tag!('data-source', data_source_options) do |xml|
      xml.tag!('synchronize', (options[:synchronize]||'true'))
      xml.tag!('jdbc-driver', options[:driver]) if options[:driver]
      xml.tag!('jdbc-url', options[:url]) if options[:url]
      xml.tag!('user-name', options[:username]) if options[:username]
      xml.tag!('user-password', encrypt(options[:password])) if options[:password]
      xml.tag!('schema-pattern', options[:schema_pattern]) if options[:schema_pattern]
      xml.tag!('default-schemas', options[:default_schemas]) if options[:default_schemas]
      xml.tag!('table-pattern', options[:table_pattern]) if options[:table_pattern]
      xml.tag!('default-dialect', options[:dialect]) if options[:dialect]

      xml.libraries do |xml|
        classpath.each do |classpath_element|
          a = Buildr.artifact(classpath_element)
          a.invoke
          xml.library do |xml|
            xml.tag!('url', resolve_path(a.to_s))
          end
        end
      end if classpath.size > 0
    end
  end
end
add_default_configuration(type, factory_name) { |xml| ... } click to toggle source
# File lib/buildr/ide/idea.rb, line 736
def add_default_configuration(type, factory_name)
  add_configuration(nil, type, factory_name, true) do |xml|
    yield xml if block_given?
  end
end
add_default_testng_configuration(options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 1155
def add_default_testng_configuration(options = {})
  jvm_args = options[:jvm_args] || '-ea'
  dir = options[:dir] || '$PROJECT_DIR$'

  add_default_configuration('TestNG', 'TestNG') do |xml|
    xml.extension(:name => 'coverage', :enabled => 'false', :merge => 'false', :sample_coverage => 'true', :runner => 'idea')
    xml.module(:name => '')
    xml.option(:name => 'ALTERNATIVE_JRE_PATH_ENABLED', :value => 'false')
    xml.option(:name => 'ALTERNATIVE_JRE_PATH')
    xml.option(:name => 'SUITE_NAME')
    xml.option(:name => 'PACKAGE_NAME')
    xml.option(:name => 'MAIN_CLASS_NAME')
    xml.option(:name => 'METHOD_NAME')
    xml.option(:name => 'GROUP_NAME')
    xml.option(:name => 'TEST_OBJECT', :value => 'CLASS')
    xml.option(:name => 'VM_PARAMETERS', :value => jvm_args)
    xml.option(:name => 'PARAMETERS')
    xml.option(:name => 'WORKING_DIRECTORY', :value => dir)
    xml.option(:name => 'OUTPUT_DIRECTORY')
    xml.option(:name => 'ANNOTATION_TYPE')
    xml.option(:name => 'ENV_VARIABLES')
    xml.option(:name => 'PASS_PARENT_ENVS', :value => 'true')
    xml.option(:name => 'TEST_SEARCH_SCOPE') do |opt|
      opt.value(:defaultName => 'moduleWithDependencies')
    end
    xml.option(:name => 'USE_DEFAULT_REPORTERS', :value => 'false')
    xml.option(:name => 'PROPERTIES_FILE')
    xml.envs
    xml.properties
    xml.listeners
    xml.method
  end
end
add_exploded_ear_artifact(project, options ={}) click to toggle source
# File lib/buildr/ide/idea.rb, line 870
def add_exploded_ear_artifact(project, options ={})
  artifact_name = to_artifact_name(project, options)

  add_artifact(artifact_name, 'exploded-ear', build_on_make(options)) do |xml|
    dependencies = (options[:dependencies] || ([project] + project.compile.dependencies)).flatten
    libraries, projects = partition_dependencies(dependencies)

    emit_output_path(xml, artifact_name, options)
    xml.root :id => 'root' do
      emit_module_output(xml, projects)
      xml.element :id => 'directory', :name => 'lib' do
        emit_libraries(xml, libraries)
      end
    end
  end
end
add_exploded_ejb_artifact(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 903
def add_exploded_ejb_artifact(project, options = {})
  artifact_name = to_artifact_name(project, options)

  add_artifact(artifact_name, 'exploded-ejb', build_on_make(options)) do |xml|
    dependencies = (options[:dependencies] || [project]).flatten
    libraries, projects = partition_dependencies(dependencies)
    raise "Unable to add non-project dependencies (#{libraries.inspect}) to ejb artifact" if libraries.size > 0

    emit_output_path(xml, artifact_name, options)
    xml.root :id => 'root' do
      artifact_content(xml, project, projects, options)
    end
  end
end
add_exploded_war_artifact(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 831
def add_exploded_war_artifact(project, options = {})
  artifact_name = to_artifact_name(project, options)
  artifacts = options[:artifacts] || []

  add_artifact(artifact_name, 'exploded-war', build_on_make(options)) do |xml|
    dependencies = (options[:dependencies] || ([project] + project.compile.dependencies)).flatten
    libraries, projects = partition_dependencies(dependencies)

    emit_output_path(xml, artifact_name, options)
    xml.root :id => 'root' do
      xml.element :id => 'directory', :name => 'WEB-INF' do
        xml.element :id => 'directory', :name => 'classes' do
          artifact_content(xml, project, projects, options)
        end
        xml.element :id => 'directory', :name => 'lib' do
          emit_libraries(xml, libraries)
          emit_jar_artifacts(xml, artifacts)
        end
      end

      if options[:enable_war].nil? || options[:enable_war] || (options[:war_module_names] && options[:war_module_names].size > 0)
        module_names = options[:war_module_names] || [project.iml.name]
        module_names.each do |module_name|
          facet_name = options[:war_facet_name] || 'Web'
          xml.element :id => 'javaee-facet-resources', :facet => "#{module_name}/web/#{facet_name}"
        end
      end

      if options[:enable_gwt] || (options[:gwt_module_names] && options[:gwt_module_names].size > 0)
        module_names = options[:gwt_module_names] || [project.iml.name]
        module_names.each do |module_name|
          facet_name = options[:gwt_facet_name] || 'GWT'
          xml.element :id => 'gwt-compiler-output', :facet => "#{module_name}/gwt/#{facet_name}"
        end
      end
    end
  end
end
add_glassfish_configuration(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 1017
def add_glassfish_configuration(project, options = {})
  artifact_name = options[:name] || project.iml.id
  version = options[:version] || '4.1.0'
  server_name = options[:server_name] || "GlassFish #{version}"
  configuration_name = options[:configuration_name] || server_name
  domain_name = options[:domain] || project.iml.id
  domain_port = options[:port] || '9009'
  packaged = options[:packaged] || {}
  exploded = options[:exploded] || {}

  add_to_composite_component(self.configurations) do |xml|
    xml.configuration(:name => configuration_name, :type => 'GlassfishConfiguration', :factoryName => 'Local', :default => false, :APPLICATION_SERVER_NAME => server_name) do |xml|
      xml.option(:name => 'OPEN_IN_BROWSER', :value => 'false')
      xml.option(:name => 'UPDATING_POLICY', :value => 'restart-server')

      xml.deployment do |deployment|
        packaged.each do |name, deployable|
          artifact = Buildr.artifact(deployable)
          artifact.invoke
          deployment.file(:path => resolve_path(artifact.to_s)) do |file|
            file.settings do |settings|
              settings.option(:name => 'contextRoot', :value => "/#{name}")
              settings.option(:name => 'defaultContextRoot', :value => 'false')
            end
          end
        end
        exploded.each do |deployable_name|
          deployment.artifact(:name => deployable_name) do |artifact|
            artifact.settings
          end
        end
      end

      xml.tag! 'server-settings' do |server_settings|
        server_settings.option(:name => 'VIRTUAL_SERVER')
        server_settings.option(:name => 'DOMAIN', :value => domain_name.to_s)
        server_settings.option(:name => 'PRESERVE', :value => 'false')
        server_settings.option(:name => 'USERNAME', :value => 'admin')
        server_settings.option(:name => 'PASSWORD', :value => '')
      end

      xml.predefined_log_file(:id => 'GlassFish', :enabled => 'true')

      xml.extension(:name => 'coverage', :enabled => 'false', :merge => 'false', :sample_coverage => 'true', :runner => 'idea')

      xml.RunnerSettings(:RunnerId => 'Cover')

      add_glassfish_runner_settings(xml, 'Cover')
      add_glassfish_configuration_wrapper(xml, 'Cover')

      add_glassfish_runner_settings(xml, 'Debug', {
        :DEBUG_PORT => domain_port.to_s,
        :TRANSPORT => '0',
        :LOCAL => 'true',
      })
      add_glassfish_configuration_wrapper(xml, 'Debug')

      add_glassfish_runner_settings(xml, 'Run')
      add_glassfish_configuration_wrapper(xml, 'Run')

      xml.method do |method|
        method.option(:name => 'BuildArtifacts', :enabled => 'true') do |option|
          option.artifact(:name => artifact_name)
        end
      end
    end
  end
end
add_glassfish_remote_configuration(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 1086
def add_glassfish_remote_configuration(project, options = {})
  artifact_name = options[:name] || project.iml.id
  version = options[:version] || '4.1.0'
  server_name = options[:server_name] || "GlassFish #{version}"
  configuration_name = options[:configuration_name] || "Remote #{server_name}"
  domain_port = options[:port] || '9009'
  packaged = options[:packaged] || {}
  exploded = options[:exploded] || {}

  add_to_composite_component(self.configurations) do |xml|
    xml.configuration(:name => configuration_name, :type => 'GlassfishConfiguration', :factoryName => 'Remote', :default => false, :APPLICATION_SERVER_NAME => server_name) do |xml|
      xml.option(:name => 'LOCAL', :value => 'false')
      xml.option(:name => 'OPEN_IN_BROWSER', :value => 'false')
      xml.option(:name => 'UPDATING_POLICY', :value => 'hot-swap-classes')

      xml.deployment do |deployment|
        packaged.each do |name, deployable|
          artifact = Buildr.artifact(deployable)
          artifact.invoke
          deployment.file(:path => resolve_path(artifact.to_s)) do |file|
            file.settings do |settings|
              settings.option(:name => 'contextRoot', :value => "/#{name}")
              settings.option(:name => 'defaultContextRoot', :value => 'false')
            end
          end
        end
        exploded.each do |deployable_name|
          deployment.artifact(:name => deployable_name) do |artifact|
            artifact.settings
          end
        end
      end

      xml.tag! 'server-settings' do |server_settings|
        server_settings.option(:name => 'VIRTUAL_SERVER')
        server_settings.data do |data|
          data.option(:name => 'adminServerHost', :value => '')
          data.option(:name => 'clusterName', :value => '')
          data.option(:name => 'stagingRemotePath', :value => '')
          data.option(:name => 'transportHostId')
          data.option(:name => 'transportStagingTarget') do |option|
            option.TransportTarget do |tt|
              tt.option(:name => 'id', :value => 'X')
            end
          end
        end
      end

      xml.predefined_log_file(:id => 'GlassFish', :enabled => 'true')

      add_glassfish_runner_settings(xml, 'Debug', {
                                         :DEBUG_PORT => domain_port.to_s,
                                         :TRANSPORT => '0',
                                         :LOCAL => 'false',
                                       })
      add_glassfish_configuration_wrapper(xml, 'Debug')

      add_glassfish_runner_settings(xml, 'Run')
      add_glassfish_configuration_wrapper(xml, 'Run')

      xml.method do |method|
        method.option(:name => 'BuildArtifacts', :enabled => 'true') do |option|
          option.artifact(:name => artifact_name)
        end
      end
    end
  end
end
add_gwt_configuration(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 982
def add_gwt_configuration(project, options = {})
  launch_page = options[:launch_page]
  name = options[:name] || (launch_page ? "Run #{launch_page}" : "Run #{project.name} DevMode")
  shell_parameters = options[:shell_parameters]
  vm_parameters = options[:vm_parameters] || '-Xmx512m'
  singleton = options[:singleton].nil? ? true : !!options[:singleton]
  super_dev = options[:super_dev].nil? ? true : !!options[:super_dev]
  gwt_module = options[:gwt_module]

  start_javascript_debugger = options[:start_javascript_debugger].nil? ? true : !!options[:start_javascript_debugger]

  add_configuration(name, 'GWT.ConfigurationType', 'GWT Configuration', false, :singleton => singleton) do |xml|
    xml.module(:name => project.iml.name)

    xml.option(:name => 'VM_PARAMETERS', :value => vm_parameters)
    xml.option(:name => 'RUN_PAGE', :value => launch_page) if launch_page
    xml.option(:name => 'GWT_MODULE', :value => gwt_module) if gwt_module

    xml.option(:name => 'START_JAVASCRIPT_DEBUGGER', :value => start_javascript_debugger)
    xml.option(:name => 'USE_SUPER_DEV_MODE', :value => super_dev)
    xml.option(:name => 'SHELL_PARAMETERS', :value => shell_parameters) if shell_parameters

    xml.RunnerSettings(:RunnerId => 'Debug') do |xml|
      xml.option(:name => 'DEBUG_PORT', :value => '')
      xml.option(:name => 'TRANSPORT', :value => 0)
      xml.option(:name => 'LOCAL', :value => true)
    end

    xml.RunnerSettings(:RunnerId => 'Run')
    xml.ConfigurationWrapper(:RunnerId => 'Run')
    xml.ConfigurationWrapper(:RunnerId => 'Debug')
    xml.method()
  end
end
add_jar_artifact(project, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 887
def add_jar_artifact(project, options = {})
  artifact_name = to_artifact_name(project, options)

  dependencies = (options[:dependencies] || [project]).flatten
  libraries, projects = partition_dependencies(dependencies)
  raise "Unable to add non-project dependencies (#{libraries.inspect}) to jar artifact" if libraries.size > 0

  jar_name = "#{artifact_name}.jar"
  add_artifact(jar_name, 'jar', build_on_make(options)) do |xml|
    emit_output_path(xml, artifact_name, options)
    xml.root(:id => 'archive', :name => jar_name) do
      artifact_content(xml, project, projects, options)
    end
  end
end
add_java_configuration(project, classname, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 918
def add_java_configuration(project, classname, options = {})
  args = options[:args] || ''
  dir = options[:dir] || 'file://$PROJECT_DIR$/'
  debug_port = options[:debug_port] || 2599
  module_name = options[:module_name] || project.iml.name
  jvm_args = options[:jvm_args] || ''
  name = options[:name] || classname

  add_to_composite_component(self.configurations) do |xml|
    xml.configuration(:name => name, :type => 'Application', :factoryName => 'Application', :default => !!options[:default]) do |xml|
      xml.extension(:name => 'coverage', :enabled => 'false', :merge => 'false', :sample_coverage => 'true', :runner => 'idea')
      xml.option(:name => 'MAIN_CLASS_NAME', :value => classname)
      xml.option(:name => 'VM_PARAMETERS', :value => jvm_args)
      xml.option(:name => 'PROGRAM_PARAMETERS', :value => args)
      xml.option(:name => 'WORKING_DIRECTORY', :value => dir)
      xml.option(:name => 'ALTERNATIVE_JRE_PATH_ENABLED', :value => 'false')
      xml.option(:name => 'ALTERNATIVE_JRE_PATH', :value => '')
      xml.option(:name => 'ENABLE_SWING_INSPECTOR', :value => 'false')
      xml.option(:name => 'ENV_VARIABLES')
      xml.option(:name => 'PASS_PARENT_ENVS', :value => 'true')
      xml.module(:name => module_name)
      xml.envs
      xml.RunnerSettings(:RunnerId => 'Debug') do |xml|
        xml.option(:name => 'DEBUG_PORT', :value => debug_port.to_s)
        xml.option(:name => 'TRANSPORT', :value => '0')
        xml.option(:name => 'LOCAL', :value => 'true')
      end
      xml.RunnerSettings(:RunnerId => 'Run')
      xml.ConfigurationWrapper(:RunnerId => 'Debug')
      xml.ConfigurationWrapper(:RunnerId => 'Run')
      xml.method
    end
  end
end
add_postgres_data_source(name, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 759
def add_postgres_data_source(name, options = {})
  if options[:url].nil? && options[:database]
   default_url = "jdbc:postgresql://#{(options[:host] || '127.0.0.1')}:#{(options[:port] || '5432')}/#{options[:database]}"
  end

  params = {
    :driver => 'org.postgresql.Driver',
    :url => default_url,
    :username => ENV['USER'],
    :dialect => 'PostgreSQL',
    :classpath => ['org.postgresql:postgresql:jar:9.2-1003-jdbc4']
  }.merge(options)
  add_data_source(name, params)
end
add_ruby_script_configuration(project, script, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 953
def add_ruby_script_configuration(project, script, options = {})
  args = options[:args] || ''
  path = ::Buildr::Util.relative_path(File.expand_path(script), project.base_dir)
  name = options[:name] || File.basename(script)
  dir = options[:dir] || "$MODULE_DIR$/#{path}"
  sdk = options[:sdk] || 'rbenv: ' + (IO.read(File.dirname(__FILE__) + '/../.ruby-version').trim rescue "jruby-#{RUBY_VERSION}")

  add_to_composite_component(self.configurations) do |xml|
    xml.configuration(:name => name, :type => 'RubyRunConfigurationType', :factoryName => 'Ruby', :default => !!options[:default]) do |xml|

      xml.module(:name => project.iml.name)
      xml.RUBY_RUN_CONFIG(:NAME => 'RUBY_ARGS', :VALUE => '-e STDOUT.sync=true;STDERR.sync=true;load($0=ARGV.shift)')
      xml.RUBY_RUN_CONFIG(:NAME => 'WORK DIR', :VALUE => dir)
      xml.RUBY_RUN_CONFIG(:NAME => 'SHOULD_USE_SDK', :VALUE => 'true')
      xml.RUBY_RUN_CONFIG(:NAME => 'ALTERN_SDK_NAME', :VALUE => sdk)
      xml.RUBY_RUN_CONFIG(:NAME => 'myPassParentEnvs', :VALUE => 'true')

      xml.envs
      xml.EXTENSION(:ID => 'BundlerRunConfigurationExtension', :bundleExecEnabled => 'false')
      xml.EXTENSION(:ID => 'JRubyRunConfigurationExtension')

      xml.RUBY_RUN_CONFIG(:NAME => 'SCRIPT_PATH', :VALUE => script)
      xml.RUBY_RUN_CONFIG(:NAME => 'SCRIPT_ARGS', :VALUE => args)
      xml.RunnerSettings(:RunnerId => 'RubyDebugRunner')
      xml.ConfigurationWrapper(:RunnerId => 'RubyDebugRunner')
    end
  end
end
add_sql_server_data_source(name, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 774
def add_sql_server_data_source(name, options = {})
  default_url = nil
  if options[:url].nil? && options[:database]
    default_url = "jdbc:jtds:sqlserver://#{(options[:host] || '127.0.0.1')}:#{(options[:port] || '1433')}/#{options[:database]}"
  end

  params = {
    :driver => 'net.sourceforge.jtds.jdbc.Driver',
    :url => default_url,
    :username => ENV['USER'],
    :dialect => 'TSQL',
    :classpath => ['net.sourceforge.jtds:jtds:jar:1.2.7']
  }.merge(options)

  if params[:url]
    if /jdbc\:jtds\:sqlserver\:\/\/[^:\]+(\:\d+)?\/([^;]*)(\;.*)?/ =~ params[:url]
      database_name = $2
      params[:schema_pattern] = "#{database_name}.*"
      params[:default_schemas] = "#{database_name}.*"
    end
  end

  add_data_source(name, params)
end
jdk_version() click to toggle source
# File lib/buildr/ide/idea.rb, line 711
def jdk_version
  @jdk_version ||= buildr_project.compile.options.source || '1.7'
end
mssql_dialect_mapping() click to toggle source
# File lib/buildr/ide/idea.rb, line 742
def mssql_dialect_mapping
  sql_dialect_mappings(buildr_project.base_dir => 'TSQL')
end
postgres_dialect_mapping() click to toggle source
# File lib/buildr/ide/idea.rb, line 746
def postgres_dialect_mapping
  sql_dialect_mappings(buildr_project.base_dir => 'PostgreSQL')
end
sql_dialect_mappings(mappings) click to toggle source
# File lib/buildr/ide/idea.rb, line 750
def sql_dialect_mappings(mappings)
  add_component('SqlDialectMappings') do |component|
    mappings.each_pair do |path, dialect|
      file_path = file_path(path).gsub(/\/.$/, '')
      component.file :url => file_path, :dialect => dialect
    end
  end
end
version() click to toggle source
# File lib/buildr/ide/idea.rb, line 707
def version
  @version || '13'
end

Protected Instance Methods

add_glassfish_configuration_wrapper(xml, name) click to toggle source
# File lib/buildr/ide/idea.rb, line 1199
def add_glassfish_configuration_wrapper(xml, name)
  xml.ConfigurationWrapper(:VM_VAR => 'JAVA_OPTS', :RunnerId => name.to_s) do |configuration_wrapper|
    configuration_wrapper.option(:name => 'USE_ENV_VARIABLES', :value => 'true')
    configuration_wrapper.STARTUP do |startup|
      startup.option(:name => 'USE_DEFAULT', :value => 'true')
      startup.option(:name => 'SCRIPT', :value => '')
      startup.option(:name => 'VM_PARAMETERS', :value => '')
      startup.option(:name => 'PROGRAM_PARAMETERS', :value => '')
    end
    configuration_wrapper.SHUTDOWN do |shutdown|
      shutdown.option(:name => 'USE_DEFAULT', :value => 'true')
      shutdown.option(:name => 'SCRIPT', :value => '')
      shutdown.option(:name => 'VM_PARAMETERS', :value => '')
      shutdown.option(:name => 'PROGRAM_PARAMETERS', :value => '')
    end
  end
end
add_glassfish_runner_settings(xml, name, options = {}) click to toggle source
# File lib/buildr/ide/idea.rb, line 1191
def add_glassfish_runner_settings(xml, name, options = {})
  xml.RunnerSettings(:RunnerId => name.to_s) do |runner_settings|
    options.each do |key, value|
      runner_settings.option(:name => key.to_s, :value => value.to_s)
    end
  end
end
artifact_content(xml, project, projects, options) click to toggle source
# File lib/buildr/ide/idea.rb, line 1217
def artifact_content(xml, project, projects, options)
  emit_module_output(xml, projects)
  emit_jpa_descriptors(xml, project, options)
  emit_ejb_descriptors(xml, project, options)
end
artifacts_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1335
def artifacts_component
  create_composite_component('ArtifactManager', {}, self.artifacts)
end
base_document() click to toggle source
# File lib/buildr/ide/idea.rb, line 1227
def base_document
  target = StringIO.new
  Builder::XmlMarkup.new(:target => target).project(:version => '4')
  Buildr::IntellijIdea.new_document(target.string)
end
configurations_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1339
def configurations_component
  create_composite_component('ProjectRunConfigurationManager', {}, self.configurations)
end
data_sources_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1331
def data_sources_component
  create_composite_component('DataSourceManagerImpl', {:format => 'xml', :hash => '3208837817'}, self.data_sources)
end
default_components() click to toggle source
# File lib/buildr/ide/idea.rb, line 1233
def default_components
  [
    lambda { modules_component },
    vcs_component,
    artifacts_component,
    lambda { data_sources_component },
    configurations_component,
    lambda { framework_detection_exclusion_component }
  ]
end
extension() click to toggle source
# File lib/buildr/ide/idea.rb, line 1223
def extension
  'ipr'
end
framework_detection_exclusion_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1244
def framework_detection_exclusion_component
  create_component('FrameworkDetectionExcludesConfiguration') do |xml|
    xml.file :url => file_path(buildr_project._(:artifacts))
  end
end
initial_components() click to toggle source
# File lib/buildr/ide/idea.rb, line 1250
def initial_components
  [
    lambda { project_root_manager_component },
    lambda { project_details_component }
  ]
end
modules_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1276
def modules_component
  create_component('ProjectModuleManager') do |xml|
    xml.modules do
      buildr_project.projects.select { |subp| subp.iml? }.each do |subproject|
        module_path = subproject.base_dir.gsub(/^#{buildr_project.base_dir}\//, '')
        path = "#{module_path}/#{subproject.iml.name}.iml"
        attribs = {:fileurl => "file://$PROJECT_DIR$/#{path}", :filepath => "$PROJECT_DIR$/#{path}"}
        if subproject.iml.group == true
          attribs[:group] = subproject.parent.name.gsub(':', '/')
        elsif !subproject.iml.group.nil?
          attribs[:group] = subproject.iml.group.to_s
        end
        xml.module attribs
      end
      self.extra_modules.each do |iml_file|
        xml.module :fileurl => "file://$PROJECT_DIR$/#{iml_file}",
                   :filepath => "$PROJECT_DIR$/#{iml_file}"
      end
      if buildr_project.iml?
        xml.module :fileurl => "file://$PROJECT_DIR$/#{buildr_project.iml.name}.iml",
                   :filepath => "$PROJECT_DIR$/#{buildr_project.iml.name}.iml"
      end
    end
  end
end
project_details_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1270
def project_details_component
  create_component('ProjectDetails') do |xml|
    xml.option('name' => 'projectName', 'value' => self.name)
  end
end
project_root_manager_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1257
def project_root_manager_component
  attribs = {}
  attribs['version'] = '2'
  attribs['languageLevel'] = "JDK_#{self.jdk_version.gsub('.', '_')}"
  attribs['assert-keyword'] = 'true'
  attribs['jdk-15'] = (jdk_version >= '1.5').to_s
  attribs['project-jdk-name'] = self.jdk_version
  attribs['project-jdk-type'] = 'JavaSDK'
  create_component('ProjectRootManager', attribs) do |xml|
    xml.output('url' => file_path(buildr_project._(:target, :idea, :project_out)))
  end
end
resolve_path(path) click to toggle source
# File lib/buildr/ide/idea.rb, line 1343
def resolve_path(path)
  resolve_path_from_base(path, '$PROJECT_DIR$')
end
vcs_component() click to toggle source
# File lib/buildr/ide/idea.rb, line 1302
def vcs_component
  project_directories = buildr_project.projects.select { |p| p.iml? }.collect { |p| p.base_dir }
  project_directories << buildr_project.base_dir
  # Guess the iml file is in the same dir as base dir
  project_directories += self.extra_modules.collect { |p| File.dirname(p) }

  project_directories = project_directories.sort.uniq

  mappings = {}

  project_directories.each do |dir|
    if File.directory?("#{dir}/.git")
      mappings[dir] = 'Git'
    elsif File.directory?("#{dir}/.svn")
      mappings[dir] = 'svn'
    end
  end

  return nil if 0 == mappings.size

  create_component('VcsDirectoryMappings') do |xml|
    mappings.each_pair do |dir, vcs_type|
      resolved_dir = resolve_path(dir)
      mapped_dir = resolved_dir == '$PROJECT_DIR$/.' ? buildr_project.base_dir : resolved_dir
      xml.mapping :directory => mapped_dir, :vcs => vcs_type
    end
  end
end