Sha256: 5fcab76e8da8c9fb5d3a6fa07792594ff2a3c04cc287a615d419bdb7eda1034e

Contents?: true

Size: 1.88 KB

Versions: 9

Compression:

Stored size: 1.88 KB

Contents

module Rake
  module Funnel
    module Integration
      module TeamCity
        class NUnitPlugin
          ENV_VAR = 'teamcity.dotnet.nunitaddin'.freeze

          class << self
            def setup(nunit_executable)
              addins = get_addin_dir(ENV[ENV_VAR]) || return
              nunit, version = read_version(nunit_executable) || return

              addin_files = find_teamcity_addins(addins, version) || return

              copy_addin_files(nunit, addin_files, version)
            end

            private

            def get_addin_dir(source)
              return nil unless source

              File.expand_path(source)
            end

            def read_version(executable)
              nunit = Rake::Funnel::Support::Which.which(executable) || return
              version = Rake::Funnel::Support::BinaryVersionReader.read_from(nunit)

              unless version.file_version
                Rake.rake_output_message("Could read version from NUnit executable in #{nunit}")
                return
              end

              [nunit, version.file_version.split('.').take(3).join('.')]
            end

            def find_teamcity_addins(addins, version)
              addin_files = Dir.glob("#{addins}-#{version}.*")

              if addin_files.none?
                Rake.rake_output_message("Could not find TeamCity NUnit addin for version #{version} in #{addins}")
                return
              end

              addin_files
            end

            def copy_addin_files(nunit, addin_files, version)
              Rake.rake_output_message("Installing TeamCity NUnit addin for version #{version} in #{nunit}")

              destination = File.join(File.dirname(nunit), 'addins')

              RakeFileUtils.mkdir_p(destination)
              RakeFileUtils.cp(addin_files, destination, preserve: true)
            end
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rake-funnel-0.22.1 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.22.0 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.21.2 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.21.1 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.21.0 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.20.2 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.20.1 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.20.0 lib/rake/funnel/integration/teamcity/nunit_plugin.rb
rake-funnel-0.19.0 lib/rake/funnel/integration/teamcity/nunit_plugin.rb