Changed codebase to be foldered (breaking compiler's conventions)
I now generate the layout the compiler wants, eventually I'll just have a custom policy so that the compiler can accept the non-idiomatic layout See scripts/build.ps1 & gen_staged_compiler_codebase.ps1 for how this is handled.
This commit is contained in:
		| @@ -117,13 +117,18 @@ push-location $path_root | ||||
|  | ||||
| 	function build-prototype | ||||
| 	{ | ||||
| 		push-location $path_code | ||||
| 		$gen_staged_compiler_codebase = join-path $PSScriptRoot 'gen_staged_compiler_codebase.ps1' | ||||
| 		$path_code_compiler_staged    = join-path $path_root 'code_compiler_staged' | ||||
|  | ||||
| 		. $gen_staged_compiler_codebase | ||||
|  | ||||
| 		push-location $path_code_compiler_staged | ||||
| 		$project_name = 'sectr' | ||||
|  | ||||
| 		write-host "`nBuilding Sectr Prototype`n" | ||||
|  | ||||
| 		$module_host  = join-path $path_code 'host' | ||||
| 		$module_sectr = $path_code | ||||
| 		$module_host  = join-path $path_code_compiler_staged 'host' | ||||
| 		$module_sectr = $path_code_compiler_staged | ||||
|  | ||||
| 		$pkg_collection_thirdparty = 'thirdparty=' + $path_thirdparty | ||||
|  | ||||
| @@ -273,6 +278,8 @@ push-location $path_root | ||||
| 		build-host | ||||
|  | ||||
| 		Pop-Location # path_code | ||||
|  | ||||
| 		if ( test-path $path_code_compiler_staged ) { Remove-Item -Path $path_code_compiler_staged -Force -Recurse } | ||||
| 	} | ||||
| 	build-prototype | ||||
| pop-location # path_root | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| cls | ||||
|  | ||||
| $path_root  = git rev-parse --show-toplevel | ||||
| $path_code  = join-path $path_root 'code' | ||||
| $path_build = join-path $path_root 'build' | ||||
| $path_root                 = git rev-parse --show-toplevel | ||||
| $path_code                 = join-path $path_root 'code' | ||||
| $path_code_compiler_staged = Join-Path $path_root 'code_compiler_staged' | ||||
| $path_build                = join-path $path_root 'build' | ||||
|  | ||||
| if ( test-path $path_build ) { | ||||
| 	Remove-Item $path_build -Verbose -Force -Recurse | ||||
| } | ||||
| if ( test-path $path_build )               { Remove-Item $path_build -Verbose -Force -Recurse } | ||||
| if ( test-path $path_code_compiler_staged) { Remove-Item $path_code_compiler_staged -Verbose -Force -Recurse } | ||||
|   | ||||
							
								
								
									
										67
									
								
								scripts/gen_staged_compiler_codebase.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								scripts/gen_staged_compiler_codebase.ps1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| cls | ||||
| Write-Host "Reverse Build.ps1" | ||||
|  | ||||
| $path_root                 = git rev-parse --show-toplevel | ||||
| $path_code                 = Join-Path $path_root 'code' | ||||
| $path_code_compiler_staged = Join-Path $path_root 'code_compiler_staged' | ||||
|  | ||||
| if (Test-Path $path_code_compiler_staged) { | ||||
|     Remove-Item -Path $path_code_compiler_staged -Recurse -Force -ErrorAction Ignore | ||||
| } | ||||
| New-Item -ItemType Directory -Path $path_code_compiler_staged | ||||
|  | ||||
| $whitelist_package = 'sectr' | ||||
|  | ||||
| $files = Get-ChildItem -Path $path_code -File -Recurse | ||||
| foreach ($file in $files) | ||||
| { | ||||
|     # Read the file line by line to determine the package name, ignoring comments | ||||
|     $packageName = $null | ||||
|     Get-Content -Path $file.FullName | ForEach-Object { | ||||
|         if ($_ -notmatch '^\s*//') | ||||
| 		{ | ||||
|             if ($_ -match '^package\s+(\w+)$') { | ||||
|                 $packageName = $Matches[1] | ||||
|                 return $false | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if ($packageName) | ||||
| 	{ | ||||
|         # Calculate relative path and prepend directory names to the file name | ||||
|         $relativePath = $file.FullName.Substring($path_code.Length + 1) | ||||
|         $relativeDir = Split-Path $relativePath -Parent | ||||
|         $relativeDir = $relativeDir.Replace('\', '_').Replace('/', '_') | ||||
|  | ||||
|         if ($relativeDir -ne '') { | ||||
|             $targetFileName = "$relativeDir" + "_" + $file.Name | ||||
|         } else { | ||||
|             $targetFileName = $file.Name | ||||
|         } | ||||
|  | ||||
|         # Determine target directory based on the package name | ||||
|         if ($packageName -eq $whitelist_package) { | ||||
|             $targetDir = $path_code_compiler_staged | ||||
|         } else { | ||||
|             $targetDir = Join-Path $path_code_compiler_staged $packageName | ||||
|             if (-not (Test-Path $targetDir)) { | ||||
|                 New-Item -ItemType Directory -Path $targetDir | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         $targetFilePath = Join-Path $targetDir $targetFileName | ||||
|  | ||||
|         # Check if the target file path already exists and handle it accordingly | ||||
|         if (-not (Test-Path $targetFilePath)) { | ||||
|             New-Item -ItemType SymbolicLink -Path $targetFilePath -Value $file.FullName | ||||
|         } else { | ||||
|             Write-Host "Warning: The link for $($file.FullName) already exists at $targetFilePath. Skipping..." | ||||
|         } | ||||
|     } | ||||
| 	else { | ||||
|         Write-Host "Warning: The file $($file.FullName) does not contain a valid package declaration." | ||||
|     } | ||||
| } | ||||
|  | ||||
| Write-Host "Compiler staged directory structure created successfully." | ||||
		Reference in New Issue
	
	Block a user