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.0-py3.10.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7f436afd966979330e7250cc3707d9f60de8a48eed32d7eee5229a8dd1d8f98 |
|
MD5 | 2b50800be66a8aea062a14137d2290f3 |
|
BLAKE2b-256 | 6c0d92e1704018d967fbe741db42ae19155af136a2c6e155c4355e98a4d5433e |
Hashes for zensols.install-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4c682775e6c559ec59c6b6b32bf2f7afc5ece30a34a0b086c345a4df353e730 |
|
MD5 | b159810826b23d48e20a781fecd7ddba |
|
BLAKE2b-256 | f6c9c03a1e1f62cb568a8aadd65981acb24f41b5501c538ce32dae5d4bd166ca |