func RunApp(osArgs []string, fset *flag.FlagSet, cmdLibrary CmdLibrary, app func(osArgs []string) int) int {
	// process provided commands and process if it is a proxy command
	if processProxyCmd(osArgs, fset, cmdLibrary) {
		return 0
	}

	// otherwise, run the provided application
	return app(osArgs)
}
func RunApp(osArgs []string, fset *flag.FlagSet, cmdLibrary CmdLibrary, app func(osArgs []string) int) int {
	// process provided commands and process if it is a proxy command
	if processProxyCmd(osArgs, fset, cmdLibrary) {
		return 0
	}

	// otherwise, run the provided application
	return app(osArgs)
}
// RunApp runs an application using the provided arguments. The arguments should be of the same form as os.Args (the
// first element contains the invoking executable command and the rest contain the elements). If there are flags that
// can occur before the proxy command that should be ignored for the purposes of determining whether or not a command is
// a proxy command, they should be provided in "fset". If osArgs[1] of the non-flag arguments exists and is a proxy
// command, the corresponding command in cmdSet is run with the rest of the arguments and os.Exit is called. Otherwise,
// the provided "app" function is run and its return value is returned.