rakelib/rbspec.rb
changeset 59 9099e2455d9c
parent 57 405eb7c27b31
child 67 75b6eb7b781c
--- a/rakelib/rbspec.rb	Fri Oct 21 21:50:00 2016 +0100
+++ b/rakelib/rbspec.rb	Sun Oct 23 22:49:57 2016 +0100
@@ -63,7 +63,7 @@
 
     NO_VALUE = Object.new()
     attr_accessor  :parent
-    attr_reader :last_repository
+    attr_reader :last_repository_name
 
     
 
@@ -120,7 +120,7 @@
     PROJECTS = {}
 
     attr_accessor :repositories, :packages, :tasks, :application
-    attr_accessor :last_repository
+    attr_accessor :last_repository_name
 
     def self.named?(name)
       if (PROJECTS.include?(name)) 
@@ -161,7 +161,7 @@
       @packages = []
       @application = nil
       @tasks = []
-      @last_repository = nil
+      @last_repository_name = nil
     end
 
     def clone()
@@ -184,7 +184,7 @@
       def initialize(importee, imported)
         @importee = importee
         @imported = imported#as symbol!        
-        @last_repository = importee.last_repository
+        @last_repository_name = importee.last_repository_name
       end
 
       def apply()
@@ -194,8 +194,8 @@
 
         #merge packages
         begin
-          importee_last_repository = @importee.last_repository
-          @importee.last_repository = @last_repository
+          importee_last_repository_name = @importee.last_repository_name
+          @importee.last_repository_name = @last_repository_name
           p.packages.each do | pkg |
             if @importee.package? pkg.name
               @importee.package(pkg.name).merge(pkg)
@@ -204,7 +204,7 @@
             end
             pkg = @importee.package(pkg.name)
             if (not pkg.repository and @last_repository_name)
-              pkg.set_property(:repository, @last_repository_name)
+              pkg.set_property(:repository, @last_repository_name_name)
             end
           end
           app = p.application 
@@ -220,7 +220,7 @@
             end
           end
         ensure
-          @importee.last_repository = importee_last_repository 
+          @importee.last_repository_name = importee_last_repository_name 
         end
             
         p_tasks = p.tasks.collect { | t | t.clone }
@@ -238,20 +238,14 @@
     def apply_imports() 
       @imports.each do | import |
         import.apply()
-      end
+      end      
     end
 
     def repository(name)            
       if block_given? then
         raise Exception.new("Defining repository within package is no longer supported")
       end
-      r = Repository::find(name)
-      if (r == nil)
-        raise Exception.new("Undefined repository '#{name}'")
-      end      
-      
-      @last_repository = r
-      return r
+      @last_repository_name = name      
     end
 
     def package?(name)
@@ -268,8 +262,8 @@
         @packages.push(p)
       end      
       p._build(properties, &builder)
-      if (not p.repository and @last_repository)
-        p.repository = @last_repository.name
+      if (not p.repository and @last_repository_name)
+        p.repository = @last_repository_name
       end
       return p
     end
@@ -282,8 +276,8 @@
         @application = p
       end      
       p._build(properties, &builder)
-      if (not p.repository and @last_repository)
-        p.repository = @last_repository.name
+      if (not p.repository and @last_repository_name)
+        p.repository = @last_repository_name
       end
       return p
     end
@@ -360,7 +354,7 @@
     property :stc_flags, :default => '+optinline +optinline2 -optContext', :class => String    
     
     def _separator()
-      return (self.parent.repository(self.repository)).separator
+      return (Repository::find(self.repository)).separator
     end
     
     def name_components()
@@ -501,6 +495,7 @@
   class Repository < ConfigurationObject
     property :type, :class => Symbol
     property :url
+    property :mirror
     property :separator, :default => '.'