env2yaml 0.2.0
将环境变量渲染到YAML文件中的工具
Requires Python: >=3.6

# env2yaml 工具使用说明
        
        `env2yaml` 是一个将环境变量文件渲染到  YAML 文件中的工具。
        
        - 支持 jinja2 语法，可以根据环境变量的值动态渲染 YAML 文件。
        - 支持变量扩展，可以根据环境变量的值动态扩展变量的值。
        
        ## 安装
        ```
        pip install env2yaml
        ```
        
        ### 基本用法
        
        ```bash
        env2yaml -h
        usage: env2yaml [-h] --input_ini INPUT_INI --input_yaml INPUT_YAML --output_yaml OUTPUT_YAML [--dry-run]
        
        环境变量渲染到YAML文件
        
        optional arguments:
          -h, --help            show this help message and exit
          --input_ini INPUT_INI
                                环境变量文件路径
          --input_yaml INPUT_YAML
                                模板YAML文件路径
          --output_yaml OUTPUT_YAML
                                输出YAML文件路径
          --dry-run             仅输出渲染结果，不写入文件
        
        
        env2yaml --input_ini=config.env --input_yaml=test.yml --output_yaml=test_output.yaml
        env2yaml --input_ini=config.env --input_yaml=test.yml --output_yaml=test_output.yaml --dry-run
        ```
        
        - `--input_ini`: 环境变量文件路径
        - `--input_yaml`: YAML模板文件路径
        - `--output_yaml`: 输出文件路径
        - `--dry-run`: 仅输出渲染结果，不写入文件（可选）
        
        ### 示例
        
        #### 环境变量文件 (config.env)
        
        ```ini
        DB_HOST=127.0.0.1
        MYSQL_DB=test
        MYSQL_PORT=${MYSQL_PORT:3307}
        REDIS_HOST=127.0.0.1
        REDIS_PORT=6379
        REDIS_ENABLED=true
        REDIS_CONNECTION=redis://${REDIS_HOST}:${REDIS_PORT}
        BASE_DIR=/opt/app
        LOG_DIR=${BASE_DIR}/logs
        LOG_FILE=${LOG_DIR}/app.log
        HOSTS=host1,host2,host3
        ```
        
        #### YAML模板文件 (test.yml)
        
        ```yaml
        ---
        hosts: web
        remote_user: root
        gather_facts: no
        vars:
          DB_HOST: "{{ DB_HOST }}"
          MYSQL_DB: "{{ MYSQL_DB }}"
          MYSQL_PORT: "{{ MYSQL_PORT }}"
          REDIS_HOST: "{{ REDIS_HOST }}"
          BASE_DIR: "{{ BASE_DIR }}"
          LOG_DIR: "{{ LOG_DIR }}"
          LOG_FILE: "{{ LOG_FILE }}"
          {%- if REDIS_ENABLED %}
          REDIS_CONNECTION: "{{ REDIS_CONNECTION }}"
          {%- endif %}
          {%- for host in HOSTS %}
          HOST_{{ loop.index0 }}: "{{ host }}"
          {%- endfor %}
        ```
        #### 渲染后的输出 (test_output.yaml)
        
        ```yaml
        ---
        hosts: web
        remote_user: root
        gather_facts: no
        vars:
          DB_HOST: "127.0.0.1"
          MYSQL_DB: "test"
          MYSQL_PORT: "3307"
          REDIS_HOST: "127.0.0.1"
          BASE_DIR: "/opt/app"
          LOG_DIR: "/opt/app/logs"
          LOG_FILE: "/opt/app/logs/app.log"
          REDIS_CONNECTION: "redis://127.0.0.1:6379"
          HOST_0: "host1"
          HOST_1: "host2"
          HOST_2: "host3"
        ```
        
        
        
        
        
        ## 开发注意事项
        
        - 环境变量文件支持 `key=value` 和 `key="value"` 格式
        - 支持注释行（以 `#` 开头的行）
        - 空行将被忽略
        - 工具使用Jinja2模板引擎，支持变量引用、条件判断、循环等
        
        ## 高级功能
        
        ### 变量扩展
        
        工具支持在环境变量值中使用变量扩展，格式为 `${VAR_NAME}`。例如：
        
        ```ini
        BASE_DIR=/opt/app
        LOG_DIR=${BASE_DIR}/logs
        LOG_FILE=${LOG_DIR}/app.log
        ```
        
        在这个例子中，`LOG_DIR` 的值会被扩展为 `/opt/app/logs`。
        
        ### 变量默认值
        
        工具支持为变量引用指定默认值，格式为 `${VAR_NAME:DEFAULT_VALUE}`。如果 `VAR_NAME` 不存在，则使用 `DEFAULT_VALUE`。
        
        
        环境变量文件 (config.env)
        
        ```ini
        DB_HOST=127.0.0.1
        MYSQL_DB=test
        # 支持默认值
        MYSQL_PORT=${MYSQL_PORT:3307}
        ```
        
        YAML模板文件 (test.yml)
        
        ```yaml
        ---
        hosts: web
        remote_user: root
        gather_facts: no
        vars:
          DB_HOST: "{{ DB_HOST }}"
          MYSQL_DB: "{{ MYSQL_DB }}"
          MYSQL_PORT: "{{ MYSQL_PORT }}"   #使用默认值
        ```
        
        渲染后的输出
        
        ```yaml
        ---
        hosts: web
        remote_user: root
        gather_facts: no
        vars:
          DB_HOST: "127.0.0.1"
          MYSQL_DB: "test"
          MYSQL_PORT: "3307"
        ```