function __fish_wajig_no_subcommand -d 'Test if wajig has yet to be given the subcommand'
    for i in (commandline -opc)
        if contains -- $i addcdrom auto-alts auto-clean auto-download auto-install \
                available bug build build-depend changelog clean commands daily-upgrade \
                dependents describe describe-new detail detail-new dist-upgrade docs download \
                file-download file-install file-remove find-file find-pkg fix-configure \
                fix-install fix-missing force help hold init install installr installrs \
                installs integrity large last-update list list-all list-alts list-cache \
                list-commands list-daemons list-files list-hold list-installed list-log \
                list-names list-orphans list-scripts list-section list-section list-status \
                list-wide local-dist-upgrade local-upgrade madison move new news new-upgrades \
                non-free orphans package policy purge purge-depend purge-orphans readme \
                recursive recommended reconfigure reinstall reload remove remove-depend \
                remove-orphans repackage reset restart rpminstall rpmtodeb search search-apt \
                setup show showdistupgrade showinstall showremove showupgrade size sizes \
                snapshot source start status status-match status-search stop suggested \
                tasksel toupgrade unhold unofficial update update-alts update-pci-ids \
                update-usb-ids upgrade versions whatis whichpkg
            return 1
        end
    end
    return 0
end

function __fish_wajig_use_package -d 'Test if wajig command should have packages as potential completion'
    for i in (commandline -opc)
        if contains -- $i contains bug build build-depend changelog dependents describe \
                detail hold install installr installrs installs list list-files news \
                package purge purge-depend readme recursive recommended reconfigure \
                reinstall remove remove-depend repackage show showinstall showremove \
                showupgrade size sizes source suggested unhold upgrade versions whatis
            return 0
        end
    end
    return 1
end

