Skip to content

Commit

Permalink
Allows the profile directory to be set with an environment var
Browse files Browse the repository at this point in the history
Passing the CLI flag (as in `dbt run --profiles-dir ~/path/to/profile`)
should still work. Similarly, if no DBT_PROFILES_DIR environment
variable is set, DBT will look for profiles in the default location.
  • Loading branch information
mikekaminsky committed Oct 9, 2018
1 parent c6acf94 commit 45bbaf2
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 8 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,6 @@ target/
*.sublime-*

.python-version

# Vim
*.sw*
11 changes: 8 additions & 3 deletions dbt/config.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os.path
import os
from copy import deepcopy
import hashlib
import pprint
Expand All @@ -23,6 +24,10 @@
DEFAULT_USE_COLORS = True
DEFAULT_PROFILES_DIR = os.path.join(os.path.expanduser('~'), '.dbt')

if os.environ.get('DBT_PROFILES_DIR') is not None:
PROFILES_DIR = os.environ.get('DBT_PROFILES_DIR')
else:
PROFILES_DIR = DEFAULT_PROFILES_DIR

INVALID_PROFILE_MESSAGE = """
dbt encountered an error while trying to read your profiles.yml file.
Expand All @@ -41,7 +46,7 @@
defined in your profiles.yml file. You can find profiles.yml here:
{profiles_file}/profiles.yml
""".format(profiles_file=DEFAULT_PROFILES_DIR)
""".format(profiles_file=PROFILES_DIR)


def read_profile(profiles_dir):
Expand All @@ -62,7 +67,7 @@ def read_profile(profiles_dir):
def read_profiles(profiles_dir=None):
"""This is only used in main, for some error handling"""
if profiles_dir is None:
profiles_dir = DEFAULT_PROFILES_DIR
profiles_dir = PROFILES_DIR

raw_profiles = read_profile(profiles_dir)

Expand Down Expand Up @@ -624,7 +629,7 @@ def from_args(cls, args, project_profile_name=None, cli_vars=None):

threads_override = getattr(args, 'threads', None)
# TODO(jeb): is it even possible for this to not be set?
profiles_dir = getattr(args, 'profiles_dir', DEFAULT_PROFILES_DIR)
profiles_dir = getattr(args, 'profiles_dir', PROFILES_DIR)
target_override = getattr(args, 'target', None)
raw_profiles = read_profile(profiles_dir)
profile_name = cls._pick_profile_name(args.profile,
Expand Down
6 changes: 3 additions & 3 deletions dbt/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

from dbt.utils import ExitCodes
from dbt.config import Project, RuntimeConfig, DbtProjectError, \
DbtProfileError, DEFAULT_PROFILES_DIR, read_config, \
DbtProfileError, PROFILES_DIR, read_config, \
send_anonymous_usage_stats, colorize_output, read_profiles
from dbt.exceptions import DbtProfileError, DbtProfileError, RuntimeException

Expand Down Expand Up @@ -298,11 +298,11 @@ def parse_args(args):

base_subparser.add_argument(
'--profiles-dir',
default=DEFAULT_PROFILES_DIR,
default=PROFILES_DIR,
type=str,
help="""
Which directory to look in for the profiles.yml file. Default = {}
""".format(DEFAULT_PROFILES_DIR)
""".format(PROFILES_DIR)
)

base_subparser.add_argument(
Expand Down
2 changes: 1 addition & 1 deletion dbt/task/debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
class DebugTask(BaseTask):
def path_info(self):
open_cmd = dbt.clients.system.open_dir_cmd()
profiles_dir = dbt.config.DEFAULT_PROFILES_DIR
profiles_dir = dbt.config.PROFILES_DIR

message = PROFILE_DIR_MESSAGE.format(
open_cmd=open_cmd,
Expand Down
2 changes: 1 addition & 1 deletion dbt/task/init.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def get_addendum(self, project_name, profiles_path):
def run(self):
project_dir = self.args.project_name

profiles_dir = dbt.config.DEFAULT_PROFILES_DIR
profiles_dir = dbt.config.PROFILES_DIR
profiles_file = os.path.join(profiles_dir, 'profiles.yml')

self.create_profiles_dir(profiles_dir)
Expand Down

0 comments on commit 45bbaf2

Please sign in to comment.