2021-06-28 16:16:14 -04:00
|
|
|
import click
|
|
|
|
|
2021-07-12 15:50:44 -04:00
|
|
|
from config import settings
|
2021-06-28 16:16:14 -04:00
|
|
|
from etl.sources.census.etl_utils import reset_data_directories as census_reset
|
2021-07-12 15:50:44 -04:00
|
|
|
from utils import (
|
|
|
|
get_module_logger,
|
|
|
|
data_folder_cleanup,
|
|
|
|
score_folder_cleanup,
|
|
|
|
temp_folder_cleanup,
|
|
|
|
)
|
2021-06-28 16:16:14 -04:00
|
|
|
from etl.sources.census.etl import download_census_csvs
|
2021-07-12 15:50:44 -04:00
|
|
|
from etl.runner import etl_runner, score_generate
|
2021-06-28 16:16:14 -04:00
|
|
|
|
|
|
|
logger = get_module_logger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
@click.group()
|
|
|
|
def cli():
|
2021-07-12 15:50:44 -04:00
|
|
|
"""Defines a click group for the commands below"""
|
|
|
|
|
2021-06-28 16:16:14 -04:00
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command(
|
2021-07-12 15:50:44 -04:00
|
|
|
help="Clean up all census data folders",
|
2021-06-28 16:16:14 -04:00
|
|
|
)
|
2021-07-12 15:50:44 -04:00
|
|
|
def census_cleanup():
|
|
|
|
"""CLI command to clean up the census data folder"""
|
2021-06-28 16:16:14 -04:00
|
|
|
|
|
|
|
data_path = settings.APP_ROOT / "data"
|
|
|
|
|
|
|
|
# census directories
|
|
|
|
logger.info(f"Initializing all census data")
|
|
|
|
census_reset(data_path)
|
|
|
|
|
2021-07-12 15:50:44 -04:00
|
|
|
logger.info("Cleaned up all census data files")
|
|
|
|
|
2021-06-28 16:16:14 -04:00
|
|
|
|
2021-07-12 15:50:44 -04:00
|
|
|
@cli.command(
|
|
|
|
help="Clean up all data folders",
|
|
|
|
)
|
|
|
|
def data_cleanup():
|
|
|
|
"""CLI command to clean up the all the data folders"""
|
2021-06-28 16:16:14 -04:00
|
|
|
|
2021-07-12 15:50:44 -04:00
|
|
|
data_folder_cleanup()
|
|
|
|
score_folder_cleanup()
|
|
|
|
temp_folder_cleanup()
|
2021-06-28 16:16:14 -04:00
|
|
|
|
2021-07-12 15:50:44 -04:00
|
|
|
logger.info("Cleaned up all data folders")
|
2021-06-28 16:16:14 -04:00
|
|
|
|
|
|
|
|
|
|
|
@cli.command(
|
|
|
|
help="Census data download",
|
|
|
|
)
|
|
|
|
def census_data_download():
|
2021-07-12 15:50:44 -04:00
|
|
|
"""CLI command to download all census shape files from the Census FTP and extract the geojson
|
|
|
|
to generate national and by state Census Block Group CSVs"""
|
|
|
|
|
2021-06-28 16:16:14 -04:00
|
|
|
logger.info("Downloading census data")
|
|
|
|
data_path = settings.APP_ROOT / "data"
|
|
|
|
download_census_csvs(data_path)
|
|
|
|
|
|
|
|
logger.info("Completed downloading census data")
|
2021-07-12 15:50:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
@cli.command(
|
|
|
|
help="Run all ETL processes or a specific one",
|
|
|
|
)
|
|
|
|
@click.option("-d", "--dataset", required=False, type=str)
|
|
|
|
def etl_run(dataset: str):
|
|
|
|
"""Run a specific or all ETL processes
|
|
|
|
|
|
|
|
Args:
|
|
|
|
dataset (str): Name of the ETL module to be run (optional)
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
None
|
|
|
|
"""
|
|
|
|
|
|
|
|
etl_runner(dataset)
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command(
|
|
|
|
help="Generate Score",
|
|
|
|
)
|
|
|
|
def score_run():
|
|
|
|
"""CLI command to generate the score"""
|
|
|
|
score_generate()
|
2021-06-28 16:16:14 -04:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
cli()
|