#Common options
complete -c gphoto2 -s '?' -l help -d 'Print complete help message on program usage'
complete -c gphoto2 -l usage -d 'Print short message on program usage'
complete -c gphoto2 -l debug -d 'Turn on debugging'
complete -c gphoto2 -l debug-logfile -r -d 'Name of file to write debug info to'
complete -c gphoto2 -l quiet -d 'Quiet output (default=verbose)'
complete -c gphoto2 -l hook-script -r -d 'Hook script to call after downloads, captures, etc.'

#Miscellaneous options (unsorted)
complete -c gphoto2 -l stdout -d 'Send file to stdout'
complete -c gphoto2 -l stdout-size -d 'Print filesize before data'
complete -c gphoto2 -l auto-detect -d 'List auto-detected cameras'
complete -c gphoto2 -l show-exif -r -d 'Show EXIF information'
complete -c gphoto2 -l show-info -r -d 'Show info'
complete -c gphoto2 -l summary -d 'Show summary'
complete -c gphoto2 -l manual -d 'Show camera driver manual'
complete -c gphoto2 -l about -d 'About the camera driver manual'
complete -c gphoto2 -l storage-info -d 'Show storage information'
complete -c gphoto2 -l shell -d 'gPhoto shell'

#Get information on software and host system (not from the camera)
complete -c gphoto2 -s v -l version -d 'Display version and exit'
complete -c gphoto2 -l list-cameras -d 'List supported camera models'
complete -c gphoto2 -l list-ports -d 'List supported port devices'
complete -c gphoto2 -s a -l abilities -d 'Display camera/driver abilities'

#Specify the camera to use
complete -c gphoto2 -l port -r -d 'Specify device port'
complete -c gphoto2 -l speed -r -d 'Specify serial transfer speed'
complete -c gphoto2 -l camera -r -d 'Specify camera model'
complete -c gphoto2 -l usbid -r -d '(expert only) Override USB IDs'

#Camera and software configuration
complete -c gphoto2 -l list-config -d 'List configuration tree'
complete -c gphoto2 -l list-all-config -d 'Dump full configuration tree'
complete -c gphoto2 -l get-config -r -d 'Get configuration value'
complete -c gphoto2 -l set-config -r -d 'Set configuration value or index in choices'
complete -c gphoto2 -l set-config-index -r -d 'Set configuration value index in choices'
complete -c gphoto2 -l set-config-value -r -d 'Set configuration value'

#Capture an image from or on the camera
complete -c gphoto2 -l wait-event -d 'Wait for event(s) from camera'
complete -c gphoto2 -l wait-event-and-download -d 'Wait for event(s) from the camera and download new images'
complete -c gphoto2 -l capture-preview -d 'Capture a quick preview'
complete -c gphoto2 -s B -l bulb -r -d 'Set bulb exposure time in seconds'
complete -c gphoto2 -s F -l frames -r -d 'Set number of frames to capture (default=infinite)'
complete -c gphoto2 -s I -l interval -r -d 'Set capture interval in seconds'
complete -c gphoto2 -l reset-interval -d 'Reset capture interval on signal (default=no)'
complete -c gphoto2 -l capture-image -d 'Capture an image'
complete -c gphoto2 -l capture-image-and-download -d 'Capture an image and download it'
complete -c gphoto2 -l capture-movie -d 'Capture a movie'
complete -c gphoto2 -l capture-sound -d 'Capture an audio clip'
complete -c gphoto2 -l capture-tethered -d 'Wait for shutter release on the camera and download'

#Downloading, uploading and manipulating files
complete -c gphoto2 -s l -l list-folders -d 'List folders in folder'
complete -c gphoto2 -s L -l list-files -d 'List files in folder'
complete -c gphoto2 -s m -l mkdir -r -d 'Create a directory'
complete -c gphoto2 -s r -l rmdir -r -d 'Remove a directory'
complete -c gphoto2 -s n -l num-files -d 'Display number of files'
complete -c gphoto2 -s p -l get-file -r -d 'Get files given in range'
complete -c gphoto2 -s P -l get-all-files -d 'Get all files from folder'
complete -c gphoto2 -s t -l get-thumbnail -r -d 'Get thumbnails given in range'
complete -c gphoto2 -s T -l get-all-thumbnails -d 'Get all thumbnails from folder'
complete -c gphoto2 -l get-metadata -r -d 'Get metadata given in range'
complete -c gphoto2 -l get-all-metadata -d 'Get all metadata from folder'
complete -c gphoto2 -l upload-metadata -r -d 'Upload metadata for file'
complete -c gphoto2 -l get-raw-data -r -d 'Get raw data given in range'
complete -c gphoto2 -l get-all-raw-data -d 'Get all raw data from folder'
complete -c gphoto2 -l get-audio-data -r -d 'Get audio data given in range'
complete -c gphoto2 -l get-all-audio-data -d 'Get all audio data from folder'
complete -c gphoto2 -s d -l delete-file -r -d 'Delete files given in range'
complete -c gphoto2 -s D -l delete-all-files -d 'Delete all files in folder (--no-recurse by default)'
complete -c gphoto2 -s u -l upload-file -r -d 'Upload a file to camera'
complete -c gphoto2 -l filename -r -d 'Specify a filename or filename pattern'
complete -c gphoto2 -s f -l folder -r -d 'Specify camera folder (default="/")'
complete -c gphoto2 -s R -l recurse -d 'Recursion (default for download)'
complete -c gphoto2 -l no-recurse -d 'No recursion (default for deletion)'
complete -c gphoto2 -l new -d 'Process new files only'
complete -c gphoto2 -l force-overwrite -d 'Overwrite files without asking'
