From 633773f3869addde80d126178440127037cd0437 Mon Sep 17 00:00:00 2001
From: Guido Lorenz <guido.lorenz@artcom.de>
Date: Fri, 27 Nov 2015 15:49:57 +0100
Subject: [PATCH] win_chocolatey: Add install_args, params and
 ignoredependencies

---
 .../modules/extras/windows/win_chocolatey.ps1 | 58 +++++++++++++++++--
 .../modules/extras/windows/win_chocolatey.py  | 18 ++++++
 2 files changed, 72 insertions(+), 4 deletions(-)

diff --git a/lib/ansible/modules/extras/windows/win_chocolatey.ps1 b/lib/ansible/modules/extras/windows/win_chocolatey.ps1
index 2c9a945840c..f47b3ce97dd 100644
--- a/lib/ansible/modules/extras/windows/win_chocolatey.ps1
+++ b/lib/ansible/modules/extras/windows/win_chocolatey.ps1
@@ -34,6 +34,11 @@ if ($source) {$source = $source.Tolower()}
 
 $showlog = Get-Attr -obj $params -name showlog -default "false" | ConvertTo-Bool
 $state = Get-Attr -obj $params -name state -default "present"
+
+$installargs = Get-Attr -obj $params -name install_args -default $null
+$packageparams = Get-Attr -obj $params -name params -default $null
+$ignoredependencies = Get-Attr -obj $params -name ignore_dependencies -default "false" | ConvertTo-Bool
+
 if ("present","absent" -notcontains $state)
 {
     Fail-Json $result "state is $state; must be present or absent"
@@ -106,7 +111,13 @@ Function Choco-Upgrade
         [Parameter(Mandatory=$false, Position=3)]
         [string]$source,
         [Parameter(Mandatory=$false, Position=4)]
-        [bool]$force
+        [bool]$force,
+        [Parameter(Mandatory=$false, Position=5)]
+        [string]$installargs,
+        [Parameter(Mandatory=$false, Position=6)]
+        [string]$packageparams,
+        [Parameter(Mandatory=$false, Position=7)]
+        [bool]$ignoredependencies
     )
 
     if (-not (Choco-IsInstalled $package))
@@ -131,6 +142,21 @@ Function Choco-Upgrade
         $cmd += " -force"
     }
 
+    if ($installargs)
+    {
+        $cmd += " -installargs '$installargs'"
+    }
+
+    if ($packageparams)
+    {
+        $cmd += " -params '$packageparams'"
+    }
+
+    if ($ignoredependencies)
+    {
+        $cmd += " -ignoredependencies"
+    }
+
     $results = invoke-expression $cmd
 
     if ($LastExitCode -ne 0)
@@ -163,14 +189,22 @@ Function Choco-Install
         [Parameter(Mandatory=$false, Position=4)]
         [bool]$force,
         [Parameter(Mandatory=$false, Position=5)]
-        [bool]$upgrade
+        [bool]$upgrade,
+        [Parameter(Mandatory=$false, Position=6)]
+        [string]$installargs,
+        [Parameter(Mandatory=$false, Position=7)]
+        [string]$packageparams,
+        [Parameter(Mandatory=$false, Position=8)]
+        [bool]$ignoredependencies
     )
 
     if (Choco-IsInstalled $package)
     {
         if ($upgrade)
         {
-            Choco-Upgrade -package $package -version $version -source $source -force $force
+            Choco-Upgrade -package $package -version $version -source $source -force $force `
+                -installargs $installargs -packageparams $packageparams `
+                -ignoredependencies $ignoredependencies
         }
 
         return
@@ -193,6 +227,21 @@ Function Choco-Install
         $cmd += " -force"
     }
 
+    if ($installargs)
+    {
+        $cmd += " -installargs '$installargs'"
+    }
+
+    if ($packageparams)
+    {
+        $cmd += " -params '$packageparams'"
+    }
+
+    if ($ignoredependencies)
+    {
+        $cmd += " -ignoredependencies"
+    }
+
     $results = invoke-expression $cmd
 
     if ($LastExitCode -ne 0)
@@ -253,7 +302,8 @@ Try
     if ($state -eq "present")
     {
         Choco-Install -package $package -version $version -source $source `
-            -force $force -upgrade $upgrade
+            -force $force -upgrade $upgrade -installargs $installargs `
+            -packageparams $packageparams -ignoredependencies $ignoredependencies
     }
     else
     {
diff --git a/lib/ansible/modules/extras/windows/win_chocolatey.py b/lib/ansible/modules/extras/windows/win_chocolatey.py
index b31654a2922..a1329ef4234 100644
--- a/lib/ansible/modules/extras/windows/win_chocolatey.py
+++ b/lib/ansible/modules/extras/windows/win_chocolatey.py
@@ -75,6 +75,24 @@ options:
     require: false
     default: null
     aliases: []
+  install_args:
+    description:
+      - Arguments to pass to the native installer
+    require: false
+    default: null
+    aliases: []
+  params:
+    description:
+      - Parameters to pass to the package
+    require: false
+    default: null
+    aliases: []
+  ignore_dependencies:
+    description:
+      - Ignore dependencies, only install/upgrade the package itself
+    require: false
+    default: false
+    aliases: []
 author: "Trond Hindenes (@trondhindenes), Peter Mounce (@petemounce), Pepe Barbe (@elventear), Adam Keech (@smadam813)"
 '''