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 - 2023 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.2.1-py3.10.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d1377ddb20c89dca07cad1aa43e8edb4323b81a8601cbb71c3aa4065b406de6 |
|
MD5 | 47752dd47dbe101306d5962faca18733 |
|
BLAKE2b-256 | f190b5215d007a907c490e4ed292365543a2c2565b3c3d2a0c8ca03fb30d000c |
Hashes for zensols.install-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3a5224263b8e803319f8a4cbd2efc4a78fedf2c24331db57e91dc03094ca0f4 |
|
MD5 | b3fe3b953fd26c6e83b2a305f517258a |
|
BLAKE2b-256 | 3a98706e592cf238792e0877cdce5b736fed34cf2bf28c7f02952b02705ef104 |