Skip to content
Snippets Groups Projects
vagrantfile.j2 3.59 KiB
Newer Older
Attila Farkas's avatar
Attila Farkas committed
# Generated by Cyber Sandbox Creator 3.1.0
# https://gitlab.ics.muni.cz/muni-kypo-csc/cyber-sandbox-creator
#
# -*- mode: ruby -*-
# vi: set ft=ruby :

{# Macro for indentation #}
{% macro indent(level) %}
{% for i in range(level) %}  {% endfor %}
{% endmacro -%}

{# Macro for Block #}
{% macro block(namespace, block_obj, indentation) %}
{% if indentation == 1 %}

{% endif %}
{% if block_obj.note %}
{{ indent(indentation) }}# {{ block_obj.note }}
{% endif %}
{{ indent(indentation) }}{{ namespace }}.{{ block_obj.variable }}{% if block_obj.name %} "{{ block_obj.name }}"{% endif %} do |{{ block_obj.internal_variable }}|
{% for item in block_obj.content %}
{% if "Block" in item.__class__.__name__ %}
{{ block(block_obj.internal_variable, item, indentation+1) -}}
Attila Farkas's avatar
Attila Farkas committed
{% elif "Method" in item.__class__.__name__ %}
{{ method(block_obj.internal_variable, item, indentation+1) }}
{% elif "String" in item.__class__.__name__ %}
{{ string(block_obj.internal_variable, item, indentation+1) -}}
{% elif "Integer" in item.__class__.__name__ %}
{{ integer(block_obj.internal_variable, item, indentation+1) -}}
{% elif "Variable" in item.__class__.__name__ %}
{{ variable(block_obj.internal_variable, item, indentation+1) -}}
{% endif %}
{% endfor %}
{{ indent(indentation) }}end
{% endmacro -%}

{# Macro for initial Ruby variables #}
{% macro variables(variables_list) %}
{% for variable in variables_list %}
{% if "Hash" in variable.__class__.__name__ %}
{{ hash(variable, 0) -}}
{% endif %}
{% endfor %}
{% endmacro -%}

{# Macro for Hashes #}
{% macro hash(variable, indentation) %}
{{ indent(indentation) }}{{ variable.name }} = {
{% for key, value in variable.content.items() %}
{% if "Array" in value.__class__.__name__ %}
{{ indent(indentation+1) }}"{{ key }}" => [{% if value.content %}"{% endif %}{{ value.content | join('", "') }}{% if value.content %}"{% endif %}]{% if not loop.last %}, {% endif %}
{% endif %}
{% endfor %}
}
{% endmacro -%}

Attila Farkas's avatar
Attila Farkas committed
{# Macro for an (integer or string) argument of a Method #}
{% macro method_arg(obj) %}
{% if obj.variable %}
{{ obj.variable }}: {% if "String" in obj.__class__.__name__ %}"{% endif %}{{ obj.value }}{% if "String" in obj.__class__.__name__ %}"{% endif %}
{% else %}
{% if "String" in obj.__class__.__name__ %}"{% endif %}{{ obj.value }}{% if "String" in obj.__class__.__name__ %}"{% endif %}
{% endif %}
{% endmacro -%}

{# Macro for Method #}
{% macro method(namespace, method_obj, indentation) %}
{% if method_obj.single_line %}
{{ indent(indentation) }}{{ namespace }}.{{ method_obj.variable }} {% for argument in method_obj.arguments %}
{{ method_arg(argument) }}{% if not loop.last %}, {% endif %}
Attila Farkas's avatar
Attila Farkas committed
{% endfor %}
{% else %}
{{ indent(indentation) }}{{ namespace }}.{{ method_obj.variable }}{% for argument in method_obj.arguments %}
{% if argument == method_obj.arguments|first %} {% else %}{{ indent(indentation+1) }}{% endif %}{{ method_arg(argument) }}{% if not loop.last %},{{ "\n" }}{% endif %}
Attila Farkas's avatar
Attila Farkas committed
{% endfor %}
{% endif %}
{% endmacro -%}

{# Macro for String #}
{% macro string(namespace, string_obj, indentation) %}
{{ indent(indentation) }}{{ namespace }}.{{ string_obj.variable }} = "{{ string_obj.value }}"
{% endmacro -%}

{# Macro for Integer #}
{% macro integer(namespace, integer_obj, indentation) %}
{{ indent(indentation) }}{{ namespace }}.{{ integer_obj.variable }} = {{ integer_obj.value }}
{% endmacro -%}

{# Macro for Variables #}
{% macro variable(namespace, variable_obj, indentation) %}
Attila Farkas's avatar
Attila Farkas committed
{{ indent(indentation) }}{{ namespace }}.{{ variable_obj.name }} {% if variable_obj.equal %}= {% endif %}{{ variable_obj.value }}
{% endmacro -%}

{{ variables(ruby_variables) }}
{{ block("Vagrant", data, 0) }}