8
8
$mainTimer = [System.Diagnostics.Stopwatch ]::StartNew()
9
9
$stepTimer = [System.Diagnostics.Stopwatch ]::StartNew()
10
10
11
- # Import utility functions
12
- $scriptPath = Split-Path - Parent $MyInvocation.MyCommand.Path
13
- . " $scriptPath /scripts/utils/Minimize.ps1" # To get better screenshots we need to minimize the "Administrator" CMD window
14
- . " $scriptPath /scripts/utils/TimedMessage.ps1"
15
- . " $scriptPath /scripts/utils/Invoke.ps1" # Function to invoke a script with a timeout
16
- . " $scriptPath /scripts/utils/Screenshot.ps1"
17
- . " $scriptPath /scripts/utils/Path.ps1"
11
+ Set-Variable - Name MainScriptDir - Value " $PSScriptRoot " - Option Constant
18
12
13
+ # Import utility functions
14
+ . " $MainScriptDir /scripts/utils/Invoke.ps1" # Function to invoke a script with a timeout
15
+ . " $MainScriptDir /scripts/utils/Minimize.ps1" # To get better screenshots we need to minimize the "Administrator" CMD window
16
+ . " $MainScriptDir /scripts/utils/Path.ps1"
17
+ . " $MainScriptDir /scripts/utils/Screenshot.ps1"
18
+ . " $MainScriptDir /scripts/utils/TimedMessage.ps1"
19
19
20
20
Write-TimedMessage " Current directory: $ ( pwd) " - StartNewStep
21
- $srcDir = NormalizeDirPath $SourceDir
22
- Write-Host " Using source directory: $srcDir "
23
- $srcDir = GetAbsPath - path $srcDir - basePath $PSScriptRoot
24
- Write-TimedMessage " Normalized source abs directory: $srcDir "
21
+ # This directory contains the directories associated with the office documents
22
+ $mainSourceDir = NormalizeDirPath ((Resolve-Path $SourceDir ).Path)
23
+ Write-Host " Main Source Dir: $mainSourceDir "
24
+
25
+ # Check if the source dir was resolved correctly
26
+ if (-not (Test-Path $mainSourceDir )) {
27
+ Write-Host " 🔴 Error: Source directory not found: $mainSourceDir "
28
+ exit 1
29
+ }
25
30
26
31
# Read name of the folders under the specified source directory into an array
27
- $folders = Get-ChildItem - Path " $srcDir " - Directory | Select-Object - ExpandProperty Name
28
- Write-TimedMessage " Folders in ${srcDir } : $folders " - StartNewStep
32
+ $fileDirNames = Get-ChildItem - Path " $mainSourceDir " - Directory | Select-Object - ExpandProperty Name
33
+ Write-TimedMessage " Folders in ${mainSourceDir } : $fileDirNames " - StartNewStep
29
34
30
35
# Check if the folders array is empty
31
- if ($folders .Count -eq 0 ) {
32
- Write-TimedMessage " No folders found in ${srcDir } . Exiting script." - StartNewStep
36
+ if ($fileDirNames .Count -eq 0 ) {
37
+ Write-TimedMessage " No folders found in ${mainSourceDir } . Exiting script." - StartNewStep
33
38
exit 1
34
39
}
35
40
@@ -52,16 +57,16 @@ function Get-OfficeApp {
52
57
53
58
# Create a list of Office applications that are needed based on the file extensions of the folders
54
59
Write-TimedMessage " Identifying required Office applications" - StartNewStep
55
- foreach ($folder in $folders ) {
56
- $fileExtension = GetFileExtension $folder
57
- $app = Get-OfficeApp - FileExtension $fileExtension
60
+ foreach ($fileDirName in $fileDirNames ) {
61
+ $fileExt = GetFileExtension $fileDirName
62
+ $app = Get-OfficeApp - FileExtension $fileExt
58
63
59
64
if ($app ) {
60
65
if ($officeApps -notcontains $app ) {
61
66
$officeApps += $app
62
67
}
63
68
} else {
64
- Write-TimedMessage " Unknown file extension: $fileExtension . Skipping..."
69
+ Write-TimedMessage " Unknown file extension: $fileExt . Skipping..."
65
70
continue
66
71
}
67
72
}
@@ -71,6 +76,7 @@ Write-TimedMessage "Required Office applications: $officeApps"
71
76
Write-TimedMessage " Open and close Office applications" - StartNewStep
72
77
. " $PSScriptRoot /scripts/Open-Close-Office.ps1" $officeApps
73
78
Write-TimedMessage " Completed opening and closing Office applications"
79
+ Take- Screenshot - OutputPath " ${mainSourceDir} screenshots/AllOfficeAppClosed_{{timestamp}}.png"
74
80
Write-Host " ========================="
75
81
76
82
# Enable VBOM for each Office application
@@ -86,47 +92,44 @@ Write-TimedMessage "Minimizing Administrator window" -StartNewStep
86
92
Minimize- Window " Administrator: C:\actions"
87
93
Write-TimedMessage " Window minimized"
88
94
89
- $originalSrcDir = $srcDir
90
-
91
- foreach ($folder in $folders ) {
95
+ foreach ($fileDirName in $fileDirNames ) {
92
96
Write-Host " ========================="
93
97
# Reset the source directory to the original value
94
- $srcDir = $originalSrcDir
95
98
96
- Write-TimedMessage " Processing folder: $folder " - StartNewStep
97
- $fileExtension = $folder.Substring ($folder.LastIndexOf (' .' ) + 1 )
98
- Write-Host " File extension: $fileExtension "
99
- $app = Get-OfficeApp - FileExtension $fileExtension
99
+ Write-TimedMessage " Processing folder: $fileDirName " - StartNewStep
100
+ $fileExt = $folder.Substring ($folder.LastIndexOf (' .' ) + 1 )
101
+ Write-Host " File extension: $fileExt "
102
+ $app = Get-OfficeApp - FileExtension $fileExt
100
103
101
104
$ext = " "
102
105
if ($app -ne " Access" ) {
103
106
$ext = " zip"
104
- Write-TimedMessage " Creating Zip file and renaming to Office document target with path ${srcDir }${folder } " - StartNewStep
105
- . " $PSScriptRoot /scripts/Zip-It.ps1" " ${srcDir }${folder } "
107
+ Write-TimedMessage " Creating Zip file and renaming to Office document target with path ${mainSourceDir }${fileDirName } " - StartNewStep
108
+ & " $PSScriptRoot /scripts/Zip-It.ps1" " ${mainSourceDir }${fileDirName } "
106
109
Write-TimedMessage " Zip file created"
107
110
}
108
111
else {
109
112
$ext = " accdb"
110
- Write-TimedMessage " Copying folder and content to Skeleton folder " - StartNewStep
111
- Copy-Item - Path " ${srcDir }${folder } /DBSource" - Destination " ${srcDir }${folder } /Skeleton" - Recurse - Force
112
- Write-TimedMessage " Folder copied"
113
+ Write-TimedMessage " Copying directory and content to Skeleton directory " - StartNewStep
114
+ Copy-Item - Path " ${mainSourceDir }${fileDirName } /DBSource" - Destination " ${mainSourceDir }${fileDirName } /Skeleton" - Recurse - Force
115
+ Write-TimedMessage " Directory copied"
113
116
}
114
117
115
118
Write-TimedMessage " Copying and renaming file to correct name" - StartNewStep
116
- . " $PSScriptRoot /scripts/Rename-It.ps1" " ${srcDir }${folder} " " $ext "
119
+ & " $PSScriptRoot /scripts/Rename-It.ps1" " ${mainSourceDir }${folder} " " $ext "
117
120
Write-TimedMessage " File renamed"
118
121
119
122
Write-TimedMessage " Importing VBA code into Office document" - StartNewStep
120
123
# Replace the direct Build-VBA call with the timeout version
121
124
$buildVbaScriptPath = " $PSScriptRoot /scripts/Build-VBA.ps1"
122
- $success = Invoke-ScriptWithTimeout - ScriptPath $buildVbaScriptPath - Arguments @ (" ${srcDir }${folder} " , " $app " ) - TimeoutSeconds 30
125
+ $success = Invoke-ScriptWithTimeout - ScriptPath $buildVbaScriptPath - Arguments @ (" ${mainSourceDir }${folder} " , " $app " ) - TimeoutSeconds 30
123
126
124
- Write-Host " srcDir : ${srcDir } "
127
+ Write-Host " mainSourceDir : ${mainSourceDir } "
125
128
126
129
if (-not $success ) {
127
130
Write-TimedMessage " 🔴 Build-VBA.ps1 execution timed out or failed for ${folder} . Continuing with next file..."
128
131
129
- $screenshotDir = ${srcDir } + " screenshots/"
132
+ $screenshotDir = ${mainSourceDir } + " screenshots/"
130
133
if (-not (Test-Path $screenshotDir )) {
131
134
New-Item - ItemType Directory - Path $screenshotDir - Force | Out-Null
132
135
Write-Host " Created screenshot directory: $screenshotDir "
0 commit comments