Browse Source

Fixed config getting and setting

master
Jake Howard 6 years ago
parent
commit
cf2ff57970
  1. 3
      project/config/cli.py
  2. 3
      project/sync/cli.py
  3. 19
      project/utils/config.py
  4. 2
      project/utils/constants.py
  5. 10
      project/utils/defaults.yml
  6. 16
      project/utils/repos.py
  7. 2
      scripts/runtests

3
project/config/cli.py

@ -19,7 +19,8 @@ def show(key):
@click.argument('key', nargs=1)
@click.argument('value', nargs=-1)
def set(key, value):
key = " ".join(key)
if type(value) == type(()):
value = " ".join(value)
status = config.set(key, value)
if status == "SUCCESS":
print("{} set to {}".format(key, value))

3
project/sync/cli.py

@ -10,4 +10,7 @@ def cli(private):
return 1
repos.clone_public_data()
if private:
if not config.get('private_repo'):
print("private repo not set")
return 0
repos.clone_public_data()

19
project/utils/config.py

@ -11,7 +11,7 @@ except ImportError:
def get_config_data(filename):
try:
with open(filename) as config_file:
return load(config_file, Loader=Loader)
return load(config_file, Loader=Loader) or {}
except FileNotFoundError:
return {}
except Exception as e:
@ -19,7 +19,7 @@ def get_config_data(filename):
return {}
def write_user_config(refresh_after=False):
def write_user_config():
try:
with open(constants.USER_CONFIG_DIR, 'w') as config_file:
dump(USER_CONFIG, config_file, indent=4, default_flow_style=False, Dumper=Dumper)
@ -28,23 +28,28 @@ def write_user_config(refresh_after=False):
return e
# Create the config file if it doesnt exist already
os.makedirs(constants.DATA_DIR, mode=0o755, exist_ok=True)
open(constants.USER_CONFIG_DIR, 'a').close()
DEFAULT_CONFIG = get_config_data(constants.DEFAULT_CONFIG_DIR)
USER_CONFIG = get_config_data(os.path.expanduser(constants.USER_CONFIG_DIR))
USER_CONFIG = get_config_data(constants.USER_CONFIG_DIR)
def get(key):
if USER_CONFIG and key in USER_CONFIG:
if key in USER_CONFIG:
return USER_CONFIG[key]
elif DEFAULT_CONFIG and key in DEFAULT_CONFIG:
elif key in DEFAULT_CONFIG:
return DEFAULT_CONFIG[key]
return None
def set(key, value, refresh_after=False):
def set(key, value):
if key not in DEFAULT_CONFIG:
return "NO_KEY"
USER_CONFIG[key] = value
return write_user_config(refresh_after)
return write_user_config()
def has_basics():

2
project/utils/constants.py

@ -7,7 +7,7 @@ DATA_DIR = os.path.expanduser("~/dfa/")
# Config
USER_CONFIG_DIR = os.path.join(DATA_DIR, ".dfa.yml")
DEFAULT_CONFIG_DIR = os.path.join(BASE_DIR, 'defaults.yml')
REQUIRED_KEYS = ['public_data']
REQUIRED_KEYS = ['public_repo']
# Data Directories
PRIVATE_DATA_DIR = os.path.join(DATA_DIR, 'private_data')

10
project/utils/defaults.yml

@ -1,7 +1,3 @@
thing: thing 1
thing 2: thing
stuff:
- thing 1
- thing 2
- thing 3
long things: stuff
public_repo:
private_repo:

16
project/utils/repos.py

@ -1,4 +1,4 @@
import os
import os, shutil
from . import config, constants
@ -12,10 +12,22 @@ def clone_public_data():
def clone_private_data():
exit_code = os.system("git clone -b master --single-branch {} {}"
.format(config.get('private_repo'), constants.PRIVATE_DATA_DIR))
return exit_code
if exit_code != 0:
return exit_code
shutil.copytree(
constants.PRIVATE_DATA_DIR,
constants.PUBLIC_DATA_DIR
)
def has_data(data):
public_path = os.path.join(constants.PUBLIC_DATA_DIR, data)
private_path = os.path.join(constants.PRIVATE_DATA_DIR, data)
return os.path.isdir(public_path) or os.path.isdir(private_path)
def go_to_data(subdir=''):
path = os.path.join(constants.PUBLIC_DATA_DIR, subdir)
os.chdir(path)
return path

2
scripts/runtests

@ -4,7 +4,7 @@ set -e
export PATH=env/bin:${PATH}
flake8 project --ignore=E128,E501
flake8 project --ignore=E128,E501,E401
echo ">> Flake8 Tests Completed"
if [ "$1" == "CI" ]; then

Loading…
Cancel
Save