complete -c wajig -n __fish_wajig_use_package -a '(__fish_print_apt_packages)' -d Packages
complete -c wajig -s q -l quiet -d 'Do system commands everything quietly.'
complete -c wajig -s n -l noauth -d 'Allow packages from unathenticated archives.'
complete -c wajig -s s -l simulate -d 'Trace but don\'t execute the sequence of underlying commands.'
complete -c wajig -s t -l teaching -d 'Trace the sequence of commands performed.'
complete -c wajig -s y -l yes -d 'Assume yes for any questions asked.'
complete -f -n __fish_wajig_no_subcommand -c wajig -a addcdrom -d 'Add a CD-ROM to the list of available sources of packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a auto-alts -d 'Mark the alternative to be auto set (using set priorities)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a auto-clean -d 'Remove superseded deb files from the download cache'
complete -f -n __fish_wajig_no_subcommand -c wajig -a auto-download -d 'Do an update followed by a download of all updated packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a auto-install -d 'Perform an install without asking questions (non-interactive)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a available -d 'List versions of packages available for installation'
complete -f -n __fish_wajig_no_subcommand -c wajig -a bug -d 'Check reported bugs in package using the Debian Bug Tracker'
complete -f -n __fish_wajig_no_subcommand -c wajig -a build -d 'Retrieve/unpack sources and build .deb for the named packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a build-depend -d 'Retrieve packages required to build listed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a changelog -d 'Retrieve latest changelog for the package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a clean -d 'Remove all deb files from the download cache'
complete -f -n __fish_wajig_no_subcommand -c wajig -a commands -d 'List all the JIG commands and one line descriptions for each'
complete -f -n __fish_wajig_no_subcommand -c wajig -a daily-upgrade -d 'Perform an update then a dist-upgrade'
complete -f -n __fish_wajig_no_subcommand -c wajig -a dependents -d 'List of packages which depend/recommend/suggest the package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a describe -d 'One line description of packages (-v and -vv for more detail)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a describe-new -d 'One line description of new packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a detail -d 'Provide a detailed description of package (describe -vv)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a detail-new -d 'Provide a detailed description of new packages (describe -vv)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a dist-upgrade -d 'Upgrade to new distribution (installed and new rqd packages)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a docs -d 'Equivalent to help with -verbose=2'
complete -f -n __fish_wajig_no_subcommand -c wajig -a download -d 'Download package files ready for an install'
complete -f -n __fish_wajig_no_subcommand -c wajig -a file-download -d 'Download packages listed in file ready for an install'
complete -f -n __fish_wajig_no_subcommand -c wajig -a file-install -d 'Install packages listed in a file'
complete -f -n __fish_wajig_no_subcommand -c wajig -a file-remove -d 'Remove packages listed in a file'
complete -f -n __fish_wajig_no_subcommand -c wajig -a find-file -d 'Search for a file within installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a find-pkg -d 'Search for an unofficial Debian package at apt-get.org'
complete -f -n __fish_wajig_no_subcommand -c wajig -a fix-configure -d 'Perform dpkg --configure -a (to fix interrupted configure)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a fix-install -d 'Perform apt-get -f install (to fix broken dependencies)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a fix-missing -d 'Perform apt-get --fix-missing upgrade'
complete -f -n __fish_wajig_no_subcommand -c wajig -a force -d 'Install packages and ignore file overwrites and depends'
complete -f -n __fish_wajig_no_subcommand -c wajig -a help -d 'Print documentation (detail depends on --verbose)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a hold -d 'Place listed packages on hold so they are not upgraded'
complete -f -n __fish_wajig_no_subcommand -c wajig -a init -d 'Initialise or reset the JIG archive files'
complete -f -n __fish_wajig_no_subcommand -c wajig -a install -d 'Install (or upgrade) one or more packages or .deb files'
complete -f -n __fish_wajig_no_subcommand -c wajig -a installr -d 'Install package and associated recommended packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a installrs -d 'Install package and recommended and suggested packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a installs -d 'Install package and associated suggested packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a integrity -d 'Check the integrity of installed packages (through checksums)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a large -d 'List size of all large (>10MB) installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a last-update -d 'Identify when an update was last performed'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list -d 'List the status and description of installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-all -d 'List a one line description of given or all packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-alts -d 'List the objects that can have alternatives configured'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-cache -d 'List the contents of the download cache'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-commands -d 'List all the JIG commands and one line descriptions for each'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-daemons -d 'List the daemons that JIG can start/stop/restart'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-files -d 'List the files that are supplied by the named package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-hold -d 'List those packages on hold'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-installed -d 'List packages (with optional argument substring) installed'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-log -d 'List the contents of the install/remove log file (filtered)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-names -d 'List all known packages or those containing supplied string'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-orphans -d 'List libraries not required by any installed package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-scripts -d 'List the control scripts of the package of deb file'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-section -d 'List packages that belong to a specific section'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-section -d 'List the sections that are available'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-status -d 'Same as list but only prints first two columns, not truncated'
complete -f -n __fish_wajig_no_subcommand -c wajig -a list-wide -d 'Same as list but avoids truncating package names'
complete -f -n __fish_wajig_no_subcommand -c wajig -a local-dist-upgrade -d 'Dist-upgrade using packages already downloaded'
complete -f -n __fish_wajig_no_subcommand -c wajig -a local-upgrade -d 'Upgrade using packages already downloaded, but not any others'
complete -f -n __fish_wajig_no_subcommand -c wajig -a madison -d 'Runs the madison command of apt-cache.'
complete -f -n __fish_wajig_no_subcommand -c wajig -a move -d 'Move packages in the download cache to a local Debian mirror'
complete -f -n __fish_wajig_no_subcommand -c wajig -a new -d 'List packages that became available since last update'
complete -f -n __fish_wajig_no_subcommand -c wajig -a news -d 'Obtain the latest news about the package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a new-upgrades -d 'List packages newly available for upgrading'
complete -f -n __fish_wajig_no_subcommand -c wajig -a non-free -d 'List installed packages that do not meet the DFSG'
complete -f -n __fish_wajig_no_subcommand -c wajig -a orphans -d 'List libraries not required by any installed package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a package -d 'Generate a .deb file for an installed package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a policy -d 'From preferences file show priorities/policy (available)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a purge -d 'Remove one or more packages and configuration files'
complete -f -n __fish_wajig_no_subcommand -c wajig -a purge-depend -d 'Purge package and those it depend on and not required by others'
complete -f -n __fish_wajig_no_subcommand -c wajig -a purge-orphans -d 'Purge orphaned libraries (not required by installed packages)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a readme -d 'Display the package\'s README file from /usr/share/doc'
complete -f -n __fish_wajig_no_subcommand -c wajig -a recursive -d 'Download package and any packages it depends on'
complete -f -n __fish_wajig_no_subcommand -c wajig -a recommended -d 'Install package and associated recommended packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a reconfigure -d 'Reconfigure the named installed packages or run gkdebconf'
complete -f -n __fish_wajig_no_subcommand -c wajig -a reinstall -d 'Reinstall each of the named packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a reload -d 'Reload daemon configs, e.g., gdm, apache (see list-daemons)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a remove -d 'Remove one or more packages (see also purge)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a remove-depend -d 'Remove package and its dependees not required by others'
complete -f -n __fish_wajig_no_subcommand -c wajig -a remove-orphans -d 'Remove orphaned libraries (not required by installed packages)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a repackage -d 'Generate a .deb file for an installed package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a reset -d 'Initialise or reset the JIG archive files'
complete -f -n __fish_wajig_no_subcommand -c wajig -a restart -d 'Stop then start a daemon, e.g., gdm, apache (see list-daemons)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a rpminstall -d 'Install a RedHat .rpm package'
complete -f -n __fish_wajig_no_subcommand -c wajig -a rpmtodeb -d 'Convert a RedHat .rpm file to a Debian .deb file'
complete -f -n __fish_wajig_no_subcommand -c wajig -a search -d 'Search for packages containing listed words'
complete -f -n __fish_wajig_no_subcommand -c wajig -a search-apt -d 'Find local Debian archives suitable for sources.list'
complete -f -n __fish_wajig_no_subcommand -c wajig -a setup -d 'Configure the sources.list file which locates Debian archives'
complete -f -n __fish_wajig_no_subcommand -c wajig -a show -d 'Provide a detailed description of package [same as detail]'
complete -f -n __fish_wajig_no_subcommand -c wajig -a showdistupgrade -d 'Trace the steps that a dist-upgrade would perform'
complete -f -n __fish_wajig_no_subcommand -c wajig -a showinstall -d 'Trace the steps that an install would perform'
complete -f -n __fish_wajig_no_subcommand -c wajig -a showremove -d 'Trace the steps that a remove would perform'
complete -f -n __fish_wajig_no_subcommand -c wajig -a showupgrade -d 'Trace the steps that an upgrade would perform'
complete -f -n __fish_wajig_no_subcommand -c wajig -a size -d 'Print out the size (in K) of all, or listed, installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a sizes -d 'Print out the size (in K) of all, or listed, installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a snapshot -d 'Generates list of package=version for all installed packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a source -d 'Retrieve and unpack sources for the named packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a start -d 'Start a daemon, e.g., gdm, apache (see list-daemons)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a status -d 'Show the version and available version of packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a status-match -d 'Show the version and available version of matching packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a status-search -d 'Show the version and available version of matching packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a stop -d 'Stop a daemon, e.g., gdm, apache (see list-daemons)'
complete -f -n __fish_wajig_no_subcommand -c wajig -a suggested -d 'Install package and associated suggested packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a tasksel -d 'Run the Gnome task selector to install groups of packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a toupgrade -d 'List packages with newer versions available for upgrading'
complete -f -n __fish_wajig_no_subcommand -c wajig -a unhold -d 'Remove listed packages from hold so they are again upgraded'
complete -f -n __fish_wajig_no_subcommand -c wajig -a unofficial -d 'Search for an unofficial Debian package at apt-get.org'
complete -f -n __fish_wajig_no_subcommand -c wajig -a update -d 'Update the list of down-loadable packages'
complete -f -n __fish_wajig_no_subcommand -c wajig -a update-alts -d 'Update default alternative for things like x-window-manager'
complete -f -n __fish_wajig_no_subcommand -c wajig -a update-pci-ids -d 'Updates the local list of PCI ids from the internet master list'
complete -f -n __fish_wajig_no_subcommand -c wajig -a update-usb-ids -d 'Updates the local list of USB ids from the internet master list'
complete -f -n __fish_wajig_no_subcommand -c wajig -a upgrade -d 'Upgrade all of the installed packages or just those listed'
complete -f -n __fish_wajig_no_subcommand -c wajig -a versions -d 'List version and distribution of (all) packages.'
complete -f -n __fish_wajig_no_subcommand -c wajig -a whatis -d 'A synonym for describe'
complete -f -n __fish_wajig_no_subcommand -c wajig -a whichpkg -d 'Find the package that supplies the given command or file'
