55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
import os
|
|
|
|
from pipenv import environments
|
|
from pipenv.vendor import click, dotenv
|
|
|
|
|
|
def load_dot_env(project, as_dict=False, quiet=False):
|
|
"""Loads .env file into sys.environ."""
|
|
if not project.s.PIPENV_DONT_LOAD_ENV:
|
|
# If the project doesn't exist yet, check current directory for a .env file
|
|
project_directory = project.project_directory or "."
|
|
dotenv_file = project.s.PIPENV_DOTENV_LOCATION or os.sep.join(
|
|
[project_directory, ".env"]
|
|
)
|
|
|
|
if not os.path.isfile(dotenv_file) and project.s.PIPENV_DOTENV_LOCATION:
|
|
click.echo(
|
|
"{}: file {}={} does not exist!!\n{}".format(
|
|
click.style("Warning", fg="red", bold=True),
|
|
click.style("PIPENV_DOTENV_LOCATION", bold=True),
|
|
click.style(project.s.PIPENV_DOTENV_LOCATION, bold=True),
|
|
click.style(
|
|
"Not loading environment variables.", fg="red", bold=True
|
|
),
|
|
),
|
|
err=True,
|
|
)
|
|
if as_dict:
|
|
return dotenv.dotenv_values(dotenv_file)
|
|
elif os.path.isfile(dotenv_file):
|
|
if not quiet:
|
|
click.secho(
|
|
"Loading .env environment variables...",
|
|
bold=True,
|
|
err=True,
|
|
)
|
|
dotenv.load_dotenv(dotenv_file, override=True)
|
|
|
|
project.s = environments.Setting()
|
|
|
|
|
|
def ensure_environment():
|
|
# Skip this on Windows...
|
|
if os.name != "nt" and "LANG" not in os.environ:
|
|
click.echo(
|
|
"{}: the environment variable {} is not set!"
|
|
"\nWe recommend setting this in {} (or equivalent) for "
|
|
"proper expected behavior.".format(
|
|
click.style("Warning", fg="red", bold=True),
|
|
click.style("LANG", bold=True),
|
|
click.style("~/.profile", fg="green"),
|
|
),
|
|
err=True,
|
|
)
|