class Autoproj::CLI::Which

Public Class Methods

new() click to toggle source
# File lib/autoproj/cli/which.rb, line 9
def initialize
    @root_dir = Autoproj.find_workspace_dir
    unless @root_dir
        require "autoproj/workspace"
        # Will do all sorts of error reporting,
        # or may be able to resolve
        @root_dir = Workspace.default.root_dir
    end
end

Public Instance Methods

load_cached_env() click to toggle source
# File lib/autoproj/cli/which.rb, line 19
def load_cached_env
    env = Ops.load_cached_env(@root_dir)
    return unless env

    Autobuild::Environment
        .environment_from_export(env, ENV)
end
run(cmd, use_cached_env: Ops.watch_running?(@root_dir)) click to toggle source
# File lib/autoproj/cli/which.rb, line 27
def run(cmd, use_cached_env: Ops.watch_running?(@root_dir))
    env = load_cached_env if use_cached_env

    unless env
        require "autoproj"
        require "autoproj/cli/inspection_tool"
        ws = Workspace.from_dir(@root_dir)
        loader = InspectionTool.new(ws)
        loader.initialize_and_load
        loader.finalize_setup(Array.new)
        env = ws.full_env.resolved_env
    end

    path = env["PATH"].split(File::PATH_SEPARATOR)
    puts Ops.which(cmd, path_entries: path)
rescue ExecutableNotFound => e
    require "autoproj" # make sure everything is available for error reporting
    raise CLIInvalidArguments, e.message, e.backtrace
rescue Exception
    require "autoproj" # make sure everything is available for error reporting
    raise
end