HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //proc/self/root/lib/python3.9/site-packages/ansible/modules/__pycache__/subversion.cpython-39.pyc
a

�)g�4�@s�ddlmZmZmZeZdZdZdZddl	Z	ddl
Z
ddlmZddl
mZddlmZGd	d
�d
e�Zdd�Zed
kr~e�dS)�)�absolute_import�division�print_functiona�
---
module: subversion
short_description: Deploys a subversion repository
description:
   - Deploy given repository URL / revision to dest. If dest exists, update to the specified revision, otherwise perform a checkout.
version_added: "0.7"
author:
- Dane Summers (@dsummersl) <[email protected]>
options:
  repo:
    description:
      - The subversion URL to the repository.
    type: str
    required: true
    aliases: [ name, repository ]
  dest:
    description:
      - Absolute path where the repository should be deployed.
      - The destination directory must be specified unless I(checkout=no), I(update=no), and I(export=no).
    type: path
  revision:
    description:
      - Specific revision to checkout.
    type: str
    default: HEAD
    aliases: [ rev, version ]
  force:
    description:
      - If C(true), modified files will be discarded. If C(false), module will fail if it encounters modified files.
        Prior to 1.9 the default was C(true).
    type: bool
    default: "no"
  in_place:
    description:
      - If the directory exists, then the working copy will be checked-out over-the-top using
        svn checkout --force; if force is specified then existing files with different content are reverted.
    type: bool
    default: "no"
    version_added: "2.6"
  username:
    description:
      - C(--username) parameter passed to svn.
    type: str
  password:
    description:
      - C(--password) parameter passed to svn when svn is less than version 1.10.0. This is not secure and
        the password will be leaked to argv.
      - C(--password-from-stdin) parameter when svn is greater or equal to version 1.10.0.
    type: str
  executable:
    description:
      - Path to svn executable to use. If not supplied,
        the normal mechanism for resolving binary paths will be used.
    type: path
    version_added: "1.4"
  checkout:
    description:
     - If C(false), do not check out the repository if it does not exist locally.
    type: bool
    default: "yes"
    version_added: "2.3"
  update:
    description:
     - If C(false), do not retrieve new revisions from the origin repository.
    type: bool
    default: "yes"
    version_added: "2.3"
  export:
    description:
      - If C(true), do export instead of checkout/update.
    type: bool
    default: "no"
    version_added: "1.6"
  switch:
    description:
      - If C(false), do not call svn switch before update.
    default: "yes"
    version_added: "2.0"
    type: bool
  validate_certs:
    description:
      - If C(false), passes the C(--trust-server-cert) flag to svn.
      - If C(true), does not pass the flag.
    default: "no"
    version_added: "2.11"
    type: bool
extends_documentation_fragment: action_common_attributes
attributes:
    check_mode:
        support: full
    diff_mode:
        support: none
    platform:
        platforms: posix
notes:
   - This module does not handle externals.

requirements:
    - subversion (the command line tool with C(svn) entrypoint)
a+
- name: Checkout subversion repository to specified folder
  ansible.builtin.subversion:
    repo: svn+ssh://an.example.org/path/to/repo
    dest: /src/checkout

- name: Export subversion directory to folder
  ansible.builtin.subversion:
    repo: svn+ssh://an.example.org/path/to/repo
    dest: /src/export
    export: yes

- name: Get information about the repository whether or not it has already been cloned locally
  ansible.builtin.subversion:
    repo: svn+ssh://an.example.org/path/to/repo
    dest: /src/checkout
    checkout: no
    update: no
�#N)�
AnsibleModule)�get_best_parsable_locale)�LooseVersionc@s~eZdZdZdd�Zdd�Zddd�Zd	d
�Zd dd
�Zd!dd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)"�
Subversionz^\w+\s?:\s+\d+$c		Cs4||_||_||_||_||_||_||_||_dS)N)�module�dest�repo�revision�username�password�svn_path�validate_certs)	�selfr
rrr
rrrr�r�>/usr/lib/python3.9/site-packages/ansible/modules/subversion.py�__init__�szSubversion.__init__cCs.|jj|jddgdd�\}}}t|�td�kS)Nz	--version�--quietT��check_rcz1.10.0)r
�run_commandrr)r�rc�version�errrrr�has_option_password_from_stdin�sz)Subversion.has_option_password_from_stdinTcCs�|jddg}|js|�d�d}|jr6|�d|jg�|jrr|��rV|�d�|j}n|j�d�|�d|jg�|�|�|jj	|||d	�\}}}|r�|�
�S|SdS)
zuExecute a subversion command, and return output. If check_rc is False, returns the return code instead of the output.z--non-interactivez--no-auth-cachez--trust-server-certNz
--usernamez--password-from-stdinz�The authentication provided will be used on the svn command line and is not secure. To securely pass credentials, upgrade svn to version 1.10.0 or greater.z
--password)�data)rr�appendr�extendrrr
�warnr�
splitlines)r�argsr�bitsZ
stdin_datar�outrrrr�_exec�s(�


zSubversion._execcCs|jd|jgdd�}|dkS)zChecks if path is a SVN Repo.�infoFrr)r&r)rrrrr�is_svn_repo�szSubversion.is_svn_repoFcCs:dg}|r|�d�|�d|j|j|jg�|�|�dS)z?Creates new svn working directory if it does not already exist.�checkout�--force�-rN�rr r
rrr&�r�force�cmdrrrr)�s

