/ecg

ERB(eRuby) based, simple and powerful configration file generator for general purpose.

Primary LanguageRubyMIT LicenseMIT

ecg

Gem Version Build Status Maintainability Test Coverage

ecg is an ERB(eRuby) based, simple and powerful configration file generator for general purpose.

Requirements

Ruby: 2.5 or higher

Install

gem install ecg

Usage

See also ecg --help

Simple example

ecg --values name=epaew --values email="epaew.333@gmail.com" < template.json.erb
{
  "type": "user",
  "name": "epaew",
  "email": "epaew.333@gmail.com"
}

or

ecg config.yml < template.json.erb
{
  "type": "user",
  "name": "epaew",
  "email": "epaew.333@gmail.com"
}

with

  • template.json.erb
    {
      "type": "user",
      "name": "<%= name %>",
      "email": "<%= email %>"
    }
  • config.yml
    name: epaew
    email: epaew.333@gmail.com

Using nested keys

ecg --values user.name=epaew --values user.email="epaew.333@gmail.com" < template.json.erb
{
  "user": {
    "name": "epaew",
    "email": "epaew.333@gmail.com"
  }
}

or

ecg config.yml < template.json.erb
{
  "user": {
    "name": "epaew",
    "email": "epaew.333@gmail.com"
  }
}

with

  • template.json.erb
    {
      "user": {
        "name": "<%= user.name %>",
        "email": "<%= user.email %>"
      }
    }
  • config.yml
    user:
      name: epaew
      email: epaew.333@gmail.com

Using array (JSON and YAML only)

ecg config.yml < template.json.erb
{
  "user": [
    {
      "name": "Kurimu"
    },
    {
      "name": "Chizuru"
    },
    {
      "name": "Minatsu"
    },
    {
      "name": "Mahuyu"
    }
  ]
}

with

  • template.json.erb
    {
      "user": [
    <% users.each_with_index do |user, i| %>
        {
          "name": "<%= user.name %>"
    <% unless i == users.count - 1 %>
        },
    <% else %>
        }
    <% end %>
    <% end %>
      ]
    }
  • config.yml
    users:
      - name: Kurimu
      - name: Chizuru
      - name: Minatsu
      - name: Mahuyu

License

MIT