lib/physique/tool_locator.rb in physique-0.3.10 vs lib/physique/tool_locator.rb in physique-0.4.0

- old
+ new

@@ -1,50 +1,50 @@ -require 'map' -require 'albacore' - -module Physique - module ToolLocator - include Albacore::Logging - - @@registered_tools = {} - - def register_tool(name, executable, nuget_package = nil, nuget_path = nil) - end - - def lookup_tool(name, project, package_folder) - end - - # Allows you to locate a tool on disk given a file specification. For example... - # - # locate_tool 'C:/Program Files/Microsoft SQL Server/**/Tools/Binn/SQLCMD.EXE' - # - # The tool sorts any matching executables in descending order to that the most recent version is returned. To - # change this behavior call the method with the reverse option. - # - # locate_tool 'C:/path/to/**/tool.exe', find_latest: false - # - # Throws a ToolNotFoundError if no tool could be found. - def locate_tool(paths, options = {}) - # FileList only correctly handles forward-slashes, even on Windows - paths = paths.gsub('\\', '/') - - debug { "Extracting paths from the following pattern #{paths}" } - paths = FileList[paths] unless paths.respond_to?(:each) - - debug { "Attempting to locate tool in the following paths #{paths}" } - opts = Map.options(options) - opts = opts.apply :find_latest => true - paths = paths.collect { |p| which(p) }.compact.sort - paths = paths.reverse if opts[:find_latest] - tool = paths.first - - raise ToolNotFoundError, "Could not find tool in the following paths: \n #{paths}" if tool.nil? - tool - end - - def which(exe) - Albacore::CrossPlatformCmd.which(exe) ? exe : nil; - end - - class ToolNotFoundError < Exception; end - end -end \ No newline at end of file +require 'map' +require 'albacore' + +module Physique + module ToolLocator + include Albacore::Logging + + @@registered_tools = {} + + def register_tool(name, executable, nuget_package = nil, nuget_path = nil) + end + + def lookup_tool(name, project, package_folder) + end + + # Allows you to locate a tool on disk given a file specification. For example... + # + # locate_tool 'C:/Program Files/Microsoft SQL Server/**/Tools/Binn/SQLCMD.EXE' + # + # The tool sorts any matching executables in descending order to that the most recent version is returned. To + # change this behavior call the method with the reverse option. + # + # locate_tool 'C:/path/to/**/tool.exe', find_latest: false + # + # Throws a ToolNotFoundError if no tool could be found. + def locate_tool(paths, options = {}) + # FileList only correctly handles forward-slashes, even on Windows + raise ToolNotFoundError, 'No tool paths provided' unless paths + + debug { "Extracting paths from the following pattern #{paths}" } + paths = paths.gsub('\\', '/') + paths = FileList[paths] unless paths.respond_to?(:each) + + debug { "Attempting to locate tool in the following paths #{paths}" } + opts = Map.options(options).apply :find_latest => true + paths = paths.collect { |p| which(p) }.compact.sort + paths = paths.reverse if opts[:find_latest] + tool = paths.first + + raise ToolNotFoundError, "Could not find tool in the following paths: \n #{paths}" if tool.nil? + tool + end + + def which(exe) + Albacore::CrossPlatformCmd.which(exe) || File.exists?(exe) ? exe : nil; + end + + class ToolNotFoundError < Exception; end + end +end