2020-02-03 05:25:04 +01:00

36 lines
1.2 KiB
Python

from glob import glob
import os
class Pip:
def __init__(self, *pip_packages, pip=None, requirements=None):
self.pip_packages = pip_packages
self.pip = pip
self.requirements = requirements
async def build(self, script):
for pip in ('pip3', 'pip', 'pip2'):
if script.which(pip):
self.pip = pip
break
if 'CACHE_DIR' in os.environ:
cache = os.path.join(os.getenv('CACHE_DIR'), 'pip')
else:
cache = os.path.join(os.getenv('HOME'), '.cache', 'pip')
await script.mount(cache, '/root/.cache/pip')
await script.run(f'sudo {self.pip} install --upgrade pip')
source = [p for p in self.pip_packages if p.startswith('/')]
if source:
await script.run(
f'sudo {self.pip} install --upgrade --editable {" ".join(source)}'
)
nonsource = [p for p in self.pip_packages if not p.startswith('/')]
if nonsource:
await script.run(f'sudo {self.pip} install --upgrade {" ".join(source)}')
if self.requirements:
await script.run(f'sudo {self.pip} install --upgrade -r {self.requirements}')