mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-05-08 02:01:31 -07:00
Add arg and doc validation for PowerShell modules (#53615)
* Add arg and doc validation for PowerShell modules * Verify if pwsh exists before running it
This commit is contained in:
parent
da9b19cef7
commit
f297229b52
13 changed files with 159 additions and 11 deletions
|
@ -17,6 +17,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import ast
|
||||
import os
|
||||
import sys
|
||||
|
||||
from io import BytesIO, TextIOWrapper
|
||||
|
@ -33,6 +34,44 @@ class AnsibleTextIOWrapper(TextIOWrapper):
|
|||
super(AnsibleTextIOWrapper, self).write(to_text(s, self.encoding, errors='replace'))
|
||||
|
||||
|
||||
def find_executable(executable, cwd=None, path=None):
|
||||
"""Finds the full path to the executable specified"""
|
||||
# This is mostly a copy from test/runner/lib/util.py. Should be removed once validate-modules has been integrated
|
||||
# into ansible-test
|
||||
match = None
|
||||
real_cwd = os.getcwd()
|
||||
|
||||
if not cwd:
|
||||
cwd = real_cwd
|
||||
|
||||
if os.path.dirname(executable):
|
||||
target = os.path.join(cwd, executable)
|
||||
if os.path.exists(target) and os.access(target, os.F_OK | os.X_OK):
|
||||
match = executable
|
||||
else:
|
||||
path = os.environ.get('PATH', os.path.defpath)
|
||||
|
||||
path_dirs = path.split(os.path.pathsep)
|
||||
seen_dirs = set()
|
||||
|
||||
for path_dir in path_dirs:
|
||||
if path_dir in seen_dirs:
|
||||
continue
|
||||
|
||||
seen_dirs.add(path_dir)
|
||||
|
||||
if os.path.abspath(path_dir) == real_cwd:
|
||||
path_dir = cwd
|
||||
|
||||
candidate = os.path.join(path_dir, executable)
|
||||
|
||||
if os.path.exists(candidate) and os.access(candidate, os.F_OK | os.X_OK):
|
||||
match = candidate
|
||||
break
|
||||
|
||||
return match
|
||||
|
||||
|
||||
def find_globals(g, tree):
|
||||
"""Uses AST to find globals in an ast tree"""
|
||||
for child in tree:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue