Skip to content

Commit d12e255

Browse files
authored
Merge pull request #213 from rulasg/improvements
refactor(Project): enhance logging and parameter handling
2 parents 12d994b + 82f000a commit d12e255

6 files changed

Lines changed: 118 additions & 57 deletions

File tree

include/MyWrite.ps1

Lines changed: 76 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,20 @@ function Write-MyHost {
5353
[Parameter()][string]$ForegroundColor = $OUTPUT_COLOR,
5454
[Parameter()][switch]$NoNewLine
5555
)
56+
57+
Write-MyDebug -Section "MyHost" -Message $Message
58+
5659
# Write-Host $message -ForegroundColor $OUTPUT_COLOR
5760
Write-ToConsole $message -Color $ForegroundColor -NoNewLine:$NoNewLine
5861
}
5962

63+
function Clear-MyHost {
64+
[CmdletBinding()]
65+
param()
66+
67+
Clear-Host
68+
}
69+
6070
function Write-MyDebug {
6171
[CmdletBinding()]
6272
[Alias("Write-Debug")]
@@ -77,7 +87,7 @@ function Write-MyDebug {
7787
$timestamp = Get-Date -Format 'HH:mm:ss.fff'
7888

7989
# Write on host
80-
$logMessage ="[$timestamp][D][$section] $message"
90+
$logMessage ="[$timestamp][$MODULE_NAME][D][$section] $message"
8191

8292
$logMessage | Write-ToConsole -Color $DEBUG_COLOR
8393
$logMessage | Write-MyDebugLogging
@@ -92,8 +102,7 @@ function Write-MyDebugLogging {
92102

93103
process{
94104

95-
$moduleDebugLoggingVarName = $MODULE_NAME + "_DEBUG_LOGGING_FILEPATH"
96-
$loggingFilePath = [System.Environment]::GetEnvironmentVariable($moduleDebugLoggingVarName)
105+
$loggingFilePath = get-DebugLogFile
97106

98107
# Check if logging is enabled
99108
if ([string]::IsNullOrWhiteSpace( $loggingFilePath )) {
@@ -134,8 +143,7 @@ function Test-MyVerbose {
134143
[Parameter(Position = 0)][string]$section
135144
)
136145

137-
$moduleDebugVarName = $MODULE_NAME + "_VERBOSE"
138-
$flag = [System.Environment]::GetEnvironmentVariable($moduleDebugVarName)
146+
$flag = get-VerboseSections
139147

140148
if ([string]::IsNullOrWhiteSpace( $flag )) {
141149
return $false
@@ -156,17 +164,15 @@ function Enable-ModuleNameVerbose{
156164
$flag = $section
157165
}
158166

159-
$moduleDebugVarName = $MODULE_NAME + "_VERBOSE"
160-
[System.Environment]::SetEnvironmentVariable($moduleDebugVarName, $flag)
167+
set-VerboseSections $flag
161168
}
162169
Copy-Item -path Function:Enable-ModuleNameVerbose -Destination Function:"Enable-$($MODULE_NAME)Verbose"
163170
Export-ModuleMember -Function "Enable-$($MODULE_NAME)Verbose"
164171

165172
function Disable-ModuleNameVerbose{
166173
param()
167174

168-
$moduleDebugVarName = $MODULE_NAME + "_VERBOSE"
169-
[System.Environment]::SetEnvironmentVariable($moduleDebugVarName, $null)
175+
set-VerboseSections $null
170176
}
171177
Copy-Item -path Function:Disable-ModuleNameVerbose -Destination Function:"Disable-$($MODULE_NAME)Verbose"
172178
Export-ModuleMember -Function "Disable-$($MODULE_NAME)Verbose"
@@ -184,19 +190,19 @@ function Test-MyDebug {
184190
$flags = $flags.ToLower()
185191
$section = $section.ToLower()
186192

187-
return ($flags.Contains("all")) -or ( $flags.Contains($section))
193+
return ($flags.Contains("all")) -or ( $flags -eq $section)
188194
}
189195

190-
$moduleDebugVarName = $MODULE_NAME + "_DEBUG"
191-
$flagsString = [System.Environment]::GetEnvironmentVariable($moduleDebugVarName)
196+
197+
$sectionsString = get-DebugSections
192198

193199
# No configuration means no debug
194-
if([string]::IsNullOrWhiteSpace( $flagsString )) {
200+
if([string]::IsNullOrWhiteSpace( $sectionsString )) {
195201
return $false
196202
}
197203

198-
# Get flags from flagdsString
199-
$flags = getFlagsFromSectionsString $flagsString
204+
# Get flags from sectionsString
205+
$flags = getSectionsFromSectionsString $sectionsString
200206

201207
# Add all if allow is empty.
202208
# This mean stat flagsString only contains filters.
@@ -228,57 +234,54 @@ function Enable-ModuleNameDebug{
228234
}
229235
}
230236

231-
$flagsString = $sections -join " "
237+
$sectionsString = $sections -join " "
232238
$addedFlagsString = $AddSections -join " "
233239

234240
# if no section get value from env and is still mepty set to all
235-
if([string]::IsNullOrWhiteSpace( $flagsString )) {
236-
$flagsString = get-Sections
237-
if( [string]::IsNullOrWhiteSpace( $flagsString )) {
238-
$flagsString = "all"
241+
if([string]::IsNullOrWhiteSpace( $sectionsString )) {
242+
$sectionsString = get-DebugSections
243+
if( [string]::IsNullOrWhiteSpace( $sectionsString )) {
244+
$sectionsString = "all"
239245
}
240246
}
241247

242-
# Add added to flagsString if provided
248+
# Add added to sectionsString if provided
243249
if(-Not [string]::IsNullOrWhiteSpace( $addedFlagsString )) {
244-
$flagsString += " " + $addedFlagsString
250+
$sectionsString += " " + $addedFlagsString
245251
}
246252

247-
set-Sections $flagsString
253+
set-DebugSections $sectionsString
248254

249255
}
250256
Copy-Item -path Function:Enable-ModuleNameDebug -Destination Function:"Enable-$($MODULE_NAME)Debug"
251257
Export-ModuleMember -Function "Enable-$($MODULE_NAME)Debug"
252258

253-
function getFlagsFromSectionsString($sectionsString){
254-
$flags = @{
259+
function getSectionsFromSectionsString($sectionsString){
260+
$sections = @{
255261
allow = $null
256262
filter = $null
257263
}
258264

259265
if([string]::IsNullOrWhiteSpace($sectionsString) ){
260-
$flags.allow = @("all")
261-
return $flags
266+
$sections.allow = @("all")
267+
return $sections
262268
}
263269

264270
$list = $sectionsString.Split(" ", [StringSplitOptions]::RemoveEmptyEntries)
265271

266272
$split = @($list).Where({ $_ -like '-*' }, 'Split')
267273

268-
$flags.filter = $split[0] | ForEach-Object { $_ -replace '^-', '' } # -> API, Auth
269-
$flags.allow = $split[1] # -> Sync, Cache
274+
$sections.filter = $split[0] | ForEach-Object { $_ -replace '^-', '' } # -> API, Auth
275+
$sections.allow = $split[1] # -> Sync, Cache
270276

271-
return $flags
277+
return $sections
272278
}
273279

274280
function Disable-ModuleNameDebug {
275281
param()
276282

277-
$moduleDebugVarName = $MODULE_NAME + "_DEBUG"
278-
[System.Environment]::SetEnvironmentVariable($moduleDebugVarName, $null)
279-
280-
$moduleDEbugLoggingVarName = $MODULE_NAME + "_DEBUG_LOGGING_FILEPATH"
281-
[System.Environment]::SetEnvironmentVariable($moduleDEbugLoggingVarName, $null)
283+
set-DebugSections $null
284+
set-LogFile $null
282285
}
283286
Copy-Item -path Function:Disable-ModuleNameDebug -Destination Function:"Disable-$($MODULE_NAME)Debug"
284287
Export-ModuleMember -Function "Disable-$($MODULE_NAME)Debug"
@@ -288,8 +291,8 @@ function Get-ModuleNameDebug {
288291
param()
289292

290293
return @{
291-
Sections = get-Sections
292-
LoggingFilePath = get-LogFile
294+
Sections = get-DebugSections
295+
LoggingFilePath = get-DebugLogFile
293296
}
294297
}
295298
Copy-Item -path Function:Get-ModuleNameDebug -Destination Function:"Get-$($MODULE_NAME)Debug"
@@ -337,3 +340,39 @@ function set-LogFile($logFilePath){
337340
$moduleDEbugLoggingVarName = $MODULE_NAME + "_DEBUG_LOGGING_FILEPATH"
338341
[System.Environment]::SetEnvironmentVariable($moduleDEbugLoggingVarName, $logFilePath)
339342
}
343+
344+
function get-DebugSections(){
345+
$moduleDebugVarName = $MODULE_NAME + "_DEBUG"
346+
$sections = [System.Environment]::GetEnvironmentVariable($moduleDebugVarName)
347+
348+
return $sections
349+
}
350+
351+
function set-DebugSections($sections){
352+
$moduleDebugVarName = $MODULE_NAME + "_DEBUG"
353+
[System.Environment]::SetEnvironmentVariable($moduleDebugVarName, $sections)
354+
}
355+
356+
function get-DebugLogFile(){
357+
$moduleDEbugLoggingVarName = $MODULE_NAME + "_DEBUG_LOGGING_FILEPATH"
358+
$logfile = [System.Environment]::GetEnvironmentVariable($moduleDEbugLoggingVarName)
359+
360+
return $logfile
361+
}
362+
363+
function set-LogFile($logFilePath){
364+
$moduleDEbugLoggingVarName = $MODULE_NAME + "_DEBUG_LOGGING_FILEPATH"
365+
[System.Environment]::SetEnvironmentVariable($moduleDEbugLoggingVarName, $logFilePath)
366+
}
367+
368+
function get-VerboseSections{
369+
$moduleVerboseVarName = $MODULE_NAME + "_VERBOSE"
370+
$sections = [System.Environment]::GetEnvironmentVariable($moduleVerboseVarName)
371+
372+
return $sections
373+
}
374+
375+
function set-VerboseSections($sections){
376+
$moduleVerboseVarName = $MODULE_NAME + "_VERBOSE"
377+
[System.Environment]::SetEnvironmentVariable($moduleVerboseVarName, $sections)
378+
}

private/projectDatabase/project_database.ps1

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,14 @@ function Test-ProjectDatabase{
77
[Parameter(Position = 1)][int]$ProjectNumber
88
)
99

10+
"Testing project database for $Owner/$ProjectNumber >>>" | Write-MyDebug -Section "ProjectDatabase"
11+
1012
$key,$keyLock = Get-ProjectDatabaseKey -Owner $Owner -ProjectNumber $ProjectNumber
1113

1214
$ret = Test-Database -Key $key
1315

16+
"Testing project database for $Owner/$ProjectNumber <<< $ret" | Write-MyDebug -Section "ProjectDatabase"
17+
1418
return $ret
1519
}
1620

@@ -46,12 +50,16 @@ function Get-ProjectFromDatabase{
4650
)
4751

4852
$key,$keyLock = Get-ProjectDatabaseKey -Owner $Owner -ProjectNumber $ProjectNumber
53+
54+
"Getting project for $Owner/$ProjectNumber" | Write-MyDebug -Section "ProjectDatabase"
4955

5056
$prj = getProjectDatabaseCache -KeyLock $keyLock
5157

5258
if($null -ne $prj){
53-
"Project cache hit for $Owner/$ProjectNumber" | Write-MyDebug -Section "ProjectDatabase"
59+
"🟩 Get Project Database from MEMORY $Owner/$ProjectNumber" | Write-MyDebug -Section "ProjectDatabase"
5460
return $prj
61+
} else {
62+
"🟧 Get Project Database from FILE $Owner/$ProjectNumber" | Write-MyDebug -Section "ProjectDatabase"
5563
}
5664

5765
# No cache or cache mismatch, read from database
@@ -65,6 +73,9 @@ function Get-ProjectFromDatabase{
6573
$prj.items = $prj.items | Copy-MyHashTable
6674
$prj.Staged = $prj.Staged | Copy-MyHashTable
6775

76+
# Savige to cache for future calls
77+
setProjectDatabaseCache -KeyLock $keyLock -SafeId $prj.safeId -Database $prj
78+
6879
return $prj
6980
}
7081

@@ -161,6 +172,9 @@ function Save-ProjectDatabase{
161172
# Add safe mark
162173
$Database.safeId = [guid]::NewGuid().ToString()
163174

175+
# Trace
176+
"🟥 Save Project Database from FILE $Owner/$ProjectNumber safeId [$($Database.safeId)]" | Write-MyDebug -Section "ProjectDatabase"
177+
164178
# Save database
165179
Save-Database -Key $dbkey -Database $Database
166180
setProjectDatabaseCache -KeyLock $dbkeyLock -SafeId $Database.safeId -Database $Database
@@ -231,7 +245,7 @@ function resetProjectDatabaseCache{
231245

232246
"Resetting project cache for $KeyLock" | Write-MyDebug -Section "ProjectDatabase"
233247

234-
Reset.Database -Key $KeyLock
248+
Reset-Database -Key $KeyLock
235249

236250
$script:ProjectDatabaseCache.Remove($KeyLock)
237251
}

public/issues/Add-ProjectSubIssue.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ function Add-ProjectSubissueCreate {
6464
[CmdletBinding()]
6565
[Alias("New-Issue")]
6666
param (
67-
[Parameter(Mandatory, Position = 0)][string]$ItemId,
67+
[Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName, Position = 0)][Alias("Id")][string]$ItemId,
68+
6869
[Parameter(Position = 1)][string]$RepoOwner,
6970
[Parameter(Position = 2)][string]$RepoName,
7071
[Parameter(Mandatory, Position = 3)][string]$Title,

public/items/project_item.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ function Search-ProjectItem {
195195
$Attributes = @("id") + $Attributes
196196
}
197197

198-
199-
($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber
198+
# Resolve project parameters
199+
($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber
200200

201201
# Get items as hashtable for later queries
202202
$items = Get-ProjectItems -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force -IncludeDone:$IncludeDone -AsHashtable

public/items/use_order.ps1

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ function Use-Order {
88
[Parameter()][Alias("w")][switch]$OpenInBrowser,
99
[Parameter()][Alias("p")][switch]$PassThru,
1010
[Parameter()][Alias("c")][switch]$ClearScreen,
11+
[Parameter()][Alias("d")][switch]$DontShow,
1112
[Parameter()][scriptblock]$ShowProjectItemScriptBlock
1213
)
1314

@@ -54,24 +55,26 @@ function Use-Order {
5455
throw "ProjectEnvironment is required. Run Set-ProjectHelperEnvironment"
5556
}
5657

57-
#return item
58+
if( -not $DontShow){
59+
# Get function to show item
60+
$ShowProjectItemScriptBlock = $ShowProjectItemScriptBlock ?? { param($parameters) Show-ProjectItem @parameters }
61+
62+
# Show item in console or editor
63+
$params = @{
64+
Item = $itemId
65+
OpenInEditor = $OpenInEditor
66+
OpenInBrowser = $OpenInBrowser
67+
ClearScreen = $ClearScreen
68+
}
69+
$ShowProjectItemScriptBlock.Invoke($params)
70+
}
71+
72+
#return item
5873
if($PassThru) {
5974
$i = Get-ProjectItem -ItemId $itemId
6075
return [PsCustomObject]$i
6176
}
6277

63-
# Get function to show item
64-
$ShowProjectItemScriptBlock = $ShowProjectItemScriptBlock ?? { param($parameters) Show-ProjectItem @parameters }
65-
66-
# Show item in console or editor
67-
$params = @{
68-
Item = $itemId
69-
OpenInEditor = $OpenInEditor
70-
OpenInBrowser = $OpenInBrowser
71-
ClearScreen = $ClearScreen
72-
}
73-
$ShowProjectItemScriptBlock.Invoke($params)
74-
return
7578

7679
}
7780
} Export-ModuleMember -Function Use-Order -Alias "uo"

public/project/getproject.ps1

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,25 @@ function Get-Project {
99

1010
($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber
1111

12+
"Getting project for $Owner/$ProjectNumber with SkipItems=$SkipItems and Force=$Force >>>" | Write-MyDebug -Section "Get-Project"
13+
1214
if ($Force -or -Not (Test-ProjectDatabase -Owner $Owner -ProjectNumber $ProjectNumber)) {
1315
"Project not found in database or force specified. Updating project for $Owner/$ProjectNumber." | Write-MyDebug -Section Get-Project
1416

1517
$result = Update-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems:$SkipItems -Force:$Force
1618

1719
if ( ! $result) {
1820
"Failed to update project for $Owner/$ProjectNumber. Project may not exist or there was an error during update." | Write-MyError
19-
return
21+
return
2022
}
2123
} else {
22-
"Project found in database for $Owner/$ProjectNumber. Loading project." | Write-MyDebug -Section Get-Project
24+
"Project found in database for $Owner/$ProjectNumber. Calling to retreive." | Write-MyDebug -Section Get-Project
2325
}
2426

2527
$prj = Get-ProjectFromDatabase -Owner $Owner -ProjectNumber $ProjectNumber
2628

29+
"Getting project for $Owner/$ProjectNumber with SkipItems=$SkipItems and Force=$Force <<< $($prj.safeId)" | Write-MyDebug -Section "Get-Project"
30+
2731
return $prj
2832
} Export-ModuleMember -Function Get-Project
2933

0 commit comments

Comments
 (0)