File size: 1,855 Bytes
a005c19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import json
from dotenv import load_dotenv
load_dotenv()

def get_json_from_env_var(env_var_name):
    """
    ν™˜κ²½ λ³€μˆ˜μ—μ„œ JSON 데이터λ₯Ό 가져와 λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•˜λŠ” ν•¨μˆ˜.
    :param env_var_name: ν™˜κ²½ λ³€μˆ˜ 이름
    :return: λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœμ˜ JSON 데이터
    """
    json_string = os.getenv(env_var_name)
    if not json_string:
        raise EnvironmentError(f"ν™˜κ²½ λ³€μˆ˜ '{env_var_name}'κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.")

    try:
        # μ€„λ°”κΏˆ(\n)을 μ΄μŠ€μΌ€μ΄ν”„ 문자(\\n)둜 λ³€ν™˜
        json_string = json_string.replace("\n", "\\n")
        
        # JSON λ¬Έμžμ—΄μ„ λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜
        json_data = json.loads(json_string)
    except json.JSONDecodeError as e:
        raise ValueError(f"JSON λ³€ν™˜ μ‹€νŒ¨: {e}")

    return json_data



def json_to_env_var(json_file_path, env_var_name="JSON_ENV_VAR"):
    """
    μ£Όμ–΄μ§„ JSON 파일의 데이터λ₯Ό ν™˜κ²½ λ³€μˆ˜ ν˜•νƒœλ‘œ λ³€ν™˜ν•˜μ—¬ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜.

    :param json_file_path: JSON 파일 경둜
    :param env_var_name: ν™˜κ²½ λ³€μˆ˜ 이름 (κΈ°λ³Έκ°’: JSON_ENV_VAR)
    :return: None
    """
    try:
        # JSON 파일 읽기
        with open(json_file_path, 'r') as json_file:
            json_data = json.load(json_file)

        # JSON 데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜
        json_string = json.dumps(json_data)

        # ν™˜κ²½ λ³€μˆ˜ ν˜•νƒœλ‘œ 좜λ ₯
        env_variable = f'{env_var_name}={json_string}'
        print("\nν™˜κ²½ λ³€μˆ˜λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 좜λ ₯κ°’:\n")
        print(env_variable)
        print("\nμœ„ 값을 .env νŒŒμΌμ— λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£μœΌμ„Έμš”.")
    except FileNotFoundError:
        print(f"νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: {json_file_path}")
    except json.JSONDecodeError:
        print(f"μœ νš¨ν•œ JSON 파일이 μ•„λ‹™λ‹ˆλ‹€: {json_file_path}")