mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-06-10 18:15:39 +00:00
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>
57 lines
1.9 KiB
Python
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
|