Downloads and installs (optionally compressed) files.
Project description
Downloads and installs files
Simple light API to download and install files. If the file appears to be a
compressed file by ending with zip
, tar.gz
, tgz
etc, then also un-compress
the file after it is downloaded.
Documentation
Obtaining
The easiest way to install the command line program is via the pip
installer:
pip3 install zensols.install
Binaries are also available on pypi.
Usage
The below code is given in the example.
First create the installer configuration with each file to be installed as a
resource as a file install.conf
:
[zip_resource]
class_name = zensols.install.Resource
url = https://github.com/plandes/zenbuild/archive/refs/tags/general_build.zip
# we have to give the name of the diretory in the zip file so the program knows
# what to unzip; otherwise it is named from the section, or file if `None`
name = zenbuild-general_build
# uncomment below to keep the `zenbuild-general_build.zip` zip file
#clean_up = False
[downloader]
class_name = zensols.install.Downloader
#use_progress_bar = False
[installer]
class_name = zensols.install.Installer
downloader = instance: downloader
# uncomment the below line, then comment out `base_directory` to use the
# package name (using the zensols.cli.ApplicationFactory--see example); using
# `package_resource` will in install a ~/.<package name> install directory
base_directory = path: install_dir
#package_resource = ${package:name}
resources = instance: list: zip_resource
Now use the configuration to create the installer and call it:
import logging
from zensols.config import IniConfig, ImportConfigFactory
from zensols.install import Installer
logging.basicConfig(level=logging.INFO)
fac = ImportConfigFactory(IniConfig('install.conf'))
installer: Installer = fac.instance('installer')
installer.install()
This code creates a new directory with the un-zipped files in install_dir
:
INFO:zensols.install.installer:installing zenbuild-general_build to install_dir/zenbuild-general_build
INFO:zensols.install.download:creating directory: install_dir
INFO:zensols.install.download:downloading https://github.com/plandes/zenbuild/archive/refs/tags/general_build.zip to install_dir/zenbuild-general_build.zip
general_build.zip: 16.4kB [00:00, 40.1kB/s]
INFO:zensols.install.installer:uncompressing install_dir/zenbuild-general_build.zip to install_dir
patool: Extracting install_dir/zenbuild-general_build.zip ...
patool: ... install_dir/zenbuild-general_build.zip extracted to `install_dir'.
INFO:zensols.install.installer:cleaning up downloaded file: install_dir/zenbuild-general_build.zip
First the program checks to see if the target directory (name
property in the
zip_resource
section) exists. It then downloads it when it can't find either
the target directory or the downloaded file.
If the program is run a second time, there will be no output since the installed directory now exists.
Changelog
An extensive changelog is available here.
License
Copyright (c) 2021 - 2022 Paul Landes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for zensols.install-0.1.0-py3.10.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40d949b61c22e262d3fb2bcd797b0b92fb6511fa4ecc28de1ce364107f24b731 |
|
MD5 | e88f0b9a216d18bde4cca04c312b9836 |
|
BLAKE2b-256 | c2bf1b5b912957d770e727875772990234d95f64fa662540d2480cec3421df99 |
Hashes for zensols.install-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aadcbe36de7218fb633bf57f59fff851c5e1cddb583e36bf7a826221dda2159d |
|
MD5 | 75e1a020f141def95927f4135ae97873 |
|
BLAKE2b-256 | 8f277b6e56d947071f8fa2443f4ae768e04fb5f0c80462e9985da163f73a623d |