zSubversion.checkoutcCs:dg}|r|�d�|�d|j|j|jg�|�|�dS)zExport svn repo to directory�exportr*r+Nr,r-rrrr0�s

zSubversion.exportcCs:|�dd|j|j|jg�}|D]}t�d|�rdSqdS)z Change working directory's repo.�switchz
--revision�^[ABDUCGE]\sTF)r&r
rr�re�search�r�output�linerrrr1�s
zSubversion.switchcCs6|�dd|j|jg�}|D]}t�d|�rdSqdS)z&Update existing svn working directory.�updater+r2TF)r&r
rr3r4r5rrrr8�s
zSubversion.updatecCs6|�dd|jg�}|D]}t�d|�durdSqdS)zRevert svn working directory.�revertz-Rz
^Reverted NTF)r&rr3r4r5rrrr9�s
zSubversion.revertcCshd�|�d|jg��}t�|j|tj�}|r8|�d�}nd}t�d|tj�}|r\|�d�}nd}||fS)�1Revision and URL of subversion working directory.�
r'r�Unable to get revisionz^URL\s?:.*$zUnable to get URL)�joinr&rr3r4�REVISION_RE�	MULTILINE�group)r�text�rev�urlrrr�get_revision�szSubversion.get_revisioncCs@d�|�d|jg��}t�|j|tj�}|r8|�d�}nd}|S)r:r;r'rzUnable to get remote revision)r=r&rr3r4r>r?r@)rrArBrrr�get_remote_revisionszSubversion.get_remote_revisioncCs6|�ddd|jg�}t�d�}ttt|j|���dkS)zUTrue if revisioned files have been added or modified. Unrevisioned files are ignored.�statusrz--ignore-externalsz^[^?X]r)r&rr3�compile�len�list�filter�match)r�linesZregexrrr�has_local_modss
zSubversion.has_local_modscCs�|��\}}d�|�dd|j|jg��}t�|j|tj�}|rJ|�	d�}nd}t
|�d�d���}t
|�d�d���}d}||kr�d	}|||fS)
Nr;r'r+rr<�:�FT)
rDr=r&r
rr3r4r>r?r@�int�split�strip)rZcurrrCZout2�headZrev1Zrev2Zchangerrr�needs_updateszSubversion.needs_updateN)T)F)F)�__name__�
__module__�__qualname__r>rrr&r(r)r0r1r8r9rDrErMrTrrrrr	�s



	
	
	r	cCsTtttdd�tddddgd�tddd	d
gd�tdd
d�tdd�tddd�tdd�tdd
d�tddd�tddd�tddd�tdd
d�tdd
d�d�
dd�}|jd}|jd}|jd}|jd}|jd}|jd}|jdp�|�dd�}|jd}|jd}	|jd}
|jd}|jd}|jd}
t|�}t||d �|_|�s`|
�sT|�sT|�r`|jd!d"�t||||||||
�}|�s�|�s�|
�s�|jd
|�	�d#�|�s�t
j�|��sd}d
}|j
�r�|jdd$�n|�s�|
�s�|jd
d$�|�s�|
�r�|��d}n|j|d%�d}�n|���r�|�s.|jd
d$�|j
�rp|���rR|�sR|jd&d"�|��\}}}|j|||d'�d
}|��}|��}|	�r�|���p�|}|�r�|�r�|���p�|}n|jd&d"�|���p�|}nJ|�rd}|jdd%�d}|��}|�r|�r|��n|jd(|fd"�|�r.|jdd$�n"|��}|�p>|}|j|||d'�dS))N�path)�type�strT�nameZ
repository)rY�required�aliasesZHEADrBr)rY�defaultr]�boolF)rYr^)rYZno_log)
rrr
r.rr�
executabler0r)r8r1�in_placer)Z
argument_specZsupports_check_moderrr
r.rrr`�svnr0r1r)r8rar)�LANG�LC_MESSAGESzXthe destination directory must be specified unless checkout=no, update=no, and export=no)�msg)�changed�after)rf)r.z.ERROR: modified files exist in the repository.)rf�beforergzEERROR: %s folder already exists, but its not a subversion repository.)r�dict�paramsZget_bin_pathrZrun_command_environ_updateZ	fail_jsonr	Z	exit_jsonrE�osrX�existsZ
check_moder)r0r(rMrTrDr1r9r8)r
rrr
r.rrrr0r1r)r8rar�localerbrhZ
local_modsZ
files_changed�checkrgrfrrr�main%s�







��














ro�__main__)Z
__future__rrrrYZ
__metaclass__Z
DOCUMENTATIONZEXAMPLESZRETURNrkr3Zansible.module_utils.basicrZ"ansible.module_utils.common.localerZ#ansible.module_utils.compat.versionr�objectr	rorUrrrr�<module>sfc