This repository has been archived on 2025-09-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Alicja Cięciwa cb8886666c login page
2020-10-27 12:57:58 +01:00

60 lines
1.9 KiB
Python

# -*- coding=utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
import io
import os
from pip_shims import Command as PipCommand, cmdoptions
import plette
import six
import vistir
class PipCmd(PipCommand):
name = "PipCmd"
def get_sources(urls, trusted_hosts):
trusted_hosts = [six.moves.urllib.parse.urlparse(url).netloc for url in trusted_hosts]
sources = []
for url in urls:
parsed_url = six.moves.urllib.parse.urlparse(url)
netloc = parsed_url.netloc
if '@' in netloc:
_, _, netloc = netloc.rpartition('@')
name, _, _ = netloc.partition('.') # Just use the domain name as the source name
verify_ssl = True
if netloc in trusted_hosts:
verify_ssl = False
sources.append({"url": url, "name": name, "verify_ssl": verify_ssl})
return sources
def init_project(root=None, python_version=None):
pipfile_path = os.path.join(root, "Pipfile")
if os.path.isfile(pipfile_path):
raise RuntimeError("{0!r} is already a Pipfile project".format(root))
if not os.path.exists(root):
vistir.path.mkdir_p(root, mode=0o755)
pip_command = PipCmd()
cmdoptions.make_option_group(cmdoptions.index_group, pip_command.parser)
parsed, _ = pip_command.parser.parse_args([])
index_urls = [parsed.index_url] + parsed.extra_index_urls
sources = get_sources(index_urls, parsed.trusted_hosts)
data = {
"sources": sources,
"packages": {},
"dev-packages": {},
}
if python_version:
data["requires"] = {"python_version": python_version}
return create_project(pipfile_path=pipfile_path, data=data)
def create_project(pipfile_path, data={}):
pipfile = plette.pipfiles.Pipfile(data=data)
with io.open(pipfile_path, "w") as fh:
pipfile.dump(fh)
print("Successfully created new pipfile at {0!r}".format(pipfile_path))
return 0