diff --git a/Test/private/MockCall_Project700.ps1 b/Test/private/MockCall_Project700.ps1 index 16ae130..54d9140 100644 --- a/Test/private/MockCall_Project700.ps1 +++ b/Test/private/MockCall_Project700.ps1 @@ -170,7 +170,7 @@ function Get-Mock_Project_700 { $project.searchInTitle = @{} $project.searchInTitle.titleFilter = "development" $project.searchInTitle.Titles = $pActual.items.nodes.content.title | Where-Object { $_ -like "*development*" } - $project.searchInTitle.attributesDefault = @("Title", "id") + $project.searchInTitle.attributesDefault = @("Title", "id" , "RepositoryName") $project.searchInTitle.attributes = @("Title", "id", "url", "Status", "field-text") # SearchIn FieldName diff --git a/Test/public/integrations/sync-ProjectItemsBetweenProjects.test.ps1 b/Test/public/integrations/sync-ProjectItemsBetweenProjects.test.ps1 index 504f1eb..7663579 100644 --- a/Test/public/integrations/sync-ProjectItemsBetweenProjects.test.ps1 +++ b/Test/public/integrations/sync-ProjectItemsBetweenProjects.test.ps1 @@ -22,7 +22,7 @@ function Test_UpdateProjectItemsBetweenProjects{ Assert-IsNull -Object $result - $staged = Get-ProjectItemStaged -Owner $owner -ProjectNumber $destinationProjectNumber + $staged = Get-ProjectItemStaged -Owner $destinationOwner -ProjectNumber $destinationProjectNumber $p = $p626.syncBtwPrj_625 diff --git a/Test/public/interactive_test/getproject.test.ps1 b/Test/public/interactive_test/getproject.test.ps1 index 7ff74be..1e8cd37 100644 --- a/Test/public/interactive_test/getproject.test.ps1 +++ b/Test/public/interactive_test/getproject.test.ps1 @@ -9,8 +9,10 @@ function Test_Get_Project_ItemId_Equal_Case_Sensitive { $item1 = "PVTI_lADOAlIw4c4BCe3Vzgec8pU" $item2 = "PVTI_lADOAlIw4c4BCe3Vzgec8pu" + Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber + # Act - $result = Get-Project -owner $owner -ProjectNumber $ProjectNumber + $result = Get-Project Assert-Count -Expected $p.items.totalCount -Presented $result.items.keys $result1 = Get-ProjectItem -ItemId $item1 diff --git a/Test/public/issues/Add-IssuePullRequestComment.test.ps1 b/Test/public/issues/Add-IssuePullRequestComment.test.ps1 index 543259c..e8a68c5 100644 --- a/Test/public/issues/Add-IssuePullRequestComment.test.ps1 +++ b/Test/public/issues/Add-IssuePullRequestComment.test.ps1 @@ -22,7 +22,7 @@ function Test_AddComment_SUCCESS_Using_Cache{ function Test_AddComment_SUCCESS_Using_Direct{ - $p = Get-Mock_Project_700 + $p = Get-Mock_Project_700 $i = $p.Issue $id = $i.id $contentId = $i.contentId diff --git a/Test/public/issues/Get-ProjectIssue.test.ps1 b/Test/public/issues/Get-ProjectIssue.test.ps1 index 7983fd7..5fde498 100644 --- a/Test/public/issues/Get-ProjectIssue.test.ps1 +++ b/Test/public/issues/Get-ProjectIssue.test.ps1 @@ -1,12 +1,12 @@ function Test_GetProjectIssue{ - $p = Get-Mock_Project_700 ; $Owner = $p.owner ; $projectNumber = $p.number + $p = Get-Mock_Project_700 $i = $p.issue MockCallJson -Command "Invoke-GetIssueOrPullRequest -Url $($i.url)" -FileName "invoke-GetIssueOrPullRequest-26.json" # Act - $result = Get-ProjectIssue -Url $i.url + $result = Get-ProjectIssue -Url $i.url Assert-AreEqual -Expected $i.contentId -Presented $result.id Assert-AreEqual -Expected $i.title -Presented $result.title diff --git a/Test/public/issues/Remove-ProjectIssue.test.ps1 b/Test/public/issues/Remove-ProjectIssue.test.ps1 index 09f0b31..de90b55 100644 --- a/Test/public/issues/Remove-ProjectIssue.test.ps1 +++ b/Test/public/issues/Remove-ProjectIssue.test.ps1 @@ -9,7 +9,7 @@ function Test_RemoveProjectIssue_SUCCESS { MockCallJson -Command "Invoke-GetIssueOrPullRequest -Url $($i.url)" -fileName $i.getIssueOrPullRequestMockFile MockCallJson -Command "Invoke-AddItemToProject -ProjectId $($p.id) -ContentId $($i.id)" -fileName $i.addIssueToOProjectMockFile $itemId = Add-ProjectItem -owner $owner -projectNumber $projectNumber -Url $i.url - $item = Get-ProjectItem -Id $itemId + $item = Get-ProjectItem -Id $itemId -owner $owner -projectNumber $projectNumber Assert-AreEqual -expected $i.id -Presented $item.contentId MockCallJson -Command "Invoke-RemoveItemFromProject -ProjectId $($p.id) -ItemId $($i.itemId)" -fileName $i.removeIssueFromProjectMockFile @@ -19,11 +19,11 @@ function Test_RemoveProjectIssue_SUCCESS { # Assert Assert-AreEqual -Expected $i.url -Presented $result - Assert-IsFalse -Condition $(Test-ProjectItem -Url $i.url) + Assert-IsFalse -Condition $(Test-ProjectItem -Url $i.url -Owner $owner -ProjectNumber $projectNumber) - # Remove issue assocaited + # Remove issue associated $itemId = Add-ProjectItem -owner $owner -projectNumber $projectNumber -Url $i.url - Assert-IsTrue -Condition $(Test-ProjectItem -Url $i.url) + Assert-IsTrue -Condition $(Test-ProjectItem -Url $i.url -Owner $owner -ProjectNumber $projectNumber) MockCallJson -Command "Invoke-RemoveIssue -IssueId $($i.id)" -FileName "invoke-removeissue-any.json" # Act diff --git a/Test/public/items/project_item_draftissue.test.ps1 b/Test/public/items/project_item_draftissue.test.ps1 index 7e8b0c3..540d1f7 100644 --- a/Test/public/items/project_item_draftissue.test.ps1 +++ b/Test/public/items/project_item_draftissue.test.ps1 @@ -11,10 +11,8 @@ function Test_NewProjectDraftIssue { # Act $draftIssueId = New-ProjectDraftIssueDirect -Owner $owner -ProjectNumber $projectNumber -Title $title -Body $body - - $item = Get-ProjectItem -ItemId $draftIssueId - # Assert + $item = Get-ProjectItem -ItemId $draftIssueId -Owner $owner -ProjectNumber $projectNumber Assert-AreEqual -Expected $draftIssueId -Presented $item.id Assert-AreEqual -Expected $title -Presented $item.Title Assert-AreEqual -Expected $body -Presented $item.Body diff --git a/Test/public/items/use_order.test.ps1 b/Test/public/items/use_order.test.ps1 index ad5beea..bcd50d5 100644 --- a/Test/public/items/use_order.test.ps1 +++ b/Test/public/items/use_order.test.ps1 @@ -12,13 +12,34 @@ function Test_UserOrder_Success{ } -function Test_UserOrder_Success_GetItem{ +function Test_UserOrder_Success_GetItem_FAIL_NO_ENVIRONMENT{ MockCall_GetProject_700 $p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number + # We need to have the environment set to get item details in PassThru $list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone + # Act + $hasthorwn = $false + try { + $list | Use-Order 1 + } catch { + $hasthorwn = $true + Assert-IsTrue -Condition $_.Exception.Message.StartsWith("ProjectEnvironment is required.") + } + Assert-IsTrue -Condition $hasthorwn +} + +function Test_UserOrder_Success_GetItem{ + MockCall_GetProject_700 + + $p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number + + # We need to have the environment set to get item details in PassThru + Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber + $list = Search-ProjectItem -IncludeDone + # Act $result = $list | Use-Order 1 -PassThru @@ -33,7 +54,9 @@ function Test_UserOrder_Success_OpenBrowser{ MockCallToNull -command "Invoke-ProjectHelperOpenUrl -Url $url" - $list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone + # We need to have the environment set to get item details in PassThru + Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber + $list = Search-ProjectItem -IncludeDone # Act $result = $list | Use-Order $order -OpenInBrowser @@ -48,7 +71,9 @@ function Test_UserOrder_Success_Passthru{ $p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number $order = $p.issue.order ; $id = $p.issue.id - $list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone + # We need to have the environment set to get item details in PassThru + Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber + $list = Search-ProjectItem -IncludeDone # Act $result = $list | Use-Order $order -PassThru diff --git a/Test/public/project_item.searchprojectitem.test.ps1 b/Test/public/project_item.searchprojectitem.test.ps1 index f02703d..112b9b0 100644 --- a/Test/public/project_item.searchprojectitem.test.ps1 +++ b/Test/public/project_item.searchprojectitem.test.ps1 @@ -7,18 +7,22 @@ function Test_SearchProjectItem_Basic_SUCCESS { $p = Get-Mock_Project_700 $Owner = $p.owner $ProjectNumber = $p.number - $filter = $p.searchInTitle.titleFilter - $expected = $p.searchInTitle.Titles.Count + $s = $p.searchInTitle + $filter = $s.titleFilter + $expected = $s.Titles.Count + $defautlAttrs = $s.attributesDefault $result = Search-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -Filter $filter Assert-Count -Expected $expected -Presented $result - # Default attributes should be id + Title + # Default attributes should be id + Title + RepositoryName foreach($r in $result){ $props = $r.PSObject.Properties.Name - Assert-Count -Expected 2 -Presented $props - Assert-Contains -Expected "id" -Presented $props - Assert-Contains -Expected "Title" -Presented $props + + Assert-Count -Expected $defautlAttrs.Count -Presented $props + $defautlAttrs | ForEach-Object -Process { + Assert-Contains -Expected $_ -Presented $props + } } } diff --git a/Test/public/project_item.test.ps1 b/Test/public/project_item.test.ps1 index 18501cd..f870acc 100644 --- a/Test/public/project_item.test.ps1 +++ b/Test/public/project_item.test.ps1 @@ -192,7 +192,7 @@ function Test_TestProjectItem_Success{ # Not found - $result = Test-ProjectItem -Url "https://github.com/octodemo/Project-700/issues/999" + $result = Test-ProjectItem -Url "https://github.com/octodemo/Project-700/issues/999" -Owner $owner -ProjectNumber $projectNumber Assert-IsFalse -Condition $result } diff --git a/Test/public/project_items_staged.test.ps1 b/Test/public/project_items_staged.test.ps1 index 25a07ff..082dbda 100644 --- a/Test/public/project_items_staged.test.ps1 +++ b/Test/public/project_items_staged.test.ps1 @@ -15,7 +15,7 @@ function Test_SyncProjectItemsStaged_NoStaged { function Test_SyncProjectItemsStaged_SUCCESS_Number{ - $Owner = "octodemo" ; $ProjectNumber = 700 + $p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number $projectId = "PVT_kwDOAlIw4c4BCe3V" # project item issue @@ -52,8 +52,7 @@ function Test_SyncProjectItemsStaged_SUCCESS_Number{ # Mock get-project # MockCall_GetProject_700 -skipItems - MockCall_GetProject_700 - $null = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force + MockCall_GetProject -MockProject $p -Cache Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId1 $fieldName $fieldValue @@ -62,7 +61,7 @@ function Test_SyncProjectItemsStaged_SUCCESS_Number{ $staged = Get-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber Assert-AreEqual -Expected $fieldValue -Presented $staged.$itemId1.$fieldId.Value - $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged + $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber Assert-AreEqual -Expected $fieldValue -Presented $showStaged.$fieldName.Value Assert-AreEqual -Expected $fieldBeforeValueNumber -Presented $showStaged.$fieldName.Before @@ -81,7 +80,6 @@ function Test_SyncProjectItemsStaged_SUCCESS_Number{ function Test_SyncProjectItemsStaged_SUCCESS_Date{ - $Owner = "octodemo" ; $ProjectNumber = 700 $projectId = "PVT_kwDOAlIw4c4BCe3V" # project item issue @@ -117,8 +115,8 @@ function Test_SyncProjectItemsStaged_SUCCESS_Date{ } # Mock get-project - MockCall_GetProject_700 - $null = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber + $p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number + MockCall_GetProject -MockProject $p -Cache Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId1 $fieldName $fieldValue @@ -127,7 +125,8 @@ function Test_SyncProjectItemsStaged_SUCCESS_Date{ $staged = Get-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber Assert-AreEqual -Expected $fieldValue -Presented $staged.$itemId1.$fieldId.Value - $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged + # During interactive use we will set project environment avoiding to use the owner an PN parameters + $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber Assert-AreEqual -Expected $fieldValue -Presented $showStaged.$fieldName.Value Assert-AreEqual -Expected $fieldBeforeValueDate -Presented $showStaged.$fieldName.Before @@ -205,7 +204,7 @@ function Test_SyncProjectItemsStaged_SUCCESS_SingleSelect{ } } - $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged + $showStaged = Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber | Show-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber Assert-AreEqual -Expected $fieldNewValue -Presented $showStaged.$fieldName.Value Assert-AreEqual -Expected $fieldBeforeValueSingleSelect -Presented $showStaged.$fieldName.Before diff --git a/private/projectDatabase/project_database_Async.ps1 b/private/projectDatabase/project_database_Async.ps1 index 99b8f66..fe33fcf 100644 --- a/private/projectDatabase/project_database_Async.ps1 +++ b/private/projectDatabase/project_database_Async.ps1 @@ -7,8 +7,7 @@ function Sync-ProjectDatabaseAsync { [Parameter()][int]$SyncBatchSize = 30 ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } +($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if (! $(Test-ProjectDatabaseStaged -Owner $Owner -ProjectNumber $ProjectNumber)) { "Nothing to commit" | Write-MyHost diff --git a/private/projectDatabase/project_database_Sync.ps1 b/private/projectDatabase/project_database_Sync.ps1 index 22b17bb..a0519cd 100644 --- a/private/projectDatabase/project_database_Sync.ps1 +++ b/private/projectDatabase/project_database_Sync.ps1 @@ -7,8 +7,7 @@ function Sync-ProjectDatabase{ [Parameter()][int]$ProjectNumber ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if(! $(Test-ProjectDatabaseStaged -Owner $Owner -ProjectNumber $ProjectNumber)){ "Nothing to commit" | Write-MyHost diff --git a/public/environment/environmentCache.ps1 b/public/environment/environmentCache.ps1 index 53300f1..2f4b911 100644 --- a/public/environment/environmentCache.ps1 +++ b/public/environment/environmentCache.ps1 @@ -1,5 +1,5 @@ -$DEFAULT_DISPLAY_FIELDS = @("id","title") +$DEFAULT_DISPLAY_FIELDS = @("id","Title") function Get-ProjectHelperEnvironment{ [CmdletBinding()] @@ -51,38 +51,6 @@ function Set-ProjectHelperEnvironment{ } Export-ModuleMember -Function Set-ProjectHelperEnvironment -function Get-OwnerAndProjectNumber{ - [CmdletBinding()] - param( - [Parameter()][string]$Owner, - [Parameter()][string]$ProjectNumber - ) - - if($ProjectNumber -eq "0"){ - $ProjectNumber = [string]::Empty - } - - $ownerCache = Get-EnvItem -Name "EnvironmentCache_Owner" - if([string]::IsNullOrWhiteSpace($Owner)){ - $owner = $ownerCache - } else { - if($owner -ne $ownerCache){ - Set-EnvItem -Name "EnvironmentCache_Owner" -Value $Owner - } - } - - $projectNumberCache = Get-EnvItem -Name "EnvironmentCache_ProjectNumber" - if([string]::IsNullOrWhiteSpace($ProjectNumber)){ - $ProjectNumber = $projectNumberCache - } else { - if($ProjectNumber -ne $projectNumberCache){ - Set-EnvItem -Name "EnvironmentCache_ProjectNumber" -Value $ProjectNumber - } - } - - return ($owner, $ProjectNumber) -} - function Get-EnvironmentDisplayFields{ [CmdletBinding()] param( diff --git a/public/environment/resolveProjectParameters.ps1 b/public/environment/resolveProjectParameters.ps1 new file mode 100644 index 0000000..3257ce1 --- /dev/null +++ b/public/environment/resolveProjectParameters.ps1 @@ -0,0 +1,59 @@ +function Resolve-ProjectParameters { + [CmdletBinding()] + param( + [Parameter(Position = 0)][string]$ProjectNumber, + [Parameter(Position = 1)][string]$Owner, + [Parameter()][switch]$DoNotThrow + + ) + + if($ProjectNumber -eq 0){ + $ProjectNumber = "" + } + + if([string]::IsNullOrWhiteSpace($Owner)){ + $Owner = Get-EnvItem -Name "EnvironmentCache_Owner" + } + + if([string]::IsNullOrWhiteSpace($ProjectNumber)){ + $ProjectNumber = Get-EnvItem -Name "EnvironmentCache_ProjectNumber" + } + + if([string]::IsNullOrWhiteSpace($ProjectNumber) -or [string]::IsNullOrWhiteSpace($Owner)){ + if(-Not $DoNotThrow){ + throw "Owner and ProjectNumber parameters are required. Please provide them as parameters or set them in the environment cache." + } else { + Write-MyDebug "Owner or ProjectNumber is missing. Returning null values." -Section "Resolve-ProjectParameters" + return ($null, $null) + } + } + + return ($Owner, $ProjectNumber) +} + +function Test-ProjectParameters { + [CmdletBinding()] + param( + [Parameter(Position = 0)][string]$ProjectNumber, + [Parameter(Position = 1)][string]$Owner + ) + + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber -DoNotThrow + + return -not ([string]::IsNullOrWhiteSpace($Owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) +} + +function Set-ProjectParameters { + [CmdletBinding()] + [Alias("Set-Project")] + param( + [Parameter(Mandatory,ValueFromPipelineByPropertyName, Position = 0)][string]$Owner, + [Parameter(Mandatory,ValueFromPipelineByPropertyName, Position = 1)][string]$ProjectNumber + ) + + process { + + Set-ProjectHelperEnvironment -Owner $Owner -ProjectNumber $ProjectNumber + } + +} Export-ModuleMember -Function Set-ProjectParameters -Alias "Set-Project" \ No newline at end of file diff --git a/public/fields/project_fields_list.ps1 b/public/fields/project_fields_list.ps1 index 56e892f..ec3f67f 100644 --- a/public/fields/project_fields_list.ps1 +++ b/public/fields/project_fields_list.ps1 @@ -40,8 +40,7 @@ function Get-ProjectFields{ [Parameter()][switch]$Force ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force -SkipItems diff --git a/public/integrations/sync-ProjectItemsBetweenProjects.ps1 b/public/integrations/sync-ProjectItemsBetweenProjects.ps1 index 552598e..a779147 100644 --- a/public/integrations/sync-ProjectItemsBetweenProjects.ps1 +++ b/public/integrations/sync-ProjectItemsBetweenProjects.ps1 @@ -45,13 +45,13 @@ function Update-ProjectItemsBetweenProjects { ) # Get source project before destination to avoid project infor environment caching - ($SourceOwner,$SourceProjectNumber) = Get-OwnerAndProjectNumber -Owner $SourceOwner -ProjectNumber $SourceProjectNumber + ($SourceOwner,$SourceProjectNumber) = Resolve-ProjectParameters -Owner $SourceOwner -ProjectNumber $SourceProjectNumber -DoNotThrow if([string]::IsNullOrWhiteSpace($SourceOwner) -or [string]::IsNullOrWhiteSpace($SourceProjectNumber)){ "Source Owner and ProjectNumber are required" | Write-MyError; return $null} # Use Force parameter unless NoRefreshSource is specified $sourceProject = Get-Project -Owner $SourceOwner -ProjectNumber $SourceProjectNumber -Force:(-not $NoRefreshSource) # Get destination project for error handling and caching - ($DestinationOwner,$DestinationProjectNumber) = Get-OwnerAndProjectNumber -Owner $DestinationOwner -ProjectNumber $DestinationProjectNumber + ($DestinationOwner,$DestinationProjectNumber) = Resolve-ProjectParameters -Owner $DestinationOwner -ProjectNumber $DestinationProjectNumber -DoNotThrow if([string]::IsNullOrWhiteSpace($DestinationOwner) -or [string]::IsNullOrWhiteSpace($DestinationProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} # Use Force parameter unless NoRefreshDestination is specified $destinationProject = Get-Project -Owner $DestinationOwner -ProjectNumber $DestinationProjectNumber -Force:(-not $NoRefreshDestination) diff --git a/public/integrations/update-ProjectItemsStatusOnDueDate.ps1 b/public/integrations/update-ProjectItemsStatusOnDueDate.ps1 index 64607e5..d7632ee 100644 --- a/public/integrations/update-ProjectItemsStatusOnDueDate.ps1 +++ b/public/integrations/update-ProjectItemsStatusOnDueDate.ps1 @@ -87,7 +87,7 @@ function Update-ProjectItemsStatusOnDueDate{ [Parameter()][string]$StatusFieldName = "Status", [Parameter(Mandatory)][string]$DateFieldName, [Parameter(Mandatory)][string]$StatusAction, - [Parameter(Mandatory)][string]$StatusPlanned, + [Parameter()][string]$StatusPlanned, [Parameter()][string]$StatusDone, [Parameter()][switch]$AnyStatus, [Parameter()][switch]$IncludeDoneItems, @@ -96,8 +96,7 @@ function Update-ProjectItemsStatusOnDueDate{ "Updating project items status with due date for project $owner/$ProjectNumber" | Write-MyHost - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Sync project if needed $null = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force @@ -129,14 +128,13 @@ function Invoke-ProjectInjectionOnDueDate { [Parameter(Mandatory)][string]$StatusFieldName, [Parameter(Mandatory)][string]$DateFieldName, [Parameter(Mandatory)][string]$StatusAction, - [Parameter(Mandatory)][string]$StatusPlanned, + [Parameter()][string]$StatusPlanned, [Parameter()][string]$StatusDone, [Parameter()][switch]$AnyStatus, [Parameter()][switch]$IncludeDoneItems ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $items = Get-ProjectItems -Owner $Owner -ProjectNumber $ProjectNumber -IncludeDone:$IncludeDoneItems diff --git a/public/integrations/update-ProjectItemsWithInjection.ps1 b/public/integrations/update-ProjectItemsWithInjection.ps1 index 875a924..c98be68 100644 --- a/public/integrations/update-ProjectItemsWithInjection.ps1 +++ b/public/integrations/update-ProjectItemsWithInjection.ps1 @@ -26,8 +26,7 @@ function Update-ProjectItemsWithInjection{ [Parameter()] [switch]$IncludeDoneItems, [Parameter()] [switch]$Force ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get the project $project = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force @@ -104,7 +103,7 @@ function Invoke-ProjectInjection { ) begin{ - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $ret = @{ FailedIntegration = @() diff --git a/public/integrations/update-ProjectItemsWithIntegration.ps1 b/public/integrations/update-ProjectItemsWithIntegration.ps1 index 21aa94f..0db7187 100644 --- a/public/integrations/update-ProjectItemsWithIntegration.ps1 +++ b/public/integrations/update-ProjectItemsWithIntegration.ps1 @@ -21,8 +21,7 @@ function Update-ProjectItemsWithIntegration{ [Parameter()] [string]$Slug, [Parameter()] [switch]$IncludeDoneItems ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Sync project if needed $null = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force @@ -45,8 +44,7 @@ function Invoke-ProjectInjectionWithIntegration{ [Parameter()] [switch]$IncludeDoneItems ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $items = Get-ProjectItems -Owner $Owner -ProjectNumber $ProjectNumber -IncludeDone:$IncludeDoneItems diff --git a/public/issues/Add-IssuePullRequestComment.ps1 b/public/issues/Add-IssuePullRequestComment.ps1 index 3180ae8..2aab172 100644 --- a/public/issues/Add-IssuePullRequestComment.ps1 +++ b/public/issues/Add-IssuePullRequestComment.ps1 @@ -7,7 +7,7 @@ function Add-IssuePullRequestCommentDirect { ) # Try to find item on context project - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -DoNotThrow if (! [string]::IsNullOrWhiteSpace($owner) -and ! [string]::IsNullOrWhiteSpace($ProjectNumber)) { $item = Get-ProjectItem -ItemId $ItemId -Owner $Owner -ProjectNumber $ProjectNumber } diff --git a/public/issues/Add-ProjectSubIssue.ps1 b/public/issues/Add-ProjectSubIssue.ps1 index 59271a3..1744cb5 100644 --- a/public/issues/Add-ProjectSubIssue.ps1 +++ b/public/issues/Add-ProjectSubIssue.ps1 @@ -11,8 +11,7 @@ function Add-ProjectSubIssueDirect { [Parameter()][switch]$ReplaceParent ) - $Owner, $ProjectNumber = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ throw "Owner and ProjectNumber are required"} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get Parent Issue $parent = Get-ProjectItem -ItemId $ItemId -Owner $Owner -ProjectNumber $ProjectNumber @@ -79,7 +78,8 @@ function Add-ProjectSubissueCreate { ) # Get Parent item - $ProjectOwner,$ProjectNumber = Get-OwnerAndProjectNumber -Owner $ProjectOwner -ProjectNumber $ProjectNumber + ($ProjectOwner,$ProjectNumber) = Resolve-ProjectParameters -Owner $ProjectOwner -ProjectNumber $ProjectNumber + $item = Get-ProjectItem -ItemId $ItemId -Owner $ProjectOwner -ProjectNumber $ProjectNumber if($null -eq $Item){ Write-MyError "Parent ItemId [$ItemId] not found on project $ProjectOwner/$ProjectNumber" diff --git a/public/issues/Get-ProjectIssue.ps1 b/public/issues/Get-ProjectIssue.ps1 index 6a47fad..bb86d3a 100644 --- a/public/issues/Get-ProjectIssue.ps1 +++ b/public/issues/Get-ProjectIssue.ps1 @@ -36,13 +36,14 @@ function Get-ProjectIssue { ) # Check the active project cache just in case is there. - # We could try to check all cached projects but that could be - # Challenging as we are not user of the cache status for that item - $owner,$projectNumber = Get-OwnerAndProjectNumber - $item = Get-ProjectItemByUrl -Owner $owner -ProjectNumber $projectNumber -Url $Url -PassThru -Force:$Force - if( $item ) { - $issue = $item | Convert-ItemToIssue - return $issue + $owner,$projectNumber = Resolve-ProjectParameters -DoNotThrow + if(Test-ProjectParameters){ + # There is a cached project. + $item = Get-ProjectItemByUrl -Owner $owner -ProjectNumber $projectNumber -Url $Url -PassThru -Force:$Force + if( $item ) { + $issue = $item | Convert-ItemToIssue + return $issue + } } # Not in cache. Get Direct diff --git a/public/issues/New-ProjectIssue.ps1 b/public/issues/New-ProjectIssue.ps1 index ad838b8..a237450 100644 --- a/public/issues/New-ProjectIssue.ps1 +++ b/public/issues/New-ProjectIssue.ps1 @@ -68,7 +68,7 @@ function New-ProjectIssue { } # Add issue to project - $ProjectOwner,$ProjectNumber = Get-OwnerAndProjectNumber -Owner $ProjectOwner -ProjectNumber $ProjectNumber + ($ProjectOwner,$ProjectNumber) = Resolve-ProjectParameters -Owner $ProjectOwner -ProjectNumber $ProjectNumber $itemId = Add-ProjectItem -Owner $ProjectOwner -ProjectNumber $ProjectNumber -Url $url diff --git a/public/issues/Remove-IssueDirect.ps1 b/public/issues/Remove-IssueDirect.ps1 index abaee34..5669e61 100644 --- a/public/issues/Remove-IssueDirect.ps1 +++ b/public/issues/Remove-IssueDirect.ps1 @@ -18,11 +18,12 @@ function Remove-IssueDirect { $repoUrl = $result.data.deleteIssue.repository.url - # Verify response value - if($issue.repository -ne $repoUrl){ - throw "Issue not removed properly" + # Check that issue was part of the returned repo url + if($issue.url.StartsWith($repourl)){ + return $true + # Remove properly } - return $true - + # Issue not removed properly + throw "Issue with URL $Url not removed properly. Repo URL in response is [$repoUrl]" } \ No newline at end of file diff --git a/public/items/project_item.ps1 b/public/items/project_item.ps1 index c484c2f..0ec8aac 100644 --- a/public/items/project_item.ps1 +++ b/public/items/project_item.ps1 @@ -21,8 +21,7 @@ function Get-ProjectItem { ) begin { - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems @@ -61,8 +60,7 @@ function Get-ProjectItemByUrl{ ) begin { - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems @@ -89,7 +87,7 @@ function Get-ProjectItemByUrl{ if($PassThru){ $ret = $item } else { - $ret = Format-ProjectItem -Item $item -Attributes @("id", "Title") + $ret = Format-ProjectItem -Item $item -Attributes $DEFAULT_DISPLAY_FIELDS } return $ret } @@ -102,19 +100,26 @@ function Get-ProjectItemUrl{ [Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline, Position = 0)][Alias("id")][string]$ItemId, [Parameter()][string]$Owner, [Parameter()][string]$ProjectNumber, - [Parameter()][switch]$Force + [Parameter()][switch]$Force, + [Parameter()][switch]$SetClipboard + ) process{ $item = Get-ProjectItem -ItemId $ItemId -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force - if($item){ - return $item.url - } else { + if(-not $item){ "Item [$ItemId] not found" | Write-MyError return $null } + $ret = $item.url + + if($SetClipboard){ + $ret | Set-Clipboard + } + + return $ret } } Export-ModuleMember -Function Get-ProjectItemUrl -Alias "gpiu" @@ -129,8 +134,7 @@ function Test-ProjectItem { ) begin { - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber } @@ -160,6 +164,10 @@ function Search-ProjectItem { [Parameter()][switch]$Exact ) + # if $attributes is empty add RepositoryName + if(-not ($Attributes)){ + $Attributes = @("RepositoryName") + $Attributes + } # if $attributes does not contain "Title" add it at the front if(-not ($Attributes -contains "Title")){ @@ -170,8 +178,8 @@ function Search-ProjectItem { $Attributes = @("id") + $Attributes } - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + +($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get items as hashtable for later queries $items = Get-ProjectItems -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force -IncludeDone:$IncludeDone -AsHashtable @@ -230,7 +238,7 @@ function Format-ProjectItem{ begin { if([string]::IsNullOrWhiteSpace($Attributes)){ - $Attributes = @("id", "Title") + $Attributes = $DEFAULT_DISPLAY_FIELDS } } @@ -264,8 +272,7 @@ function Get-ProjectItems { [Parameter()][switch]$AsHashtable ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } +($owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber try { $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force @@ -317,15 +324,9 @@ function Open-ProjectItem { ) begin { + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber - - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Open-ProjectItem" - } - - "Project set to [$owner/$ProjectNumber]" | Write-Verbose - + "Project set to [$Owner/$ProjectNumber]" | Write-Verbose } process { @@ -376,8 +377,7 @@ function Edit-ProjectItem { process{ - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Force cache update # Full sync if force. Skip items if not force @@ -419,8 +419,7 @@ function Reset-ProjectItem { process{ - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Force cache update # Full sync if force. Skip items if not force @@ -459,8 +458,7 @@ function Add-ProjectItemDirect { ) begin{ - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get project id $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber @@ -529,8 +527,7 @@ function Remove-ProjectItemDirect { ) begin { - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get project id $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber @@ -608,6 +605,10 @@ function Remove-ProjectItem { ) + begin { + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber + } + process { # Get item to delete issue later @@ -618,7 +619,7 @@ function Remove-ProjectItem { } # Find Item to remove - $item = Get-ProjectItem -ItemId $ItemId + $item = Get-ProjectItem -ItemId $ItemId -Owner $Owner -ProjectNumber $ProjectNumber if( ! $item){ "Item [$ItemId] not found, cannot delete issue" | Write-MyWarning diff --git a/public/items/project_item_draftissue.ps1 b/public/items/project_item_draftissue.ps1 index 95ca606..d7d351c 100644 --- a/public/items/project_item_draftissue.ps1 +++ b/public/items/project_item_draftissue.ps1 @@ -13,7 +13,7 @@ function New-ProjectDraftIssueDirect { [Parameter()][switch]$OpenOnCreation ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber diff --git a/public/items/project_item_show.ps1 b/public/items/project_item_show.ps1 index ee97f4f..3f175fa 100644 --- a/public/items/project_item_show.ps1 +++ b/public/items/project_item_show.ps1 @@ -18,7 +18,7 @@ function Show-ProjectItem{ begin{ - $Owner,$ProjectNumber = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if($OpenInEditor){ Start-WriteBuffer @@ -27,7 +27,7 @@ function Show-ProjectItem{ process { - $item = Get-ProjectItem -ItemId $ItemId + $item = Get-ProjectItem -ItemId $ItemId -Owner $Owner -ProjectNumber $ProjectNumber if($OpenInBrowser){ Open-Url -Url $item.url diff --git a/public/items/project_item_staged.ps1 b/public/items/project_item_staged.ps1 index e4b3437..c369388 100644 --- a/public/items/project_item_staged.ps1 +++ b/public/items/project_item_staged.ps1 @@ -11,8 +11,7 @@ function Get-ProjectItemStaged{ [Parameter(Position = 1)][string]$ProjectNumber ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project $Owner $ProjectNumber -SkipItems @@ -32,8 +31,7 @@ function Test-ProjectItemStaged{ [Parameter()][string]$Owner, [Parameter()][string]$ProjectNumber ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber return $(Test-ProjectDatabaseStaged -Owner $Owner -ProjectNumber $ProjectNumber) @@ -51,8 +49,7 @@ function Sync-ProjectItemStaged{ [Parameter()][string]$Owner, [Parameter()][string]$ProjectNumber ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if(! $(Test-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber)){ "Nothing to commit" | Write-MyHost @@ -76,8 +73,7 @@ function Sync-ProjectItemStagedAsync{ [Parameter()][string]$ProjectNumber, [Parameter()][int]$SyncBatchSize = 30 ) - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if(! $(Test-ProjectItemStaged -Owner $Owner -ProjectNumber $ProjectNumber)){ "Nothing to commit" | Write-MyHost @@ -105,8 +101,7 @@ function Reset-ProjectItemStaged{ ) begin{ - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project $Owner $ProjectNumber } @@ -139,8 +134,7 @@ function Show-ProjectItemStaged{ ) begin{ - ($Owner,$ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)){ "Owner and ProjectNumber are required" | Write-MyError; return $null} + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $db = Get-Project $Owner $ProjectNumber } diff --git a/public/items/use_order.ps1 b/public/items/use_order.ps1 index de5394a..45cb4f9 100644 --- a/public/items/use_order.ps1 +++ b/public/items/use_order.ps1 @@ -49,6 +49,11 @@ function Use-Order { return } + # To work on the item we need Owner and ProjectNumber from the environment. If not set, we cannot continue. + if( -Not (Test-ProjectParameters)){ + throw "ProjectEnvironment is required. Run Set-ProjectHelperEnvironment" + } + #return item if($PassThru) { $i = Get-ProjectItem -ItemId $itemId diff --git a/public/project/addprojectuser.ps1 b/public/project/addprojectuser.ps1 index 840893b..c52757f 100644 --- a/public/project/addprojectuser.ps1 +++ b/public/project/addprojectuser.ps1 @@ -12,10 +12,7 @@ function Add-ProjectUser { begin{ - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Get-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $project = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems diff --git a/public/project/getproject.ps1 b/public/project/getproject.ps1 index 4458885..5e57a7a 100644 --- a/public/project/getproject.ps1 +++ b/public/project/getproject.ps1 @@ -2,15 +2,12 @@ function Get-Project { [CmdletBinding()] param( [Parameter()][string]$Owner, - [Parameter()][int]$ProjectNumber, + [Parameter()][string]$ProjectNumber, [Parameter()][switch]$SkipItems, [Parameter()][switch]$Force ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Get-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if ($Force -or -Not (Test-ProjectDatabase -Owner $Owner -ProjectNumber $ProjectNumber)) { $result = Update-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems:$SkipItems @@ -35,10 +32,7 @@ function Update-Project{ [Parameter()][switch]$SkipItems ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Update-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $ret = Update-ProjectDatabase -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems:$SkipItems -Query $Query @@ -58,10 +52,7 @@ function Get-ProjectId { [Parameter()][int]$ProjectNumber ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Get-ProjectId" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get project id $project = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems @@ -78,10 +69,7 @@ function Open-Project{ [Parameter(ValueFromPipelineByPropertyName)][int]$ProjectNumber ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Open-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber $project = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -skipItems if (-not $project) { @@ -105,20 +93,3 @@ function Open-Project{ } } Export-ModuleMember -Function Open-Project - -function Set-Project { - [CmdletBinding()] - param( - [Parameter(ValueFromPipelineByPropertyName, Position = 0)][string]$Owner, - [Parameter(ValueFromPipelineByPropertyName, Position = 1)][string]$ProjectNumber - ) - - process { - - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Open-Project" - } - } - -} Export-ModuleMember -Function Set-Project \ No newline at end of file diff --git a/public/project/updateprojectrecent.ps1 b/public/project/updateprojectrecent.ps1 index 7749855..643cb39 100644 --- a/public/project/updateprojectrecent.ps1 +++ b/public/project/updateprojectrecent.ps1 @@ -8,10 +8,7 @@ function Update-ProjectRecent{ [Parameter()][int]$ProjectNumber ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Update-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber # Get Last update date $query = Get-UpdateRecentQuery -Owner $Owner -ProjectNumber $ProjectNumber diff --git a/public/projectCache/projectCache.ps1 b/public/projectCache/projectCache.ps1 index 42a1df8..384a0ba 100644 --- a/public/projectCache/projectCache.ps1 +++ b/public/projectCache/projectCache.ps1 @@ -5,10 +5,7 @@ function Remove-ProjectCache{ [Parameter()][int]$ProjectNumber ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Get-Project" - } + ($Owner,$ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber if(Test-ProjectDatabaseStaged -Owner $Owner -ProjectNumber $ProjectNumber){ throw "Project $Owner/$ProjectNumber has pending changes. Please commit changes with Sync-ProjectItemStaged or discard them with Reset-ProjectItemStaged before resetting the ProjectCache." @@ -24,10 +21,8 @@ function Get-ProjectCacheFile{ [Parameter()][int]$ProjectNumber ) - ($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber - if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { - throw "Owner and ProjectNumber are required on Get-Project" - } + ($Owner, $ProjectNumber) = Resolve-ProjectParameters -Owner $Owner -ProjectNumber $ProjectNumber + $key = Get-DatabaseKey -Owner $Owner -ProjectNumber $ProjectNumber $path = Get-DatabaseFile -Key $key