diff --git a/Test/public/getRepoAccess.test.ps1 b/Test/public/getRepoAccess.test.ps1
index 29affc1..c4adb74 100644
--- a/Test/public/getRepoAccess.test.ps1
+++ b/Test/public/getRepoAccess.test.ps1
@@ -11,7 +11,7 @@ function Test_GetRepoAccessAll_SUCCESS{
$result = Get-RepoAccess -owner $owner -repo $repo
- Assert-AreEqual -Expected $result.raulgeu -Presented 'write'
+ Assert-AreEqual -Expected $result.raulgeu -Presented 'write (invitation Pending)'
Assert-AreEqual -Expected $result.MagnusTim -Presented 'admin'
Assert-AreEqual -Expected $result.rulasg -Presented 'admin'
Assert-AreEqual -Expected $result.raulgeukk -Presented 'write'
@@ -46,7 +46,7 @@ function Test_GetRepoAccess_Success_FromInvites{
$result = Get-RepoAccess -Owner $owner -Repo $repo
- Assert-AreEqual -Expected 'write' -Presented $result.$user
+ Assert-AreEqual -Expected 'write (invitation Pending)' -Presented $result.$user
}
diff --git a/Test/public/getRepoAccessInvitation.test.ps1 b/Test/public/getRepoAccessInvitation.test.ps1
index 7adf313..ad8c022 100644
--- a/Test/public/getRepoAccessInvitation.test.ps1
+++ b/Test/public/getRepoAccessInvitation.test.ps1
@@ -1,13 +1,13 @@
function Test_GetRepoInvitations_SUCCESS{
- $owner = 'solidifycustomers' ; $repo = 'bit21' ; $user = 'raulgeu' ; $role = 'write'
+ $owner = 'solidifycustomers' ; $repo = 'bit21' ; $user = 'raulgeu' ; $role = 'write'
$GetAccessAllSuccess = $PSScriptRoot | Join-Path -ChildPath 'testData' -AdditionalChildPath 'getAccessInvitationsSuccess.json'
Set-InvokeCommandMock -Alias "gh api repos/$owner/$repo/invitations --paginate" -Command "Get-Content -Path $(($GetAccessAllSuccess | Get-Item).FullName)"
$result = Get-RepoAccessInvitations -owner $owner -repo $repo
- Assert-AreEqual -Expected $result.$user -Presented $role
+ Assert-AreEqual -Expected $result.$user -Presented "write (invitation Pending)"
}
function Test_GetRepoInvitations_SUCCESS_Ids{
diff --git a/Test/public/getRepoAccessTeam.Test.ps1 b/Test/public/getRepoAccessTeam.Test.ps1
index 09cf0b7..c4e5423 100644
--- a/Test/public/getRepoAccessTeam.Test.ps1
+++ b/Test/public/getRepoAccessTeam.Test.ps1
@@ -24,16 +24,16 @@ Test_GetRepoAccessTeam_Success{
Assert-Contains -Presented $result -Expected "| Photo | Name | Access | Email | Handle | Company |"
Assert-Contains -Presented $result -Expected "|----------------------------|--------|----------|---------|--------|------------|"
- Assert-Contains -Presented $result -Expected '|
| Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://https://github.com/MagnusTim) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://https://github.com/rulasg) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://https://github.com/raulgeukk) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Dibildos | write | raulgeu@github.com | [@raulgeu](https://https://github.com/raulgeu) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://github.com/MagnusTim) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://github.com/rulasg) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://github.com/raulgeukk) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Dibildos | write (invitation Pending) | raulgeu@github.com | [@raulgeu](https://github.com/raulgeu) | Contoso |'
# Assert Sorted by Access
Assert-IsTrue -Condition ($result[2] -like '*| admin |*' )
Assert-IsTrue -Condition ($result[3] -like '*| admin |*' )
Assert-IsTrue -Condition ($result[4] -like '*| write |*' )
- Assert-IsTrue -Condition ($result[5] -like '*| write |*' )
+ Assert-IsTrue -Condition ($result[5] -like '*| write (invitation Pending) |*' )
}
function Test_GetRepoAccessTeam_Success_NoHead{
@@ -59,8 +59,8 @@ function Test_GetRepoAccessTeam_Success_NoHead{
Assert-Count -Expected 4 -Presented $result
- Assert-Contains -Presented $result -Expected '|
| Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://https://github.com/MagnusTim) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://https://github.com/rulasg) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://https://github.com/raulgeukk) | Contoso |'
- Assert-Contains -Presented $result -Expected '|
| Raul Dibildos | write | raulgeu@github.com | [@raulgeu](https://https://github.com/raulgeu) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://github.com/MagnusTim) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://github.com/rulasg) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://github.com/raulgeukk) | Contoso |'
+ Assert-Contains -Presented $result -Expected '|
| Raul Dibildos | write (invitation Pending) | raulgeu@github.com | [@raulgeu](https://github.com/raulgeu) | Contoso |'
}
\ No newline at end of file
diff --git a/Test/public/syncRepoAccess.test.ps1 b/Test/public/syncRepoAccess.test.ps1
index 44db8a9..2a0876b 100644
--- a/Test/public/syncRepoAccess.test.ps1
+++ b/Test/public/syncRepoAccess.test.ps1
@@ -85,7 +85,7 @@ rulasg
Assert-AreEqual -Expected '=' -Presented $result.rulasg
- Assert-AreEqual -Expected '+ (write)' -Presented $result.raulgeu
+ Assert-AreEqual -Expected '+ (write (invitation Pending))' -Presented $result.raulgeu
Assert-AreEqual -Expected '-' -Presented $result.MagnusTim
@@ -125,7 +125,7 @@ rulasg
Assert-AreEqual -Expected '=' -Presented $result.rulasg
- Assert-AreEqual -Expected '+ (write)' -Presented $result.raulgeu
+ Assert-AreEqual -Expected '+ (write (invitation Pending))' -Presented $result.raulgeu
Assert-AreEqual -Expected '-' -Presented $result.MagnusTim
diff --git a/public/getRepoAccess.ps1 b/public/getRepoAccess.ps1
index 0393087..44fe3fe 100644
--- a/public/getRepoAccess.ps1
+++ b/public/getRepoAccess.ps1
@@ -66,16 +66,17 @@ function Get-RepoAccessUser{
if($permissions.$user -eq $role){
"Found user $user with access role $role" | Write-Verbose
- return $permissions.$user
+ return $role
}
$invitations = Get-RepoAccessInvitations -Owner $owner -Repo $repo
"Found $($invitations.Count) users with invitations" | Write-Verbose
- if($invitations.$user -eq $role){
+ # Invitation start with Role. Allow Pending tag
+ if($invitations.$user -Like "$role *"){
"Found user $user with invitation role $role" | Write-Verbose
- return $invitations.$user
+ return $role
}
"User $user not found with access or invitation" | Write-Verbose
diff --git a/public/getRepoAccessInvitation.ps1 b/public/getRepoAccessInvitation.ps1
index c26a06b..383156b 100644
--- a/public/getRepoAccessInvitation.ps1
+++ b/public/getRepoAccessInvitation.ps1
@@ -46,13 +46,36 @@ function Get-RepoAccessInvitations{
foreach ($item in $result) {
$ret += @{
- $item.invitee.login = $Ids ? $result.id : $result.permissions
+ # return the id or the login of the permissions depending on Ids switch
+ $item.invitee.login = $Ids ? $result.id : $(Get-Permissions $result.permissions)
}
}
return $ret
} Export-ModuleMember -Function Get-RepoAccessInvitations
+function Get-Permissions{
+ [CmdletBinding()]
+ param(
+ [Parameter(Mandatory,Position=0)][object]$Permissions
+ )
+
+ switch ($Permissions.Count) {
+ 0 { $ret = $null }
+ 1 { $ret = $Permissions }
+ { $_ -gt 1 } { $ret = $Permissions[0] }
+
+ Default {
+ throw "This should not reach this issue"
+ }
+ }
+
+ $ret = $ret + " (invitation Pending)"
+
+ return $ret
+
+}
+
function Remove-RepoAccessInvitation{
[CmdletBinding()]
param(
diff --git a/public/getRepoAccessTeam.ps1 b/public/getRepoAccessTeam.ps1
index f43fc17..1befa88 100644
--- a/public/getRepoAccessTeam.ps1
+++ b/public/getRepoAccessTeam.ps1
@@ -12,7 +12,8 @@ function Get-RepoAccessTeam{
param(
[Parameter()] [string]$Owner,
[Parameter()] [string]$Repo,
- [Parameter()] [switch]$NoHeaders
+ [Parameter()] [switch]$NoHeaders,
+ [Parameter()] [string]$Role
)
# Resolve repo name from parameters or environment
@@ -31,34 +32,75 @@ function Get-RepoAccessTeam{
$ret += "|----------------------------|--------|----------|---------|--------|------------|"
}
- $templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://https://github.com/{login}) | {company} |"
# Get access Control
$accessList = Get-RepoAccess -Owner $owner -Repo $repo
-
+
+ if($Role){
+ "Filtering by role: $Role" | Write-Verbose
+ $accessList = $accessList.GetEnumerator() | Where-Object { $_.Value -like "$Role*" }
+ }
+
# Sort by access
$accessList = $accessList.GetEnumerator() | Sort-Object -Property Value
# Create lines for each access
- Foreach($access in $accessList){
- $login = $access.Name
- $value = $access.Value
+ # Foreach($access in $accessList){
+ # $login = $access.Name
+ # $value = $access.Value
+ # $templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://https://github.com/{login}) | {company} |"
+ # $user = Get-RepoUser -Login $login
+ # $avatar = '
' -replace '{login}',$login
+
+ # $userline = $templateLine
+ # $userline = $userline -replace '{login}', $user.login
+ # $userline = $userline -replace '{avatar}', $avatar
+ # $userline = $userline -replace '{name}', $user.name
+ # $userline = $userline -replace '{access}', $value
+ # $userline = $userline -replace '{email}', $user.email
+ # $userline = $userline -replace '{company}', $user.company
+
+ # $ret+= $userline
+ # }
+
+ $ret+= $accessList | ForEach-Object {New-UserAccessLine -Login $_.Name -Access $_.Value}
+
+ return $ret
+} Export-ModuleMember -Function Get-RepoAccessTeam
+
+function New-UserAccessLine{
+ [CmdletBinding()]
+ param(
+ [Parameter(Position=0,ValueFromPipeline)][string]$Login,
+ [Parameter(Position=1,ValueFromPipeline)][string]$Access
+ )
+
+ process{
+
$user = Get-RepoUser -Login $login
+
+ if($null -eq $user){
+ "Error: $login not found" | Write-Error
+ return
+ }
+
+ $user | Write-Verbose
+
+ $templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://github.com/{login}) | {company} |"
+
$avatar = '
' -replace '{login}',$login
$userline = $templateLine
$userline = $userline -replace '{login}', $user.login
$userline = $userline -replace '{avatar}', $avatar
$userline = $userline -replace '{name}', $user.name
- $userline = $userline -replace '{access}', $value
+ $userline = $userline -replace '{access}', $Access
$userline = $userline -replace '{email}', $user.email
$userline = $userline -replace '{company}', $user.company
- $ret+= $userline
+ return $userline
}
-
- return $ret
-} Export-ModuleMember -Function Get-RepoAccessTeam
+} Export-ModuleMember -Function New-UserAccessLine
function Get-RepoUser{
[CmdletBinding()]
diff --git a/public/syncRepoAccess.ps1 b/public/syncRepoAccess.ps1
index 16debe0..7d9ebe8 100644
--- a/public/syncRepoAccess.ps1
+++ b/public/syncRepoAccess.ps1
@@ -58,7 +58,7 @@ function Sync-RepoAccess{
"Processing $user for role $role" | Write-Verbose
# Already invited to this role
- if($invitations.$user -eq $role){
+ if($invitations.$user -Like "$role *"){
"User $user has an invitation pending" | Write-Verbose
$ret.$user = "?"
continue