diff --git a/codegen/crm/types/index.php b/codegen/crm/types/index.php new file mode 100644 index 000000000..0f41ab172 --- /dev/null +++ b/codegen/crm/types/index.php @@ -0,0 +1,37 @@ + function($name, $api) { + return strtolower($name) . ".go"; + }, +); + +foreach ($templates as $template => $fn) +foreach ($apis as $api) { + if (is_array($api['struct'])) { + $name = ucfirst($api['interface']); + $filename = $dirname . "/" . $fn($name, $api); + + $tpl->load($template); + $tpl->assign($common); + $tpl->assign("package", basename(__DIR__)); + $tpl->assign("name", $name); + $tpl->assign("api", $api); + $tpl->assign("apis", $apis); + $tpl->assign("self", strtolower(substr($name, 0, 1))); + $tpl->assign("structs", $api['struct']); + $imports = array(); + foreach ($api['struct'] as $struct) { + if (isset($struct['imports'])) + foreach ($struct['imports'] as $import) { + $imports[] = $import; + } + } + $tpl->assign("imports", $imports); + $tpl->assign("calls", $api['apis']); + $contents = str_replace("\n\n}", "\n}", $tpl->get()); + + file_put_contents($filename, $contents); + echo $filename . "\n"; + } +} diff --git a/codegen/templates/http_structs.tpl b/codegen/templates/http_structs.tpl new file mode 100644 index 000000000..bee9e70c5 --- /dev/null +++ b/codegen/templates/http_structs.tpl @@ -0,0 +1,25 @@ +package {package} + +{load warning_short.tpl} + +{if !empty($imports)} +import ( +{foreach ($imports as $import)} + "{import}" +{/foreach} +) +{/if} + +{if !empty($structs)} +type ( +{foreach $structs as $struct} + // {api.title} - {api.description} + {struct.name} struct { +{foreach $struct.fields as $field} + {field.name} {field.type} `{if $field.tag}{$field.tag} {/if}db:"{if $field.db}{$field.db}{else}{$field.name|decamel}{/if}"`{newline} +{/foreach} + } + +{/foreach} +) +{/if} diff --git a/codegen/templates/warning_short.tpl b/codegen/templates/warning_short.tpl new file mode 100644 index 000000000..b4f4c9dc3 --- /dev/null +++ b/codegen/templates/warning_short.tpl @@ -0,0 +1 @@ +/* If you want to edit this file by hand, remove codegen/[project]/types/index.php */