Skip to content

Commit

Permalink
Example: Instllation of the iceK-0.1.4 collection
Browse files Browse the repository at this point in the history
  • Loading branch information
Obijuan committed Jun 16, 2024
1 parent 08041bb commit 4fb18f6
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

deps: ## Install dependencies
python -m pip install --upgrade pip
python -m pip install black flake8 flit pylint pytest tox tox-gh-actions semantic_version polib
python -m pip install black flake8 flit pylint pytest tox tox-gh-actions semantic_version polib tqdm

cenv: ## Create the virtual-environment
python3 -m venv env
Expand Down
100 changes: 99 additions & 1 deletion icm/commands/cmd_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@
# -- Author Juan Gonzalez (Obijuan)
# -- Licence GPLv2

from pathlib import Path
from tqdm import tqdm
import platform
import shutil
from pathlib import Path
import requests
import zipfile
import os

import click

Expand All @@ -30,6 +34,28 @@
# -- Icestudio root for collections
COLLECTIONS = ICESTUDIO_HOME / "collections"

# -- Information about collections
icek = {
"name": "iceK",
"version": "0.1.4"
}

# -- Collection file
COLLECTION_FILE = "v"

# -- Template URL
# -- Full collection download url: PREFIX + NAME + SUFFIX + FILE
TEMPLATE_URL_PREFIX = "https://github.com/FPGAwars/"
TEMPLATE_URL_SUFFIX = "/archive/refs/tags/"


# Función para dibujar la barra de progreso
def print_progress_bar(iteration, total, length=50):
percent = f"{100 * (iteration / float(total)):.1f}"
filled_length = int(length * iteration // total)
bar = '#' * filled_length + '-' * (length - filled_length)
print(f"\r|{bar}| {percent}%", end='')


def main():
"""ENTRY POINT: Show system information"""
Expand Down Expand Up @@ -85,3 +111,75 @@ def main():
)

print()

# --- Scafold for the installation of collections
# -- Download url: https://github.com/FPGAwars/iceK/archive/refs/tags/v0.1.4.zip
# -- Build the collection filename
filename = f"v{icek['version']}.zip"
print(f"Colection file: {filename}")

absolut_filename = f"{COLLECTIONS}/{filename}"
print(f"Absolut filename: {absolut_filename}")

url = f"{TEMPLATE_URL_PREFIX}{icek['name']}{TEMPLATE_URL_SUFFIX}{filename}"
print(f"Url: {url}")

# -- Download the collection
# Realizar la solicitud HTTP para obtener el contenido del archivo
response = requests.get(url, stream=True)

# Verificar que la solicitud se completó correctamente
if response.status_code == 200:

# Obtener el tamaño total del archivo desde los headers
total_size = int(response.headers.get('content-length', 0))

# Abrir un archivo local con el nombre especificado en modo escritura binaria
with open(absolut_filename, 'wb') as file:

# Crear una barra de progreso con tqdm
with tqdm(total=total_size, unit='B', unit_scale=True, desc=filename) as pbar:
# Iterar sobre el contenido en bloques
for chunk in response.iter_content(chunk_size=1024):
# Filtrar bloques vacíos
if chunk:
# Escribir el contenido del bloque en el archivo local
file.write(chunk)
# Actualizar la barra de progreso
pbar.update(len(chunk))

# Utilizar shutil.copyfileobj para copiar el contenido del archivo descargado al archivo local
#shutil.copyfileobj(response.raw, file)
print(f"Archivo descargado y guardado como {filename}")
else:
print(f"Error al descargar el archivo. Código de estado: {response.status_code}")

# -- Uncompress the collection

# Nombre del archivo ZIP
zip_filename = absolut_filename

# Directorio de destino para descomprimir los archivos
extract_to = COLLECTIONS

# Abrir el archivo ZIP y extraer su contenido con barra de progreso
with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
# Obtener la lista de archivos en el archivo ZIP
file_list = zip_ref.namelist()

# Crear una barra de progreso
with tqdm(total=len(file_list), desc='Descomprimiendo', unit='file') as pbar:
# Iterar sobre cada archivo en el archivo ZIP
for file in file_list:
# Extraer cada archivo
zip_ref.extract(file, extract_to)
# Actualizar la barra de progreso
pbar.update(1)

# -- Borrar el archivo zip
os.remove(zip_filename)





0 comments on commit 4fb18f6

Please sign in to comment.