Private/Validate-Settings.ps1
function Test-Settings { [CmdletBinding()] param ( [string]$Path ) $boolSettings = @( 'scrape-r18', 'scrape-r18zh', 'scrape-dmm', 'scrape-javlibrary', 'scrape-javlibraryja', 'scrape-javlibraryzh', 'scrape-javbus', 'scrape-javbusja', 'scrape-jav321', 'scrape-actress-en', 'scrape-actress-ja', 'move-to-folder', 'rename-file', 'regex-match', 'create-nfo', 'create-nfo-per-file', 'download-thumb-img', 'download-poster-img', 'download-trailer-vid', 'download-actress-img', 'translate-description', 'add-series-as-tag', 'first-last-name-order', 'convert-alias-to-originalname' 'normalize-genres', 'set-owned', 'check-updates', 'verbose-shell-output', 'debug-shell-output' ) $stringSettings = @( 'rename-file-string', 'rename-folder-string', 'cms-displayname-string', 'poster-file-string', 'thumbnail-file-string', 'trailer-file-string', 'nfo-file-string', 'screenshot-folder-string', 'screenshot-img-string', 'actor-folder-string' ) $intSettings = @( 'multi-sort-throttle-limit', 'max-title-length', 'max-path-length', 'minimum-filesize-to-sort', 'regex-id-match', 'regex-pt-match', 'request-timeout-sec' ) $javlibrarySettings = @( 'set-owned', 'username', 'session-cookie', 'requeste-timeout-sec' ) $validTags = @( 'ID', 'TITLE', 'STUDIO', 'YEAR', 'RELEASEDATE', 'RUNTIME', 'ACTORS', 'LABEL', 'ORIGINALTITLE', 'SET' ) $errorObject = @() $settingObject = @() $settingsContent = Get-Content -LiteralPath $Path $settingsContent | ForEach-Object { if ($_ -match '^[a-zA-Z]') { $entry = [pscustomobject]@{ Name = ($_ -split '=')[0] Value = ($_ -split '=')[1] } $settingObject += $entry } } foreach ($setting in $settingObject) { if ($setting.Name -in $boolSettings) { if ($setting.Value -ne 'True' -and $setting.Value -ne 'False') { $entry = [PSCustomObject]@{ Name = $setting.Name Value = $setting.Value Type = 'Boolean' } $errorObject += $entry } } if ($setting.Name -in $intSettings) { if ($setting.Value -notmatch '^\d+$') { $entry = [PSCustomObject]@{ Name = $setting.Name Value = $setting.Value Type = 'Int' } $errorObject += $entry } } <# if ($setting.Name -in $stringSettings) { $tags = (($Setting.Value | Select-String '<(.*?)>' -AllMatches).Matches.Groups | Where-Object { $_.Name -eq 1 }).Value foreach ($tag in $tags) { if ($tag -notin $validTags) { $entry = [PSCustomObject]@{ Name = $setting.Name Value = $setting.Value Type = 'String' } $errorObject += $entry } } } #> if ($setting.Name -eq 'multi-sort-throttle-limit') { if ([int]$setting.Value -lt 1 -or [int]$setting.Value -gt 15) { $entry = [PSCustomObject]@{ Name = $setting.Name Value = $setting.Value Type = 'Multi' } $errorObject += $entry } } } foreach ($err in $errorObject) { if ($err.Type -eq 'Boolean') { Write-Error "[$(Get-TimeStamp)][$($MyInvocation.MyCommand.Name)] Error validating setting [$($err.Name)] with value [$($err.Value)], value must match [True / False]" } if ($err.Type -eq 'Int') { Write-Error "[$(Get-TimeStamp)][$($MyInvocation.MyCommand.Name)] Error validating setting [$($err.Name)] with value [$($err.Value)], value must match an integer" } if ($err.Type -eq 'String') { Write-Error "[$(Get-TimeStamp)][$($MyInvocation.MyCommand.Name)] Error validating setting [$($err.Name)] with value [$($err.Value)], value must match available tags" } if ($err.Type -eq 'Multi') { Write-Error "[$(Get-TimeStamp)][$($MyInvocation.MyCommand.Name)] Error validating setting [$($err.Name)] with value [$($err.Value)], value must match [MIN: 1 / MAX: 15]" } } } |