arikawa/utils/generate-option-marshalers.sh

43 lines
563 B
Bash
Executable File

#!/usr/bin/env bash
types=(
SubcommandOption
SubcommandGroupOption
StringOption
IntegerOption
BooleanOption
UserOption
ChannelOption
RoleOption
MentionableOption
)
recvs=(
s
s
s
i
b
u
c
r
m
)
for ((i = 0; i < 6; i++)); {
cat<<EOF
// MarshalJSON marshals ${types[$i]} to JSON with the "type" field.
func (${recvs[$i]} *${types[$i]}) MarshalJSON() ([]byte, error) {
type raw ${types[$i]}
return json.Marshal(struct {
Type CommandOptionType \`json:"type"\`
*raw
}{
Type: ${recvs[$i]}.Type(),
raw: (*raw)(${recvs[$i]}),
})
}
EOF
}