1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-06-10 18:15:39 +00:00
community.general/plugins/module_utils/_onepassword.py
Alexei Znamensky d01402671c feat(onepassword_info): rewrite module to support op CLI v2 only
Drop v1 syntax (get item, --output=raw, documentAttributes, nested
fields/sections). Add CmdRunner-based auth and item fetch using v2
commands (account list/get, signin --raw, account add --raw --signin,
item get --format json). Fix config_file_path None guard in get_token.
Remove global module antipattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 22:52:49 +12:00

57 lines
1.9 KiB
Python

# Copyright (c) Ansible project
# Simplified BSD License (see LICENSES/BSD-2-Clause.txt or https://opensource.org/licenses/BSD-2-Clause)
# SPDX-License-Identifier: BSD-2-Clause
# Note that this module util is **PRIVATE** to the collection. It can have breaking changes at any time.
# Do not use this from other collections or standalone plugins/modules!
from __future__ import annotations
import os
from ansible_collections.community.general.plugins.module_utils import _cmd_runner_fmt as fmt
from ansible_collections.community.general.plugins.module_utils._cmd_runner import CmdRunner
def onepassword_runner(module, command):
return CmdRunner(
module,
command=command,
arg_formats=dict(
_account_list=fmt.as_fixed(["account", "list"]),
_account_get=fmt.as_fixed(["account", "get"]),
_signin=fmt.as_fixed(["signin", "--raw"]),
_account_add=fmt.as_fixed(["account", "add", "--raw", "--signin"]),
_item_get=fmt.as_fixed(["item", "get", "--format", "json"]),
account=fmt.as_opt_val("--account"),
address=fmt.as_opt_val("--address"),
email=fmt.as_opt_val("--email"),
item_id=fmt.as_list(),
vault=fmt.as_opt_eq_val("--vault"),
session=fmt.as_optval("--session="),
),
)
class OnePasswordConfig:
_config_file_paths = (
"~/.op/config",
"~/.config/op/config",
"~/.config/.op/config",
)
def __init__(self) -> None:
self._config_file_path = ""
@property
def config_file_path(self) -> str | None:
if self._config_file_path:
return self._config_file_path
for path in self._config_file_paths:
realpath = os.path.expanduser(path)
if os.path.exists(realpath):
self._config_file_path = realpath
return self._config_file_path
return None