diff options
author | Dan Willemsen <dwillemsen@google.com> | 2016-10-17 15:33:58 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2016-10-17 15:58:53 -0700 |
commit | 6e63e0f73a403718d767b47dfb3315e0dadeb7ca (patch) | |
tree | ff49f871935ea7bcb2ee5d97afae7e1b4e5ce8ad /regen_dump.cc | |
parent | cb717b8ccc234b8ae318a8278f29ee075390e7c9 (diff) | |
download | kati-6e63e0f73a403718d767b47dfb3315e0dadeb7ca.tar.gz |
Add a tool to export a kati stamp file to other tools
There's a desire to understand which files are used by a build so that
the automated builds can make better guesses at which builds should be
run for a certain change. Instead of having them read a stamp file
directly, which would prevent us from updating the stamp format in the
future, build a tool that can be used to export the contents in a stable
and more portable format.
Right now, this just means exporting the file list to stdout with
newlines as delimiters. An idea for the future is to define a protobuf
or similar format that would contain the glob and shell information as
well (if it's useful).
Diffstat (limited to 'regen_dump.cc')
-rw-r--r-- | regen_dump.cc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/regen_dump.cc b/regen_dump.cc new file mode 100644 index 0000000..9838ab5 --- /dev/null +++ b/regen_dump.cc @@ -0,0 +1,57 @@ +// Copyright 2016 Google Inc. All rights reserved +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build ignore + +// This command will dump the contents of a kati stamp file into a more portable +// format for use by other tools. For now, it just exports the files read. +// Later, this will be expanded to include the Glob and Shell commands, but +// those require a more complicated output format. + +#include <stdio.h> + +#include <string> + +#include "io.h" +#include "log.h" +#include "strutil.h" + +int main(int argc, char* argv[]) { + if (argc == 1) { + fprintf(stderr, "Usage: ckati_stamp_dump <stamp>\n"); + return 1; + } + + FILE *fp = fopen(argv[1], "rb"); + if(!fp) + PERROR("fopen"); + + ScopedFile sfp(fp); + double gen_time; + size_t r = fread(&gen_time, sizeof(gen_time), 1, fp); + if (r != 1) + ERROR("Incomplete stamp file"); + + int num_files = LoadInt(fp); + if (num_files < 0) + ERROR("Incomplete stamp file"); + for (int i = 0; i < num_files; i++) { + string s; + if (!LoadString(fp, s)) + ERROR("Incomplete stamp file"); + printf("%s\n", s.c_str()); + } + + return 0; +} |