package main var executorsFileTemplate = `/* This file is generated by the enbas-codegen DO NOT EDIT. */ {{ print "" }} package executor {{ print "" }} {{ print "" }} import internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag" {{ range $name, $command := . }} {{- $struct_name := capitalise $name | printf "%sExecutor" -}} {{- $new_executor_function_name := capitalise $name | printf "New%sExecutor" -}} {{ print "" }} // {{ $struct_name }} is the executor for the {{ $name }} command. type {{ $struct_name }} struct { *flag.FlagSet {{- if $command.UsePrinter }} printer *printer.Printer {{- end }} {{- if $command.UseConfig }} config *config.Config {{- end }} {{- range $flag := $command.Flags -}} {{- $flag_type := getFlagType $flag.Flag -}} {{- if internalFlagValue $flag_type -}} {{ print "" }} {{ flagFieldName $flag }} internalFlag.{{ $flag_type }} {{- else -}} {{ print "" }} {{ flagFieldName $flag }} {{ $flag_type }} {{- end -}} {{- end -}} {{- range $field := $command.AdditionalFields -}} {{ print "" }} {{ $field.Name }} {{ $field.Type }} {{- end -}} {{ print "" }} } func {{ $new_executor_function_name }}( {{- if $command.UsePrinter }} printer *printer.Printer, {{- end }} {{- if $command.UseConfig }} config *config.Config, {{- end }} {{- range $field := $command.AdditionalFields -}} {{ print "" }} {{ $field.Name }} {{ $field.Type }}, {{- end -}} {{ print "" }} ) *{{ $struct_name }} { exe := {{ $struct_name }}{ FlagSet: flag.NewFlagSet({{ printf "%q" $name }}, flag.ExitOnError), {{- if $command.UsePrinter }} printer: printer, {{- end }} {{- if $command.UseConfig }} config: config, {{- end }} {{- range $flag := $command.Flags -}} {{- $flag_type := getFlagType $flag.Flag -}} {{- if internalFlagValue $flag_type -}} {{ print "" }} {{ flagFieldName $flag }}: internalFlag.New{{ $flag_type }}(), {{- end -}} {{- end -}} {{- range $field := $command.AdditionalFields -}} {{ print "" }} {{ $field.Name }}: {{ $field.Name }}, {{- end -}} {{ print "" }} } {{ print "" }} exe.Usage = commandUsageFunc({{ printf "%q" $name }}, {{ printf "%q" $command.Summary }}, exe.FlagSet) {{ print "" }} {{- range $flag := $command.Flags -}} {{- $flag_type := getFlagType $flag.Flag -}} {{- if eq $flag_type "string" -}} {{ print "" }} exe.StringVar(&exe.{{ flagFieldName $flag }}, {{ printf "%q" $flag.Flag }}, {{ printf "%q" $flag.Default }}, {{ getFlagDescription $flag.Flag | printf "%q" }}) {{- else if eq $flag_type "bool" -}} {{ print "" }} exe.BoolVar(&exe.{{ flagFieldName $flag }}, {{ printf "%q" $flag.Flag }}, {{ $flag.Default }}, {{ getFlagDescription $flag.Flag | printf "%q" }}) {{- else if eq $flag_type "int" -}} {{ print "" }} exe.IntVar(&exe.{{ flagFieldName $flag }}, {{ printf "%q" $flag.Flag }}, {{ $flag.Default }}, {{ getFlagDescription $flag.Flag | printf "%q" }}) {{- else if internalFlagValue $flag_type -}} {{ print "" }} exe.Var(&exe.{{ flagFieldName $flag }}, {{ printf "%q" $flag.Flag }}, {{ getFlagDescription $flag.Flag | printf "%q" }}) {{- end -}} {{- end -}} {{ print "" }} {{ print "" }} return &exe } {{ end }} `