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.0.9-py3.10.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 256f054dd27dcf4da44a863cae289c03863112c699b9bc44a8801f212c367836 |
|
MD5 | 14c65d4cb124d104517c6e1cde165791 |
|
BLAKE2b-256 | 3e8f5f0b9847fc0b7482ed1ec11eaffe0f6a0b8937919cd4d980bf5b665ee77b |
Hashes for zensols.install-0.0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebfa1e0721e6986a6aba44ed3dd5d2875f35cb0b5265c03c9ac39e05075f0121 |
|
MD5 | bcd625f8456913944f5df6d02d1d32c1 |
|
BLAKE2b-256 | c713ade6e3995c5b0f63ec70c47d81ae5bb6852345d07315d90451375cca821f |