win_shortcut: Clean up (#20514)

Small improvements:
- Remove obsolete comments
- Use $check_mode instead of my own $_ansible_check_mode
- Renamed "default" window style to "normal" (as is used by Windows
  documentation)
- A fix for check-mode support (when state=absent)
This commit is contained in:
Dag Wieers 2017-01-27 14:51:36 +01:00 committed by John R Barker
parent c8dcc7f5d6
commit 7460b748ca

View file

@ -21,14 +21,9 @@
# Based on: http://powershellblogger.com/2016/01/create-shortcuts-lnk-or-url-files-with-powershell/
# TODO: Add debug information with what has changed using windows functions
# TODO: Ensure that by default variables default to $null automatically (so that they can be tested)
$ErrorActionPreference = "Stop"
$params = Parse-Args $args -supports_check_mode $true;
$_ansible_check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -default $false
$params = Parse-Args $args -supports_check_mode $true
$src = Get-AnsibleParam -obj $params -name "src" -type "path" -default $null
$dest = Get-AnsibleParam -obj $params -name "dest" -type "path" -failifempty $true
@ -38,14 +33,10 @@ $directory = Get-AnsibleParam -obj $params -name "directory" -type "path" -defau
$hotkey = Get-AnsibleParam -obj $params -name "hotkey" -type "string" -default $null
$icon = Get-AnsibleParam -obj $params -name "icon" -type "path" -default $null
$orig_description = Get-AnsibleParam -obj $params -name "description" -type "string" -default $null
$windowstyle = Get-AnsibleParam -obj $params -name "windowstyle" -type "string" -validateset "default","maximized","minimized" -default $null
$windowstyle = Get-AnsibleParam -obj $params -name "windowstyle" -type "string" -validateset "normal","maximized","minimized" -default $null
# Expand environment variables on non-path types (Beware: turns $null into "")
#$src = [System.Environment]::ExpandEnvironmentVariables($orig_src)
#$dest = [System.Environment]::ExpandEnvironmentVariables($orig_dest)
$args = Expand-Environment($orig_args)
#$directory = [System.Environment]::ExpandEnvironmentVariables($orig_directory)
#$icon = [System.Environment]::ExpandEnvironmentVariables($orig_icon)
$description = Expand-Environment($orig_description)
$result = @{
@ -56,22 +47,24 @@ $result = @{
# Convert from window style name to window style id
$windowstyles = @{
default = 1
normal = 1
maximized = 3
minimized = 7
}
# Convert from window style id to window style name
$windowstyleids = @( "", "default", "", "maximized", "", "", "", "minimized" )
$windowstyleids = @( "", "normal", "", "maximized", "", "", "", "minimized" )
If ($state -eq "absent") {
If (Test-Path "$dest") {
# If the shortcut exists, try to remove it
Try {
Remove-Item -Path "$dest";
} Catch {
# Report removal failure
Fail-Json $result "Failed to remove shortcut $dest. (" + $_.Exception.Message + ")"
If (Test-Path -Path $dest) {
If ($check_mode -ne $true) {
# If the shortcut exists, try to remove it
Try {
Remove-Item -Path $dest
} Catch {
# Report removal failure
Fail-Json $result "Failed to remove shortcut $dest. (" + $_.Exception.Message + ")"
}
}
# Report removal success
$result.changed = $true
@ -94,7 +87,6 @@ If ($state -eq "absent") {
# Determine if we have a WshShortcut or WshUrlShortcut by checking the Arguments property
# A WshUrlShortcut objects only consists of a TargetPath property
# TODO: Find a better way to do has_attr() or isinstance() ?
If (Get-Member -InputObject $ShortCut -Name Arguments) {
# This is a full-featured application shortcut !
@ -110,7 +102,7 @@ If ($state -eq "absent") {
}
$result.directory = $ShortCut.WorkingDirectory
# FIXME: Not all values are accepted here !
# FIXME: Not all values are accepted here ! Improve docs too.
If ($hotkey -ne $null -and $ShortCut.Hotkey -ne $hotkey) {
$result.changed = $true
$ShortCut.Hotkey = $hotkey
@ -136,7 +128,7 @@ If ($state -eq "absent") {
$result.windowstyle = $windowstyleids[$ShortCut.WindowStyle]
}
If ($result.changed -eq $true -and $_ansible_check_mode -ne $true) {
If ($result.changed -eq $true -and $check_mode -ne $true) {
Try {
$ShortCut.Save()
} Catch {