# Git API

La `gitapi.py` es una API para OgGit, escrita en Python/Flask.

Es un servidor HTTP que recibe comandos y ejecuta acciones de mantenimiento incluyendo la creación y eliminación de repositorios.


# Instalación de dependencias para python

La conversion del código a Python 3 requiere actualmente los paquetes especificados en `requirements.txt`

Para instalar dependencias de python se usa el modulo venv (https://docs.python.org/3/library/venv.html) que instala todas las dependencias en un entorno independiente del sistema.


# Uso


## Distribuciones antiguas (18.04)

    sudo apt install -y python3.8 python3.8-venv python3-venv libarchive-dev
    python3.8 -m venv venvog
    . venvog/bin/activate
    python3.8 -m pip install --upgrade pip
    pip3 install -r requirements.txt

Ejecutar con:

    ./gitapi.py


## Uso

**Nota:** Ejecutar como `opengnsys`, ya que gestiona las imágenes que se encuentran en `/opt/opengnsys/images`.

    $ . venvog/bin/activate
    $ ./gitapi.py


# Documentación

Se puede generar documentación de Python con una utilidad como pdoc3 (hay multiples alternativas posibles):

    # Instalar pdoc3
    pip install --user pdoc3

    # Generar documentación
    pdoc3 --force --html opengnsys_git_installer.py

# Funcionamiento

## Requisitos

La gitapi esta diseñada para funcionar dentro de un entorno opengnsys existente. Se debe instalar en un ogrepository.

## Ejemplo de API

### Obtener lista de ramas

    $ curl -L http://localhost:5000/repositories/linux/branches
    {
        "branches": [
            "master"
        ]
    }

### Sincronizar con repositorio remoto

    curl --header "Content-Type: application/json" --data  '{"remote_repository":"foobar"}' -X POST -L http://localhost:5000/repositories/linux/sync

