package cmd

import (
	"fmt"

	"github.com/spf13/cobra"
)

var rootCmd = &cobra.Command{
	Use:   "pls",
	Short: "Impressive Linux commands cheat sheet cli.",
}

func Execute() {
	if err := rootCmd.Execute(); err != nil {
		fmt.Println(err)
	}
}

func init() {
	rootCmd.AddCommand(
		NewShowCommand(),
		NewUpgradeCommand(),
		NewVersionCommand(),
		NewSearchCommand(),
	)
}

var commands = []string{
	"ab",
	"accept",
	"ack",
	"alias",
	"apachectl",
	"apk",
	"apropos",
	"apt-get",
	"apt-key",
	"apt-sortpkgs",
	"aptitude",
	"ar",
	"arch",
	"arj",
	"arp",
	"arpd",
	"arping",
	"arptables",
	"arpwatch",
	"as",
	"at",
	"atop",
	"atq",
	"atrm",
	"awk",
	"axel",
	"badblocks",
	"base64",
	"basename",
	"batch",
	"bc",
	"bg",
	"bind",
	"blkid",
	"blockdev",
	"bmodinfo",
	"break",
	"builtin",
	"bunzip2",
	"bye",
	"bzcat",
	"bzcmp",
	"bzdiff",
	"bzgrep",
	"bzip2",
	"bzip2recover",
	"bzless",
	"bzmore",
	"cal",
	"cancel",
	"cat",
	"cd",
	"cdrecord",
	"chage",
	"chattr",
	"chcon",
	"chfn",
	"chgrp",
	"chkconfig",
	"chmod",
	"chown",
	"chpasswd",
	"chroot",
	"chsh",
	"cksum",
	"clear",
	"clock",
	"clockdiff",
	"cmp",
	"col",
	"colrm",
	"comm",
	"command",
	"compress",
	"consoletype",
	"continue",
	"convertquota",
	"cp",
	"cpio",
	"crontab",
	"csplit",
	"cu",
	"cupsdisable",
	"cupsenable",
	"curl",
	"cut",
	"date",
	"dd",
	"declare",
	"depmod",
	"df",
	"dhclient",
	"dhcpd",
	"dhcrelay",
	"diff",
	"diff3",
	"diffstat",
	"dig",
	"dircolors",
	"dirname",
	"dirs",
	"disown",
	"dmesg",
	"dmidecode",
	"dnf",
	"dnsdomainname",
	"domainname",
	"dos2unix",
	"dpkg-deb",
	"dpkg-divert",
	"dpkg-preconfigure",
	"dpkg-query",
	"dpkg-reconfigure",
	"dpkg-split",
	"dpkg-statoverride",
	"dpkg-trigger",
	"dpkg",
	"dris",
	"dstat",
	"du",
	"dump",
	"e2fsck",
	"e2label",
	"echo",
	"ed",
	"edquota",
	"egrep",
	"eject",
	"elinks",
	"elm",
	"emacs",
	"enable",
	"env",
	"ethtool",
	"ex",
	"exec",
	"exit",
	"expand",
	"export",
	"exportfs",
	"expr",
	"false",
	"fc",
	"fdisk",
	"fg",
	"fgrep",
	"file",
	"find",
	"findfs",
	"finger",
	"firewall-cmd",
	"fishshell",
	"fmt",
	"fold",
	"fping",
	"free",
	"fsck",
	"ftp",
	"ftpcount",
	"ftpshut",
	"ftptop",
	"ftpwho",
	"fuser",
	"gcc",
	"gcov",
	"gdb",
	"get_module",
	"getenforce",
	"getsebool",
	"git",
	"gpasswd",
	"gpm",
	"grep",
	"groupadd",
	"groupdel",
	"groupmod",
	"groups",
	"grpck",
	"grpconv",
	"grpunconv",
	"grub",
	"gunzip",
	"gzexe",
	"gzip",
	"halt",
	"hdparm",
	"head",
	"help",
	"hexdump",
	"history",
	"host",
	"hostid",
	"hostname",
	"hping3",
	"htdigest",
	"htop",
	"htpasswd",
	"hwclock",
	"iconv",
	"id",
	"ifcfg",
	"ifconfig",
	"ifdown",
	"ifstat",
	"iftop",
	"ifup",
	"indent",
	"info",
	"init",
	"inotifywait",
	"insmod",
	"install",
	"iostat",
	"iotop",
	"ip",
	"ip6tables-restore",
	"ip6tables-save",
	"ip6tables",
	"ipcalc",
	"ipcrm",
	"ipcs",
	"iperf",
	"iptables-restore",
	"iptables-save",
	"iptables",
	"iptraf",
	"iptstate",
	"ispell",
	"jed",
	"jobs",
	"joe",
	"join",
	"jwhois",
	"kernelversion",
	"kexec",
	"kill",
	"killall",
	"last",
	"lastb",
	"lastlog",
	"ld",
	"ldconfig",
	"ldd",
	"less",
	"let",
	"lftp",
	"lftpget",
	"lha",
	"lilo",
	"ln",
	"lnstat",
	"local",
	"locate",
	"logger",
	"login",
	"logname",
	"logout",
	"logrotate",
	"logsave",
	"logwatch",
	"look",
	"losetup",
	"lp",
	"lpadmin",
	"lpc",
	"lpq",
	"lpr",
	"lprm",
	"lpstat",
	"ls",
	"lsattr",
	"lsb_release",
	"lsblk",
	"lscpu",
	"lsmod",
	"lsof",
	"lspci",
	"lsusb",
	"ltrace",
	"lvcreate",
	"lvdisplay",
	"lvextend",
	"lvreduce",
	"lvremove",
	"lvresize",
	"lvscan",
	"lynx",
	"mail",
	"mailq",
	"mailstat",
	"make",
	"man",
	"mapfile",
	"md5sum",
	"mesg",
	"mii-tool",
	"mkbootdisk",
	"mkdir",
	"mke2fs",
	"mkfs",
	"mkinitrd",
	"mkisofs",
	"mknod",
	"mkswap",
	"mktemp",
	"modprobe",
	"more",
	"mount",
	"mpstat",
	"mtools",
	"mv",
	"mysql",
	"mysqladmin",
	"mysqldump",
	"mysqlimport",
	"mysqlshow",
	"named-checkzone",
	"nano",
	"nc",
	"ncftp",
	"nethogs",
	"netstat",
	"newusers",
	"nfsstat",
	"ngrep",
	"nice",
	"nisdomainname",
	"nl",
	"nm",
	"nmap",
	"nmcli",
	"nohup",
	"nologin",
	"nproc",
	"nslookup",
	"ntpdate",
	"ntsysv",
	"objdump",
	"od",
	"openssl",
	"parted",
	"partprobe",
	"passwd",
	"paste",
	"patch",
	"pathchk",
	"perl",
	"pfctl",
	"pgrep",
	"php",
	"pico",
	"pidof",
	"pigz",
	"ping",
	"pkill",
	"pmap",
	"popd",
	"poweroff",
	"ppp-off",
	"pr",
	"printf",
	"protoize",
	"ps",
	"pssh",
	"pstack",
	"pstree",
	"pushd",
	"pv",
	"pvchange",
	"pvck",
	"pvcreate",
	"pvdisplay",
	"pvremove",
	"pvs",
	"pvscan",
	"pwck",
	"pwconv",
	"pwd",
	"pwunconv",
	"quota",
	"quotacheck",
	"quotaoff",
	"quotaon",
	"rcconf",
	"rcp",
	"read",
	"readelf",
	"readonly",
	"reboot",
	"reject",
	"rename",
	"renice",
	"repquota",
	"resize",
	"restore",
	"restorecon",
	"return",
	"rev",
	"rexec",
	"rlogin",
	"rm",
	"rmdir",
	"rmmod",
	"route",
	"rpm",
	"rpm2cpio",
	"rpmbuild",
	"rpmdb",
	"rpmquery",
	"rpmsign",
	"rpmverify",
	"rsh",
	"rsync",
	"runlevel",
	"sar",
	"scp",
	"screen",
	"sed",
	"seinfo",
	"semanage",
	"sendmail",
	"seq",
	"service",
	"sesearch",
	"set",
	"setfacl",
	"setpci",
	"setsebool",
	"setsid",
	"sftp-server",
	"sftp",
	"sh",
	"shift",
	"shopt",
	"showmount",
	"shuf",
	"shutdown",
	"skill",
	"slabtop",
	"sleep",
	"slocate",
	"smbclient",
	"smbpasswd",
	"sort",
	"source",
	"speedtest-cli",
	"spell",
	"split",
	"squid",
	"squidclient",
	"ss",
	"ssh-add",
	"ssh-agent",
	"ssh-copy-id",
	"ssh-keygen",
	"ssh-keyscan",
	"ssh",
	"sshd",
	"startx",
	"stat",
	"strace",
	"strings",
	"stty",
	"su",
	"sudo",
	"sum",
	"supervisord",
	"suspend",
	"swapoff",
	"swapon",
	"sync",
	"sysctl",
	"syslog",
	"systemctl",
	"systool",
	"tac",
	"tail",
	"tailf",
	"talk",
	"tar",
	"tcpdump",
	"tcpreplay",
	"tee",
	"telint",
	"telnet",
	"tempfile",
	"test",
	"tftp",
	"time",
	"times",
	"tload",
	"tmux",
	"top",
	"touch",
	"tput",
	"tr",
	"tracepath",
	"traceroute",
	"trap",
	"tree",
	"true",
	"tty",
	"type",
	"ulimit",
	"umask",
	"umount",
	"unalias",
	"uname",
	"unarj",
	"uncompress",
	"unexpand",
	"uniq",
	"unlink",
	"unprotoize",
	"unrar",
	"unset",
	"unzip",
	"updatedb",
	"uptime",
	"useradd",
	"userdel",
	"usermod",
	"usernetctl",
	"users",
	"uucico",
	"uupick",
	"uuto",
	"vdfuse",
	"vgchange",
	"vgconvert",
	"vgcreate",
	"vgdisplay",
	"vgextend",
	"vgreduce",
	"vgremove",
	"vgrename",
	"vgscan",
	"vi",
	"vmstat",
	"volname",
	"w",
	"wait",
	"wall",
	"watch",
	"wc",
	"wget",
	"whatis",
	"whereis",
	"which",
	"who",
	"whoami",
	"write",
	"xargs",
	"xauth",
	"xclip",
	"xhost",
	"xinit",
	"xlsatoms",
	"xlsclients",
	"xlsfonts",
	"xset",
	"xz",
	"yes",
	"ypdomainname",
	"yum",
	"zcat",
	"zfore",
	"zip",
	"zipinfo",
	"zipsplit",
	"znew",
}
