Created
          April 7, 2022 20:03 
        
      - 
      
 - 
        
Save eefret/2bb37d2e50a3a8f90a85481ce2859b00 to your computer and use it in GitHub Desktop.  
    Converts app settings from azure app service to dotenv backwards and forwards
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | from ast import arg | |
| import sys | |
| import json | |
| # should pass the path of the appsettings.json file as the first argument | |
| # should pass the path of the .env file as the second argument | |
| # python3 turn_app_setting_json_to_dotenv.py appsettings.json config.env | |
| with open(sys.argv[1]) as file_obj: | |
| data = json.load(file_obj) | |
| dotenv_list = [] | |
| for setting in data: | |
| dotenv_list.append("{}={}".format(setting["name"], setting["value"])) | |
| # write dotenv_list to a file | |
| dotenv_file = open(sys.argv[2], "w") | |
| dotenv_file.write("\n".join(dotenv_list)) | |
| dotenv_file.close() | |
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import sys | |
| import json | |
| #should pass the path of the .env file as the first argument | |
| #should pass the path of the secrets .env file as the second argument | |
| # python3 turn_app_setting_json_to_dotenv.py config.env secrets.env | |
| def load_env_file(dotenv_path, override=False): | |
| with open(dotenv_path) as file_obj: | |
| lines = file_obj.read().splitlines() # Removes \n from lines | |
| dotenv_vars = {} | |
| for line in lines: | |
| line = line.strip() | |
| if not line or line.startswith("#") or "=" not in line: | |
| continue | |
| key, value = line.split("=", maxsplit=1) | |
| dotenv_vars.setdefault(key, value) | |
| return dotenv_vars | |
| config_path = sys.argv[1] | |
| secret_path = sys.argv[2] | |
| config = load_env_file(config_path) | |
| secret = load_env_file(secret_path) | |
| print(len(config)) | |
| print(len(secret)) | |
| all_envs = config.copy() | |
| all_envs.update(secret) | |
| print(len(all_envs)) | |
| setting_list = [] | |
| for k, v in all_envs.items(): | |
| setting = {} | |
| setting["name"] = k | |
| setting["value"] = v | |
| setting["slotSetting"] = "false" | |
| setting_list.append(setting) | |
| app_settings_file = open("appsettings.json", "w") | |
| app_settings_file.write(json.dumps(setting_list)) | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment