From 96d044192c82ecf271c7bdca218ad16b34830228 Mon Sep 17 00:00:00 2001 From: Sam Liu Date: Wed, 11 Nov 2015 13:30:09 +0800 Subject: [PATCH 1/3] new module win_file_version --- windows/win_file_version.ps1 | 81 ++++++++++++++++++++++++++++++++++++ windows/win_file_version.py | 46 ++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 windows/win_file_version.ps1 create mode 100644 windows/win_file_version.py diff --git a/windows/win_file_version.ps1 b/windows/win_file_version.ps1 new file mode 100644 index 00000000000..4ee8c6e3f6c --- /dev/null +++ b/windows/win_file_version.ps1 @@ -0,0 +1,81 @@ +#!powershell + +#this file is part of Ansible +#Copyright © 2015 Sam Liu + +#This program is free software: you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation, either version 3 of the License, or +#(at your option) any later version. + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program. If not, see . + +# WAIT_JSON +# POWERSHELL_COMMON + +$params = Parse-Args $args; + +$result = New-Object psobject @{ + win_file_version = New-Object psobject + changed = $false +} + + +If ($params.path) { + $path = $params.path.ToString() + If (-Not (Test-Path -Path $path -PathType Leaf)){ + Fail-Json $result "Specfied path: $path not exists or not a file" + } + $ext = [System.IO.Path]::GetExtension($path) + If ( $ext -notin '.exe', '.dll'){ + Fail-Json $result "Specfied path: $path is not a vaild file type, Must be DLL or EXE." + } +} +Else{ + Fail-Json $result "Specfied path: $path not define." +} + +Try { + $file_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileVersion + If ($file_version -eq $null){ + $file_version = '' + } + $product_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).ProductVersion + If ($product_version -eq $null){ + $product_version= '' + } + $file_major_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMajorPart + If ($file_major_part -eq $null){ + $file_major_part= '' + } + $file_minor_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMinorPart + If ($file_minor_part -eq $null){ + $file_minor_part= '' + } + $file_build_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileBuildPart + If ($file_build_part -eq $null){ + $file_build_part = '' + } + $file_private_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FilePrivatePart + If ($file_private_part -eq $null){ + $file_private_part = '' + } +} +Catch{ +} + +Set-Attr $result.win_file_version "path" $path.toString() +Set-Attr $result.win_file_version "file_version" $file_version.toString() +Set-Attr $result.win_file_version "product_version" $product_version.toString() +Set-Attr $result.win_file_version "file_major_part" $file_major_part.toString() +Set-Attr $result.win_file_version "file_minor_part" $file_minor_part.toString() +Set-Attr $result.win_file_version "file_build_part" $file_build_part.toString() +Set-Attr $result.win_file_version "file_private_part" $file_private_part.toString() +Exit-Json $result; + diff --git a/windows/win_file_version.py b/windows/win_file_version.py new file mode 100644 index 00000000000..7688773e6a7 --- /dev/null +++ b/windows/win_file_version.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Get DLL or EXE build version +# Copyright © 2015 Sam Liu + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +DOCUMENTATION = ''' +--- +module: win_file_version +version_added: "2.0" +short_descriptions: Get DLL or EXE file build version +description: + - Get DLL or EXE file build version + - change state alway be false +options: + path: + description: + - File to get version(provide absolute path) + +author: Sam Liu +''' + +EXAMPLES = ''' +# get C:\Windows\System32\cmd.exe version in playbook +--- +- name: Get acm instance version + win_file_version: + path: 'C:\Windows\System32\cmd.exe' + register: exe_file_version + +- debug: msg="{{exe_file_version}}" + +''' From 548645e031dcaa7e98df51948554b93ffc0551e8 Mon Sep 17 00:00:00 2001 From: Sam Liu Date: Tue, 8 Mar 2016 14:14:25 +0800 Subject: [PATCH 2/3] Fixed: exception swallowing --- windows/win_file_version.ps1 | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/windows/win_file_version.ps1 b/windows/win_file_version.ps1 index 4ee8c6e3f6c..b9fa39c0dc7 100644 --- a/windows/win_file_version.ps1 +++ b/windows/win_file_version.ps1 @@ -42,32 +42,34 @@ Else{ } Try { - $file_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileVersion + $_version_fields = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path) + $file_version = $_version_fields.FileVersion If ($file_version -eq $null){ $file_version = '' } - $product_version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).ProductVersion + $product_version = $_version_fields.ProductVersion If ($product_version -eq $null){ $product_version= '' } - $file_major_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMajorPart + $file_major_part = $_version_fields.FileMajorPart If ($file_major_part -eq $null){ $file_major_part= '' } - $file_minor_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileMinorPart + $file_minor_part = $_version_fields.FileMinorPart If ($file_minor_part -eq $null){ $file_minor_part= '' } - $file_build_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FileBuildPart + $file_build_part = $_version_fields.FileBuildPart If ($file_build_part -eq $null){ $file_build_part = '' } - $file_private_part = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path).FilePrivatePart - If ($file_private_part -eq $null){ + $file_private_part = $_version_fields.FilePrivatePart + If ($file_private_part -eq $null) $file_private_part = '' } } Catch{ + Fail-Json $result "Error: $_.Exception.Message" } Set-Attr $result.win_file_version "path" $path.toString() From 7d4e2698b0a82d4011138acbe792665ec9783a14 Mon Sep 17 00:00:00 2001 From: Sam Liu Date: Tue, 8 Mar 2016 15:24:02 +0800 Subject: [PATCH 3/3] fix some error for passing CI build. --- windows/win_file_version.ps1 | 2 +- windows/win_file_version.py | 49 ++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/windows/win_file_version.ps1 b/windows/win_file_version.ps1 index b9fa39c0dc7..eefa221e88d 100644 --- a/windows/win_file_version.ps1 +++ b/windows/win_file_version.ps1 @@ -16,7 +16,7 @@ #You should have received a copy of the GNU General Public License #along with this program. If not, see . -# WAIT_JSON +# WANT_JSON # POWERSHELL_COMMON $params = Parse-Args $args; diff --git a/windows/win_file_version.py b/windows/win_file_version.py index 7688773e6a7..4f23c55053a 100644 --- a/windows/win_file_version.py +++ b/windows/win_file_version.py @@ -20,16 +20,17 @@ DOCUMENTATION = ''' --- module: win_file_version -version_added: "2.0" +version_added: "2.1" short_descriptions: Get DLL or EXE file build version description: - Get DLL or EXE file build version - change state alway be false options: - path: - description: - - File to get version(provide absolute path) - + path: + description: + - File to get version(provide absolute path) + required: true + aliases: [] author: Sam Liu ''' @@ -44,3 +45,41 @@ EXAMPLES = ''' - debug: msg="{{exe_file_version}}" ''' + +RETURN = """ +win_file_version.path: + description: file path + returned: always + type: string + +win_file_version.file_version: + description: file version number. + returned: no error + type: string + +win_file_version.product_version: + description: the version of the product this file is distributed with. + returned: no error + type: string + +win_file_version.file_major_part: + description: the major part of the version number. + returned: no error + type: string + +win_file_version.file_minor_part: + description: the minor part of the version number of the file. + returned: no error + type: string + +win_file_version.file_build_part: + description: build number of the file. + returned: no error + type: string + +win_file_version.file_private_part: + description: file private part number. + returned: no error + type: string + +"""