Sha256: e053ddd3a5bfb973de6f6dba082c22e928f59993b30d17eafb243342b18b6469

Contents?: true

Size: 1.93 KB

Versions: 18

Compression:

Stored size: 1.93 KB

Contents

require 'autoproj/find_workspace'
require 'autoproj/ops/cached_env'
require 'autoproj/ops/which'
require 'autoproj/ops/watch'

module Autoproj
    module CLI
        class Exec
            def initialize
                @root_dir = Autoproj.find_workspace_dir
                if !@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

            def load_cached_env
                env = Ops.load_cached_env(@root_dir)
                return if !env

                Autobuild::Environment.
                    environment_from_export(env, ENV)
            end

            def run(cmd, *args, use_cached_env: Ops.watch_running?(@root_dir))
                if use_cached_env
                    env = load_cached_env
                end

                if !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)
                program = 
                    begin Ops.which(cmd, path_entries: path)
                    rescue ::Exception => e
                        require 'autoproj'
                        raise CLIInvalidArguments, e.message, e.backtrace
                    end

                begin
                    ::Process.exec(env, program, *args)
                rescue ::Exception => e
                    require 'autoproj'
                    raise CLIInvalidArguments, e.message, e.backtrace
                end
            end
        end
    end
end


Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
autoproj-2.9.0 lib/autoproj/cli/exec.rb
autoproj-2.8.8 lib/autoproj/cli/exec.rb
autoproj-2.8.7 lib/autoproj/cli/exec.rb
autoproj-2.8.6 lib/autoproj/cli/exec.rb
autoproj-2.8.5 lib/autoproj/cli/exec.rb
autoproj-2.8.5.b1 lib/autoproj/cli/exec.rb
autoproj-2.8.4 lib/autoproj/cli/exec.rb
autoproj-2.8.3 lib/autoproj/cli/exec.rb
autoproj-2.8.2 lib/autoproj/cli/exec.rb
autoproj-2.8.1 lib/autoproj/cli/exec.rb
autoproj-2.8.0 lib/autoproj/cli/exec.rb
autoproj-2.7.1 lib/autoproj/cli/exec.rb
autoproj-2.7.0 lib/autoproj/cli/exec.rb
autoproj-2.6.1 lib/autoproj/cli/exec.rb
autoproj-2.6.0 lib/autoproj/cli/exec.rb
autoproj-2.5.1 lib/autoproj/cli/exec.rb
autoproj-2.5.0 lib/autoproj/cli/exec.rb
autoproj-2.5.0.pre1 lib/autoproj/cli/exec.rb