#include <stdio.h>
#include <unistd.h>
#include <getopt.h>

#include "compile.h"

/**
 * @brief  应用程序主函数
 * @note
 * @param  argc:       输入参数个数
 * @param  **argv:     输入参数详细内容
 * @retval 0
 */
int main(int argc, char **argv)
{
    int c, optidx = 0;
    opterr = 0;
    static struct option long_opts[] = {
        { "help", 0, 0, 'h' },
        { "version", 0, 0, 'v' },
        // TODO 添加其它需要处理的参数配置
        { 0, 0, 0, 0 }
    };

    while((c = getopt_long(argc, argv, "hv", long_opts, &optidx)) != -1)
    {
        switch (c)
        {
        case 'v':
            fprintf(stdout, "User demo version: %s(%s)\n", sGATE_GIT_TAGS, sGATE_GIT_VERS);            
            break;
        //TODO 添加其它必要处理参数过程

        case '?':
        case 'h':
            fprintf(stdout, "Usage: %s [-h] [-v] ...\n", argv[0]);
            fprintf(stdout, "options:\n");
            fprintf(stdout, "\t-v, --version show program version\n");
            fprintf(stdout, "\t-h, --help    print this message\n");
            break;
        }
    }

    return 0;
}