Sha256: 1785b424015262442f578033f53387f33e4b3a415036a16a28172a6a36934f06

Contents?: true

Size: 1.31 KB

Versions: 48

Compression:

Stored size: 1.31 KB

Contents

module Autoproj
    class ConfigError < RuntimeError
        attr_accessor :file
        def initialize(file = nil)
            super
            @file = file
        end
    end
    class InternalError < RuntimeError; end

    # Yields, and if the given block raises a ConfigError with no file assigned,
    # add that file to both the object and the exception message
    def self.in_file(file, exception_t = ConfigError)
        yield

    rescue exception_t => e
        if exception_t != ConfigError
            raise ConfigError.new(file), "in #{file}: #{e.message}", e.backtrace
        elsif !e.file
            e.file = file
            raise e, "in #{file}: #{e.message}", e.backtrace
        else
            raise e
        end
    end

    @post_import_blocks = Hash.new { |h, k| h[k] = Array.new }
    class << self
        attr_reader :post_import_blocks
    end

    def self.each_post_import_block(pkg, &block)
        @post_import_blocks[nil].each(&block)
        if @post_import_blocks.has_key?(pkg)
            @post_import_blocks[pkg].each(&block)
        end
    end

    def self.post_import(*packages, &block)
        if packages.empty?
            @post_import_blocks[nil] << block
        else
            packages.each do |pkg|
                @post_import_blocks[pkg] << block
            end
        end
    end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
autoproj-1.7.10 lib/autoproj/base.rb
autoproj-1.7.9 lib/autoproj/base.rb
autoproj-1.7.8 lib/autoproj/base.rb
autoproj-1.7.7 lib/autoproj/base.rb
autoproj-1.7.6 lib/autoproj/base.rb
autoproj-1.7.5 lib/autoproj/base.rb
autoproj-1.7.4 lib/autoproj/base.rb
autoproj-1.7.3 lib/autoproj/base.rb