/* This file is part of Eclat.
Copyright (C) 2012-2015 Sergey Poznyakoff.
Eclat is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
Eclat is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Eclat. If not, see . */
static struct grecs_list *reslist;
struct resource {
char *map;
char *resid;
};
ECLAT_CL_BEGIN([],
[<[FILTER...]>])
OPTION(resource-id,r,[<[MAP:]ID>],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
char *p = strchr(optarg, ':');
if (p) {
res->map = optarg;
*p++ = 0;
res->resid = p;
} else {
res->map = NULL;
res->resid = optarg;
}
grecs_list_append(reslist, res);
END
OPTION(instance,i,[],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
res->map = MAP_INSTANCE;
res->resid = optarg;
grecs_list_append(reslist, res);
END
OPTION(volume,v,[],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
res->map = MAP_VOLUME;
res->resid = optarg;
grecs_list_append(reslist, res);
END
OPTION(ami,a,[],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
res->map = MAP_IMAGE;
res->resid = optarg;
grecs_list_append(reslist, res);
END
OPTION(snapshot,s,[],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
res->map = MAP_SNAPSHOT;
res->resid = optarg;
grecs_list_append(reslist, res);
END
OPTION(internet-gateway,g,[],
[])
BEGIN
struct resource *res = grecs_malloc(sizeof(*res));
res->map = MAP_IGW;
res->resid = optarg;
grecs_list_append(reslist, res);
END
ECLAT_CL_END
ECLAT_CL_PARSER(parse_options, [],[<
{
static char *resource_types[] = {
"customer-gateway",
"dhcp-options",
"image",
"instance",
"internet-gateway",
"network-acl",
"reserved-instances",
"route-table",
"security-group",
"snapshot",
"spot-instances-request",
"subnet",
"volume",
"vpc",
"vpn-connection",
"vpn-gateway",
NULL
};
static struct filter_descr filters[] = {
{ "key", FILTER_STRING },
{ "resource-id", FILTER_STRING },
{ "resource-type", FILTER_ENUM, resource_types },
{ "value", FILTER_STRING },
{ NULL }
};
available_filters = filters;
proginfo.print_help_hook = list_filters;
reslist = grecs_list_create();
GETOPT(argc, argv, *index, exit(EX_USAGE))
}
>])