import argparse from os import environ import sys from snowflake_executor import SnowflakeSQLExecutorSME def parse_args(args): """Parse cli arguments. Args: args (list): Arguments list. Returns: argparse.Namespace: Parsed arguments. """ parser = argparse.ArgumentParser() parser.add_argument( '--action', help='Action: add or delete', choices=['add', 'delete'], required=True) parser.add_argument( '--upcs', help='UPCs list', type=int, nargs='+', required=True) return parser.parse_args(args) def get_sf_config(): """Get Snowflake config. Returns: dict: Snowflake config. """ return { 'user': environ.get('SNOWFLAKE_USER'), 'password': environ.get('SNOWFLAKE_PASSWORD'), 'account': environ.get('SNOWFLAKE_ACCOUNT'), 'warehouse': environ.get('SNOWFLAKE_WAREHOUSE'), 'db': environ.get('SNOWFLAKE_DATABASE'), 'schema': environ.get('SNOWFLAKE_SCHEMA'), 'role': environ.get('SNOWFLAKE_ROLE')} def main(): """Share Manager entry point.""" args = parse_args(sys.argv[1:]) with SnowflakeSQLExecutorSME(get_sf_config()) as executor: if args.action == 'add': executor.add_to_shared_products(args.upcs) elif args.action == 'delete': executor.delete_from_shared_products(args.upcs) else: raise ValueError('Unknown action:{}'.format(args.action)) if __name__ == '__main__': main()