Source code for meta_package_manager.managers.pwsh_gallery

# Copyright Kevin Deldycke <kevin@deldycke.com> and contributors.
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

from __future__ import annotations

import json
from typing import cast

from extra_platforms import LINUX_LIKE, MACOS, WINDOWS

from ..base import CLIError, PackageManager
from ..capabilities import search_capabilities

TYPE_CHECKING = False
if TYPE_CHECKING:
    from collections.abc import Iterator

    from ..base import Package


def _pwsh_quote(value: str) -> str:
    """Wrap ``value`` in PowerShell single quotes, doubling embedded single quotes.

    PowerShell single-quoted strings are literal: the only escape is ``''`` for a
    literal single quote. No backslash interpretation, no variable expansion.
    """
    return "'" + value.replace("'", "''") + "'"