mirror of
				https://github.com/Laupetin/OpenAssetTools.git
				synced 2025-10-31 02:26:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- Functions for linking projects
 | |
| Links = {}
 | |
| 
 | |
| function Links:create()
 | |
| 
 | |
|     list = {
 | |
|         stack = {},
 | |
|         dependencies = {}
 | |
|     }
 | |
| 
 | |
|     function list:linkto(project)
 | |
|         local projectName = project:name()
 | |
|         for i, dependency in ipairs(self.stack) do
 | |
|             if dependency == projectName then
 | |
|                 local errorMessage = "Circular dependency detected:\n"
 | |
|                 errorMessage = errorMessage .. projectName
 | |
|                 for j = i + 1, #self.stack do
 | |
|                     errorMessage = errorMessage .. " -> " .. self.stack[j]
 | |
|                 end
 | |
|                 errorMessage = errorMessage .. " -> " .. projectName
 | |
|                 premake.error(errorMessage)
 | |
|                 print(errorMessage)
 | |
|                 os.exit(1)
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         table.insert(self.stack, projectName)
 | |
|         project:link(self)
 | |
|         table.remove(self.stack)
 | |
|     end
 | |
| 
 | |
|     function list:add(name)
 | |
|         for i = 1, #self.dependencies do
 | |
|             if self.dependencies[i] == name then
 | |
|                 table.remove(self.dependencies, i)
 | |
|                 i = i - 1
 | |
|             end
 | |
|         end
 | |
|         table.insert(self.dependencies, name)
 | |
|     end
 | |
| 
 | |
|     function list:linkall()
 | |
|         for i, dependency in ipairs(self.dependencies) do
 | |
|             links(dependency)
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     return list
 | |
| end |