Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Test/private/MockCall_Project700.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ function Get-Mock_Project_700 {
$issue = $pActual.items.nodes | Where-Object { $_.content.title -eq "Issue for development" }
$fss = $issue.fieldValues.nodes | Where-Object { $_.field.id -eq $($fieldsingleselect.id) }
$project.issue = @{
order = 20 # order of this item when calling spi
id = $issue.id
number = $issue.content.number
contentId = $issue.content.id
Expand Down
2 changes: 1 addition & 1 deletion Test/public/items/project_item_show.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ function Test_OpenInEditor{

$text = "Sample Text for Editor"

$command = '"{content}" | code -w - '
$command = '"{content}" | code -w -'
$command = $command -replace '\{content\}', $text

MockCallToNull -Command $command
Expand Down
58 changes: 58 additions & 0 deletions Test/public/items/use_order.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
function Test_UserOrder_Success{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order

Assert-Count -Expected $($p.items.totalCount +4) -Presented $result

}

function Test_UserOrder_Success_GetItem{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order 1 -PassThru

Assert-AreEqual -Expected $($list[1].id) -Presented $result.id
}

function Test_UserOrder_Success_OpenBrowser{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number
$order = $p.issue.order ; $url = $p.issue.url

MockCallToNull -command "Invoke-ProjectHelperOpenUrl -Url $url"

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order $order -OpenInBrowser

# Assert
Assert-IsNull -Object $result
}

function Test_UserOrder_Success_Passthru{
MockCall_GetProject_700

$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

# Act
$result = $list | Use-Order $order -PassThru

# Assert
Assert-AreEqual -Expected $id -Presented $result.id
}
3 changes: 2 additions & 1 deletion Test/traceInvoke.log
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Invoke-CreateDraftItem -ProjectId PVT_kwDOAlIw4c4BCe3V -Title "DraftIssue create
Invoke-CreateIssue -RepositoryId R_kgDOPrRnkQ -Title "Random value title" -Body "Random value body"
Invoke-GetIssueOrPullRequest -Url https://github.com/octodemo/rulasg-dev-1/issues/46
Invoke-AddItemToProject -ProjectId PVT_kwDOAlIw4c4BCe3V -ContentId I_kwDOPrRnkc7T2Al2
"Sample Text for Editor" | code -w -
"Sample Text for Editor" | code -w -
Invoke-RemoveItemFromProject -ProjectId PVT_kwDOAlIw4c4BCe3V -ItemId PVTI_lADOAlIw4c4BCe3VzggVZH8
Invoke-RemoveIssue -IssueId I_kwDOPrRnkc7T2Al2
Import-Module /Users/rulasg/code/ProjectHelper ; Invoke-GitHubUpdateItemValues -ProjectId PVT_kwDOAlIw4c4BCe3V -ItemId PVTI_lADOAlIw4c4BCe3Vzgeiodc -FieldId PVTF_lADOAlIw4c4BCe3Vzg0rhko -Value "new value of the comment 10" -Type text
Expand Down Expand Up @@ -80,3 +80,4 @@ Invoke-GetUser -Handle rauldibildos
Invoke-UpdateProjectV2Collaborators -ProjectId PVT_kwDOAlIw4c4BCe3V -collaborators "MDQ6VXNlcjY4ODQ0MDg= U_kgDOC_E3gw" -Role "WRITER"
Invoke-GitHubOrgProjectWithFields -Owner octodemo -ProjectNumber 700 -afterFields "" -afterItems "" -query "updated:>=2024-02-18"
Invoke-GitHubOrgProjectWithFields -Owner octodemo -ProjectNumber 700 -afterFields "" -afterItems "" -query "updated:>=2025-03-15"
Invoke-ProjectHelperOpenUrl -Url https://github.com/octodemo/rulasg-dev-1/issues/26
33 changes: 26 additions & 7 deletions include/openFilesUrls.ps1
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
function Open-Url {

# Include openFilesUrls.ps1
# Provides controls to open files and URLs in the default system applications.
# Use $MODULE_NAME variable to set up functions names

Set-MyInvokeCommandAlias -Alias OpenUrl -Command "Invoke-$($MODULE_NAME)OpenUrl -Url {url}"

function Invoke-ModuleNameOpenUrl{
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[string]$Url
param(
[Parameter(Mandatory = $true)][string]$Url
)

process {
try {
try {
# Determine the operating system
if ($IsWindows -or $env:OS -match "Windows") {
# Windows - use Start-Process
Expand Down Expand Up @@ -47,6 +51,21 @@ function Open-Url {
catch {
Write-Error "Failed to open URL: $_"
}
}
Copy-Item -path Function:Invoke-ModuleNameOpenUrl -Destination Function:"Invoke-$($MODULE_NAME)OpenUrl"
Export-ModuleMember -Function "Invoke-$($MODULE_NAME)OpenUrl"


function Open-Url {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[string]$Url
)

process {
Invoke-MyCommand -Command OpenUrl -Parameters @{url = $Url}
}
}

Expand Down
10 changes: 7 additions & 3 deletions public/items/project_item.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,15 @@ function Format-ProjectItem{
$ret = [pscustomobject]::new()

foreach($a in $Attributes){
if( ! $Item.$a){
# just in case attribute has an empty name
if( [string]::IsNullOrWhiteSpace($a) ){
continue
}

$ret | Add-Member -MemberType NoteProperty -Name $a -Value $Item.$a -force
# Add value even if it't empty value
$value = $Item.$a ?? ""

$ret | Add-Member -MemberType NoteProperty -Name $a -Value $value -force
}

return $ret
Expand Down Expand Up @@ -750,4 +754,4 @@ function AreEqual {
$ret = $Object1 -eq $Object2

return $ret
}
}
21 changes: 15 additions & 6 deletions public/items/project_item_show.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Set-MyinvokeCommandAlias -Alias ShowInEditor -Command '"{content}" | code -w - '
Set-MyinvokeCommandAlias -Alias ShowInEditor -Command '"{content}" | code -w -'

function Show-ProjectItem{
[CmdletBinding()]
Expand All @@ -7,10 +7,13 @@ function Show-ProjectItem{
[Parameter()][string]$Owner,
[Parameter()][int]$ProjectNumber,
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline, Position = 0)][Alias("id")][string]$ItemId,
[Parameter()][array[]]$FieldsToShow,
[Parameter()][switch]$AllComments,
[Parameter()][switch]$OpenInEditor,
[Parameter()][Alias("W")][switch]$OpenInWebBrowser
[Parameter()][Alias("A")][switch]$AllComments,
[Parameter()][Alias("E")][switch]$OpenInEditor,
[Parameter()][Alias("W")][switch]$OpenInBrowser,
[Parameter()][Alias("C")][switch]$ClearScreen,

# Custom Fields to show on header
[Parameter()][array[]]$FieldsToShow
)

begin{
Expand All @@ -26,7 +29,7 @@ function Show-ProjectItem{

$item = Get-ProjectItem -ItemId $ItemId

if($OpenInWebBrowser){
if($OpenInBrowser){
Open-Url -Url $item.url
}

Expand All @@ -42,6 +45,12 @@ function Show-ProjectItem{
)
}

# Clear screen before showing if requested
if($ClearScreen){
Clear-Host
Set-Clipboard $ItemId
}

# Before all
addJumpLine -message "Header Start"

Expand Down
35 changes: 22 additions & 13 deletions public/items/use_order.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ function Use-Order {
[Parameter(Position = 0)][int]$Ordinal = -1,
[Parameter(ValueFromPipeline)][array]$List,
[Parameter()][switch]$OpenInEditor,
[Parameter()][Alias("w")][switch]$OpenInBrowser
[Parameter()][Alias("w")][switch]$OpenInBrowser,
[Parameter()][switch]$PassThru,
[Parameter()][Alias("C")][switch]$ClearScreen
)

begin {
Expand All @@ -28,21 +30,28 @@ function Use-Order {
}

end {
if ($Ordinal -gt -1) {
$itemId = $finallist[$Ordinal].id

if($ClearScreen){
Clear-Host
}

if($OpenInBrowser){
# Open
$item = Get-ProjectItem -ItemId $itemId
Open-Url $($item.url)
} else {
# Show
Show-ProjectItem -Item $itemId -OpenInEditor:$OpenInEditor
}
# Show list of items
if ($Ordinal -lt 0) {
return $finalList | Format-Table -AutoSize
}
else {
$finalList | Format-Table -AutoSize

# Show a particular item
$itemId = $finalList[$Ordinal].id

#return item
if($PassThru) {
$i = Get-ProjectItem -ItemId $itemId
return [PsCustomObject]$i
}

# Show item in console or editor
Show-ProjectItem -Item $itemId -OpenInEditor:$OpenInEditor -OpenInBrowser:$OpenInBrowser -ClearScreen:$ClearScreen
return

}
} Export-ModuleMember -Function Use-Order -Alias "uo"
Loading