#!/usr/bin/ruby
# Takes a command line for GCC (or similar) on as a file or on its
# standard input, extracts the preprocessor macros defined and the
# include paths, and outputs them in a format suitable for
# pasting into c_cpp_properties.json so that VSCode can understand
# your C/C++ project better.

require 'json'

input = ARGF.read

defines = []
include_path = []

input.split do |i|
  if i.start_with?('-D')
    defines << i[2..-1]
  end
  if i.start_with?('-I')
    include_path << i[2..-1].sub(/^\/C\//, 'C:/')
  end
end

data = {defines: defines, includePath: include_path}
puts JSON.generate(data, indent: "  ", object_nl: "\n", array_nl: "\n")