Implemented support for Repository selection when installing module (#39909)

* Implemented support for Repository selection when installing module

* Fixed AllowClobber check

* Fixing missing AllowClobber argument

* Fixed missing -Force switch

* Test installing package from custom repo

* Added custom repo variables

* Fixed repo registration

* Modified output check

* Modified output check

* Adding debug output

* Modified update handling

* Fixed output check

* Added missing PowerShellGet 1.6.0 install

* Added error handling

* Modified test output check

* Fixing output check

* Fixing output filter

* Implemented registering custom repo

* Fixing registering custom repo

* Fixing registering custom repo

* Fixing registering custom repo

* Tweaked module to shorten execution time

* Removed installing PowerShellGet 1.6.0

* Re-added Install-NugetProvider
This commit is contained in:
Gyorgy Nadaban
2018-05-22 17:36:57 -04:00
committed by Jordan Borean
parent 8deced3e04
commit 7d2012fdd7
4 changed files with 103 additions and 10 deletions

View File

@@ -108,6 +108,7 @@ Function Install-PsModule {
param(
[Parameter(Mandatory=$true)]
[string]$Name,
[string]$Repository,
[bool]$AllowClobber,
[bool]$CheckMode
)
@@ -117,15 +118,27 @@ Function Install-PsModule {
else {
try{
# Install NuGet Provider if needed
Install-NugetProvider -CheckMode $CheckMode
Install-NugetProvider -CheckMode $CheckMode;
# Check Powershell Version (-AllowClobber was introduced in early version only)
if ($PsVersion.Minor -ge 1){
Install-Module -Name $Name -Force -ErrorAction Stop -Whatif:$CheckMode -AllowClobber:$AllowClobber | out-null
$ht = @{
Name = $Name;
WhatIf = $CheckMode;
ErrorAction = "Stop";
Force = $true;
};
# If specified, use repository name to select module source
if ($Repository) {
$ht["Repository"] = "$Repository";
}
else {
Install-Module -Name $Name -Force -ErrorAction Stop -Whatif:$CheckMode | out-null
# Check Powershell Version (-AllowClobber was introduced in PowerShellGet 1.6.0)
if ("AllowClobber" -in ((Get-Command PowerShellGet\Install-Module | Select -ExpandProperty Parameters).Keys)) {
$ht['AllowClobber'] = $AllowClobber;
}
Install-Module @ht | out-null;
$result.output = "Module $($Name) installed"
$result.changed = $true
}
@@ -174,7 +187,8 @@ if ($state -eq "present") {
else {
$ErrorMessage = "Repository Name and Url are mandatory if you want to add a new repository"
}
Install-PsModule -Name $Name -CheckMode $check_mode -AllowClobber $allow_clobber
Install-PsModule -Name $Name -Repository $repo -CheckMode $check_mode -AllowClobber $allow_clobber;
}
else {
if ($repo) {

View File

@@ -30,10 +30,10 @@ options:
default: 'no'
repository:
description:
- Name of the custom repository to register.
- Name of the custom repository to register or use.
url:
description:
- URL of the custom repository.
- URL of the custom repository to register.
state:
description:
- If C(present) a new module is installed.
@@ -61,6 +61,12 @@ EXAMPLES = '''
url: https://myrepo.com
state: present
- name: Add a powershell module from a specific repository
win_psmodule:
name: PowershellModule
repository: MyRepository
state: present
- name: Remove a powershell module
win_psmodule:
name: PowershellModule