Splitting codegen output to many files assumed to be stored under non VCS directory
Publish PHP Package / docker (push) Successful in 6s
Details
Publish PHP Package / docker (push) Successful in 6s
Details
This commit is contained in:
parent
d083ee09bc
commit
02a5871f89
|
@ -2,7 +2,7 @@
|
|||
namespace metagen_cs;
|
||||
use Exception;
|
||||
|
||||
function codegen(?string $cache_dir, \mtgMetaInfo $meta, array $options = []) : string
|
||||
function codegen(?string $cache_dir, \mtgMetaInfo $meta, array $options = []) : array
|
||||
{
|
||||
$twig = get_twig();
|
||||
|
||||
|
@ -15,7 +15,21 @@ function codegen(?string $cache_dir, \mtgMetaInfo $meta, array $options = []) :
|
|||
if(!isset($options['namespace']))
|
||||
$options['namespace'] = 'BitGames.Autogen';
|
||||
|
||||
return $twig->render('codegen_bundle.twig', $options);
|
||||
$sliced_units = slice_units($meta->getUnits(), 50);
|
||||
|
||||
$output = array();
|
||||
|
||||
foreach($sliced_units as $slice_idx => $slice_units)
|
||||
{
|
||||
$slice_options = $options;
|
||||
$slice_options['slice_idx'] = $slice_idx;
|
||||
$slice_options['slice_units'] = $slice_units;
|
||||
$output['types_'.$slice_idx.'.cs'] = $twig->render('codegen_types_slice.twig', $slice_options);
|
||||
}
|
||||
|
||||
$output['factory.cs'] = $twig->render('codegen_factory.twig', $options);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
function get_twig(array $inc_path = []) : \Twig\Environment
|
||||
|
@ -713,3 +727,41 @@ function get_field_index(\mtgMetaStruct $struct, string $field_name): int
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
function paginate($total, $step)
|
||||
{
|
||||
//pages are returned as an array where each element is in interval [N, Y)
|
||||
$pages = array();
|
||||
|
||||
$steps = (int)($total/$step);
|
||||
$rest = $total % $step;
|
||||
|
||||
for($i=1;$i<=$steps;++$i)
|
||||
$pages[] = array(($i-1)*$step, $i*$step);
|
||||
|
||||
if($rest != 0)
|
||||
$pages[] = array(($i-1)*$step, ($i-1)*$step + $rest);
|
||||
|
||||
return $pages;
|
||||
}
|
||||
|
||||
//slices array like this: [[idx0,[..]], [idx1,[..]], ...]
|
||||
function slice_units(array $units, $max)
|
||||
{
|
||||
$pages = paginate(sizeof($units), $max);
|
||||
|
||||
$sliced = array();
|
||||
|
||||
$units_keys = array_keys($units);
|
||||
|
||||
foreach($pages as $idx => $page)
|
||||
{
|
||||
$slice = array();
|
||||
for($i = $page[0];$i<$page[1];++$i)
|
||||
{
|
||||
$slice[] = $units[$units_keys[$i]];
|
||||
}
|
||||
$sliced[$idx] = $slice;
|
||||
}
|
||||
return $sliced;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,9 @@ using System;
|
|||
namespace {{namespace}} {
|
||||
{% endif %}
|
||||
|
||||
{{ macro.decl_units(meta) }}
|
||||
{%- for ai in get_all_declarable_accessor_interfaces(meta) ~%}
|
||||
{{ macro.decl_accessor_interface(ai) }}
|
||||
{%- endfor ~%}
|
||||
|
||||
static public class AutogenBundle
|
||||
{
|
|
@ -0,0 +1,16 @@
|
|||
//THIS FILE IS GENERATED AUTOMATICALLY, DO NOT TOUCH IT!
|
||||
using System.Collections.Generic;
|
||||
using metagen;
|
||||
using System;
|
||||
|
||||
{%- import "macro.twig" as macro -%}
|
||||
|
||||
{% if namespace is defined ~%}
|
||||
namespace {{namespace}} {
|
||||
{% endif %}
|
||||
|
||||
{{ macro.decl_units(slice_units) }}
|
||||
|
||||
{% if namespace is defined ~%}
|
||||
} //namespace {{namespace}}
|
||||
{% endif %}
|
|
@ -1,6 +1,6 @@
|
|||
{% macro decl_units(meta) %}
|
||||
{% macro decl_units(units) %}
|
||||
|
||||
{%- for u in meta.getunits ~%}
|
||||
{%- for u in units ~%}
|
||||
{%- if u.object is instanceof('\\mtgMetaStruct') -%}
|
||||
{{ _self.decl_struct(u.object) }}
|
||||
{%- elseif u.object is instanceof('\\mtgMetaEnum') -%}
|
||||
|
|
Loading…
Reference in New Issue