1#!/bin/sh
2
3# Ensure some files have been passed.
4if [ -z "$*" ]; then
5    echo "Usage: $0 [whitelist_files+]" >&2
6    exit 1
7fi
8
9cat << EOF
10#include <ipmiallowlist.hpp>
11
12const std::vector<netfncmd_pair> whitelist = {
13
14EOF
15
16# Output each row of whitelist vector.
17# Concatenate all the passed files.
18# Remove comments and empty lines.
19# Sort the list [numerically].
20# Remove any duplicates.
21# Turn "a:b //<NetFn>:<Command>" -> "{ a, b }, //<NetFn>:<Command>"
22sed "s/#.*//" "$*" | sed '/^$/d' | sort -n | uniq | sed "s/^/    { /" | \
23    sed "s/\:\(....\)\(.*\)/ , \1 }, \2/"
24
25cat << EOF
26};
27EOF
28