generated from dopt-python/py311
208 lines
6.7 KiB
PowerShell
208 lines
6.7 KiB
PowerShell
[CmdletBinding()]
|
|
Param(
|
|
[switch]$NoPackaging
|
|
)
|
|
|
|
$DEPLOYMENT_PATH = 'B:\deployments\Wattana'
|
|
$ENV_PATH = 'B:\deployments\Wattana\dopt_wattana_data-analytics'
|
|
$PY_PATH = Join-Path -Path $ENV_PATH -ChildPath 'python'
|
|
$SRC_PATH = (Get-Location).Path
|
|
|
|
function create_folder {
|
|
param (
|
|
[string]$base_path,
|
|
[string]$folder_name,
|
|
[switch]$recreate
|
|
)
|
|
$target_path = Join-Path -Path $base_path -ChildPath $folder_name
|
|
|
|
$target_path_exists = Test-Path -Path $target_path
|
|
if (-not $target_path_exists){
|
|
Write-Output "[PWSH] Folder >$folder_name< not existing. Create..."
|
|
New-Item -Path $target_path -ItemType Directory
|
|
}
|
|
elseif ($target_path_exists -and $recreate){
|
|
Write-Output "[PWSH] Folder >$folder_name< exists, but should be recreated..."
|
|
Remove-Item -Path $target_path -Recurse -Force
|
|
New-Item -Path $target_path -ItemType Directory
|
|
}
|
|
else {
|
|
Write-Output "Folder >$folder_name< already exists."
|
|
}
|
|
}
|
|
|
|
Write-Output "Build Pipeline for d-opt Wattana (wattanalyse) project"
|
|
|
|
Write-Output "Delete existing artifacts..."
|
|
$pattern = "dopt_wattana_data-analytics_v*"
|
|
Get-ChildItem -Path $DEPLOYMENT_PATH -Filter $pattern | Remove-Item -Recurse -Force
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors in the deletion procedure"
|
|
Exit
|
|
}
|
|
Write-Output "Deleted outstanding artifacts successfully"
|
|
|
|
|
|
Write-Output "Create folders..."
|
|
create_folder -base_path $ENV_PATH -folder_name 'data' -recreate
|
|
create_folder -base_path $ENV_PATH -folder_name 'data/logs'
|
|
create_folder -base_path $ENV_PATH -folder_name 'config'
|
|
|
|
|
|
# $data_folder = Join-Path -Path $ENV_PATH -ChildPath 'data'
|
|
|
|
# if (-not (Test-Path -Path $data_folder)){
|
|
# Write-Output "[PWSH] Data path not existing. Create..."
|
|
# New-Item -Path $data_folder -ItemType Directory
|
|
# }
|
|
# else {
|
|
# Write-Output "Data path already exists."
|
|
# }
|
|
|
|
|
|
Write-Output "Building package..."
|
|
.\scripts\publish.ps1
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were build errors"
|
|
Exit
|
|
}
|
|
Write-Output "Built package successfully"
|
|
|
|
# docs
|
|
Write-Output "Generate docs..."
|
|
.\scripts\cvt_docs.ps1
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there errors while generating the doc files"
|
|
Exit
|
|
}
|
|
Write-Output "Generated doc files successfully"
|
|
Write-Output "Copying doc files..."
|
|
$docs_src_path = Join-Path -Path $SRC_PATH -ChildPath 'docs\*.pdf'
|
|
Copy-Item -Path $docs_src_path -Destination $ENV_PATH -Force
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while copying the doc files"
|
|
Exit
|
|
}
|
|
Write-Output "Copied doc files successfully"
|
|
|
|
|
|
Write-Output "Go into env directory..."
|
|
Set-Location $ENV_PATH
|
|
Write-Output "Install package into environment..."
|
|
pycage venv add -p -i http://localhost:8001/simple/ wattanalyse
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while installing the package into the environment"
|
|
Exit
|
|
}
|
|
Write-Output "Successfully installed package"
|
|
|
|
# TODO check removal
|
|
# copy database file
|
|
# Write-Output "Copying database files..."
|
|
# $copy_file = Join-Path -Path $SRC_PATH -ChildPath 'data/db/wce_grunderfassung.db'
|
|
# $dest_file = Join-Path -Path $ENV_PATH -ChildPath 'data'
|
|
# Copy-Item -Path $copy_file -Destination $dest_file -Force
|
|
# if ($? -eq $false){
|
|
# Write-Output "[PWSH] Exiting script because there were errors while copying database 'Grunderfassung'"
|
|
# Exit
|
|
# }
|
|
# $copy_file = Join-Path -Path $SRC_PATH -ChildPath 'data/db/wce_crm.db'
|
|
# Copy-Item -Path $copy_file -Destination $dest_file -Force
|
|
# if ($? -eq $false){
|
|
# Write-Output "[PWSH] Exiting script because there were errors while copying database 'CRM'"
|
|
# Exit
|
|
# }
|
|
# Write-Output "Copied database files successfully"
|
|
|
|
# copy .env file
|
|
Write-Output "Copying ENV file..."
|
|
$env_file = Join-Path -Path $SRC_PATH -ChildPath 'deployment/.env'
|
|
$env_dest_path = Join-Path -Path $PY_PATH -ChildPath '.env'
|
|
Copy-Item -Path $env_file -Destination $env_dest_path -Force
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while copying ENV file"
|
|
Exit
|
|
}
|
|
Write-Output "Copied ENV file successfully"
|
|
|
|
# copy config file
|
|
Write-Output "Copying ENV file..."
|
|
$env_file = Join-Path -Path $SRC_PATH -ChildPath 'config/wattana.toml'
|
|
$env_dest_path = Join-Path -Path $ENV_PATH -ChildPath 'config'
|
|
Copy-Item -Path $env_file -Destination $env_dest_path -Force
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while copying config file"
|
|
Exit
|
|
}
|
|
Write-Output "Copied config file successfully"
|
|
|
|
|
|
# copy startup script files
|
|
Write-Output "Copying startup scripts..."
|
|
$copy_file = Join-Path -Path $SRC_PATH -ChildPath 'deployment/startup*'
|
|
Copy-Item -Path $copy_file -Destination $ENV_PATH -Force
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while copying startup scripts"
|
|
Exit
|
|
}
|
|
Write-Output "Copied startup scripts successfully"
|
|
|
|
|
|
# env preparation
|
|
Write-Output "Preparing environment with cleanup and pre-compilation..."
|
|
pycage clean dist-info
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors while deleting the distribution info files"
|
|
Exit
|
|
}
|
|
pycage compile -q -d -f
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors during the pre-compilation process"
|
|
Exit
|
|
}
|
|
Write-Output "Successfully prepared environment with cleanup and pre-compilation"
|
|
|
|
if ($NoPackaging) {
|
|
Write-Output "[PWSH] No packaging selected. Exit..."
|
|
Set-Location $SRC_PATH
|
|
Exit
|
|
}
|
|
|
|
|
|
Write-Output "Get version string..."
|
|
$pyproject = Get-Content $SRC_PATH\pyproject.toml -Raw
|
|
|
|
if ($pyproject -match '\[project\].*?\n[\s\w\n=""-_{}]*\[[\w-]*\]') {
|
|
$projectBlock = $matches[0]
|
|
if ($projectBlock -match 'version\s*=\s*"([^"]+)"') {
|
|
$version = $matches[1]
|
|
Write-Output "The version string is: $version"
|
|
}
|
|
else {
|
|
Write-Output "[PWSH] Exiting script because the version string was not found"
|
|
Exit
|
|
}
|
|
}
|
|
else {
|
|
Write-Output "[PWSH] Exiting script because the version string was not found"
|
|
Exit
|
|
}
|
|
|
|
Write-Output "Packaging whole standalone environment in a ZIP file"
|
|
$dest_path = Join-Path -Path $DEPLOYMENT_PATH -ChildPath "dopt_wattana_data-analytics_v$version.zip"
|
|
$compress = @{
|
|
Path = "$ENV_PATH\**"
|
|
CompressionLevel = "Optimal"
|
|
DestinationPath = $dest_path
|
|
}
|
|
Compress-Archive @compress -Force
|
|
|
|
if ($? -eq $false){
|
|
Write-Output "[PWSH] Exiting script because there were errors during the archive compression operation"
|
|
Exit
|
|
}
|
|
Write-Output "Successfully compressed archive. Saved under: >$dest_path<"
|
|
|
|
Write-Output "Go back to source directory..."
|
|
Set-Location $SRC_PATH
|