# Define the completions for the qjsc command
# QuickJS Compiler version 2021-03-27
# usage: qjsc [options] [files]

# options are:
# -c          only output bytecode in a C file
# -e          output main() and bytecode in a C file (default = executable output)
# -o output   set the output filename
# -N cname    set the C name of the generated data
# -m          compile as Javascript module (default=autodetect)
# -D module_name         compile a dynamically loaded module or worker
# -M module_name[,cname] add initialization code for an external C module
# -x          byte swapped output
# -p prefix   set the prefix of the generated C names
# -S n        set the maximum stack size to 'n' bytes (default=262144)
# -flto       use link time optimization
# -fbignum    enable bignum extensions
# -fno-[date|eval|string-normalize|regexp|json|proxy|map|typedarray|promise|module-loader|bigint]
#             disable selected language features (smaller code size)
# from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=quickjs 2021.03.27

complete -c qjsc -s c -d 'Only output bytecode in a C file'
complete -c qjsc -s e -d 'Output main() and bytecode in a C file (default = executable output)'
complete -c qjsc -s o -r -d 'Set the output filename'
complete -c qjsc -s N -r -d 'Set the C name of the generated data'
complete -c qjsc -s m -d 'Compile as Javascript module (default=autodetect)'
complete -c qjsc -s D -r -d 'Compile a dynamically loaded module or worker'
complete -c qjsc -s M -r -d 'Add initialization code for an external C module'
complete -c qjsc -s x -d 'Byte swapped output'
complete -c qjsc -s p -r -d 'Set the prefix of the generated C names'
complete -c qjsc -s S -r -d 'Set the maximum stack size to 'n' bytes (default=262144)'
complete -c qjsc -o flto -d 'Use link time optimization'
complete -c qjsc -o fbignum -d 'Enable bignum extensions'
complete -c qjsc -o fno-date -d 'Disable the date extension'
complete -c qjsc -o fno-eval -d 'Disable the eval extension'
complete -c qjsc -o fno-string-normalize -d 'Disable the string normalize extension'
complete -c qjsc -o fno-regexp -d 'Disable the regexp extension'
complete -c qjsc -o fno-json -d 'Disable the JSON extension'
complete -c qjsc -o fno-proxy -d 'Disable the proxy extension'
complete -c qjsc -o fno-map -d 'Disable the Map extension'
complete -c qjsc -o fno-typedarray -d 'Disable the Typed Array extension'
complete -c qjsc -o fno-promise -d 'Disable the Promise extension'
complete -c qjsc -o fno-module-loader -d 'Disable the module loader extension'
complete -c qjsc -o fno-bigint -d 'Disable the BigInt extension'