Public
Snippet $26 authored by Owo Sugiana

PyPI Repository

Edited
pypi-mirror.py
import os
import sys
import subprocess


def run(cmd):
    print(' '.join(cmd))
    if subprocess.call(cmd) != 0:
        sys.exit()


def install(package):
    cmd = [pip_bin, 'install', package]
    run(cmd)


def upgrade(package):
    cmd = [pip_bin, 'install', '--upgrade', package]
    run(cmd)


if sys.argv[1:]:
    base_dir = sys.argv[1]
else:
    base_dir = '/home/sugiana/Unduhan/pypi'
base_dir = os.path.realpath(base_dir)
if not os.path.exists(base_dir):
    print('Buat direktori {}'.format(base_dir))
    os.mkdir(base_dir)

packages = []
with open('pypi-mirror.txt') as f:
    for line in f.readlines():
        packages.append(line.strip())

env_dir = os.path.join(base_dir, 'env')
bin_dir = os.path.join(env_dir, 'bin')
pip_bin = os.path.join(bin_dir, 'pip')
mirror_bin = os.path.join(bin_dir, 'pypi-mirror')
mirror_dir = os.path.join(base_dir, 'downloads')
index_dir = os.path.join(base_dir, 'simple')

if not os.path.exists(env_dir):
    run(['python3', '-m', 'venv', env_dir])
upgrade('pip')
upgrade('setuptools')
install('wheel')
install('python-pypi-mirror')

# Dibutuhkan iso8583
install('ebcdic')

cmd = [
        mirror_bin, 'download',
        '--download-dir', mirror_dir,
        '--pip-executable', pip_bin]
for package in packages:
    cmd_ = cmd + [package]
    run(cmd_)

cmd = [
        mirror_bin, 'create',
        '--download-dir', mirror_dir,
        '--mirror-dir', index_dir]
run(cmd)