aboutsummaryrefslogtreecommitdiff
path: root/regen_dump.cc
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2016-10-17 15:33:58 -0700
committerDan Willemsen <dwillemsen@google.com>2016-10-17 15:58:53 -0700
commit6e63e0f73a403718d767b47dfb3315e0dadeb7ca (patch)
treeff49f871935ea7bcb2ee5d97afae7e1b4e5ce8ad /regen_dump.cc
parentcb717b8ccc234b8ae318a8278f29ee075390e7c9 (diff)
downloadkati-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.cc57
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;
+}