diff --git a/README.md b/README.md index 6220236..85bfac9 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,6 @@ For example: #### Deleting blocklists and firewall policy To delete the blocklists from Cloudflare and delete the firewall policy, use the `delete` subcommand. For example: -`cloudflare-gateway-adblocking delete` \ No newline at end of file +`cloudflare-gateway-adblocking delete` +### Help +For help, use the `--help` flag. \ No newline at end of file diff --git a/src/__main__.py b/src/__main__.py index 5507922..d2660f1 100644 --- a/src/__main__.py +++ b/src/__main__.py @@ -16,20 +16,6 @@ ACCOUNT_ID = None def main(): - # Setup logging - logger.remove() - # ^10 is a formatting directive to center with a padding of 10 - logger_format = "{time:YYYY-MM-DD HH:mm:ss} |{level: ^10}| {message}" # noqa E501 - logger.add(stderr, format=logger_format, colorize=True, level="DEBUG") - - # Load .env if it exists - # This must precede the argparse setup as env variables are used as default values - if Path(".env").is_file(): - dotenv.load_dotenv() - logger.info("Loaded .env file") - else: - logger.info("No .env file found") - # Parse arguments # Set up argparse @@ -43,17 +29,20 @@ def main(): credential_args = argparser.add_argument_group("Cloudflare Credentials") # Add arguments + + # General arguments + argparser.add_argument('--log-level', '-l', help='Log level', default='INFO') # noqa E501 + + # Credential arguments credential_args.add_argument( "--account-id", "-a", help="Cloudflare account ID - environment variable: CLOUDFLARE_ACCOUNT_ID", - default=os.environ.get("CLOUDFLARE_ACCOUNT_ID"), ) credential_args.add_argument( "--token", "-t", help="Cloudflare API token - environment variable: CLOUDFLARE_TOKEN", - default=os.environ.get("CLOUDFLARE_TOKEN"), ) # Add subcommands @@ -88,19 +77,35 @@ def main(): args = argparser.parse_args() + # Set up logging + set_primary_logger(args.log_level) logger.debug(args) + + # Load variables global TOKEN global ACCOUNT_ID TOKEN = args.token ACCOUNT_ID = args.account_id - # Check if variables are set + + # Check if credentials are set, if they are not, attempt to load from environment variables and .env # noqa E501 if TOKEN is None or ACCOUNT_ID is None: - logger.error( - "No environment variables found. Please create a .env file or .envrc file" - ) # noqa E501 - exit(1) + logger.info("No credentials provided with flags") + if Path(".env").is_file(): + logger.debug("Loading .env") + dotenv.load_dotenv() + else: + logger.debug("No .env file found") + try: + TOKEN = os.environ["CLOUDFLARE_TOKEN"] + ACCOUNT_ID = os.environ["CLOUDFLARE_ACCOUNT_ID"] + logger.info("Loaded credentials from environment variables") + except KeyError: + logger.error("No credentials provided") + argparser.print_help() + exit(1) + try: args.func(args) except AttributeError: @@ -128,6 +133,12 @@ def delete_from_cloudflare(args): lists = utils.filter_adblock_lists(lists) delete.delete_adblock_list(lists, ACCOUNT_ID, TOKEN) +def set_primary_logger(log_level): + logger.remove() + # ^10 is a formatting directive to center with a padding of 10 + logger_format = "{time:YYYY-MM-DD HH:mm:ss} |{level: ^10}| {message}" # noqa E501 + logger.add(stderr, format=logger_format, colorize=True, level=log_level) + if __name__ == "__main__": main() diff --git a/src/utils/utils.py b/src/utils/utils.py index b3eb8fc..99e5d66 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -78,7 +78,7 @@ def convert_to_list(file: pathlib.Path) -> list: for match in matches if match and match.group(1) not in loopback ] - print(f"First 5 hosts: {hosts[:5]}") + # print(f"First 5 hosts: {hosts[:5]}") return hosts