aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCary Clark <caryclark@skia.org>2018-10-31 16:16:54 -0400
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2018-11-01 13:19:50 +0000
commit3bdaa46bff71b839c806c0955417b1abaae650b0 (patch)
treeb928490f73e68896102799e67c1a1f9d50254843
parente4dda60c711119154af56fad730c53a2b58d7845 (diff)
downloadskqp-3bdaa46bff71b839c806c0955417b1abaae650b0.tar.gz
simplify default bookmaker command line
When bookmaker is run without arguments, run all commands. Allow SkCommandLineFlags to be set programatically if no arguments are passed in. R=scroggo@google.com Bug: skia:8518 Change-Id: I00697417ce45eaec880977ea872dd7de1fea63a0 Reviewed-on: https://skia-review.googlesource.com/c/166980 Reviewed-by: Cary Clark <caryclark@skia.org> Commit-Queue: Cary Clark <caryclark@skia.org> Auto-Submit: Cary Clark <caryclark@skia.org>
-rw-r--r--tools/bookmaker/bookmaker.cpp141
-rw-r--r--tools/bookmaker/mdOut.cpp4
-rw-r--r--tools/flags/SkCommandLineFlags.h4
3 files changed, 78 insertions, 71 deletions
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index beb7dd6116..5b282146ad 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -18,6 +18,7 @@ DEFINE_string2(status, a, "", "File containing status of documentation. (Use in
DEFINE_string2(bmh, b, "", "Path to a *.bmh file or a directory.");
DEFINE_bool2(catalog, c, false, "Write example catalog.htm. (Requires -b -f -r)");
DEFINE_string2(examples, e, "", "File of fiddlecli input, usually fiddle.json (For now, disables -r -f -s)");
+DEFINE_bool2(extract, E, false, "Extract examples into fiddle.json");
DEFINE_string2(fiddle, f, "", "File of fiddlecli output, usually fiddleout.json.");
DEFINE_bool2(hack, H, false, "Do a find/replace hack to update all *.bmh files. (Requires -b)");
// h is reserved for help
@@ -2717,10 +2718,16 @@ int main(int argc, char** const argv) {
SkCommandLineFlags::Parse(SK_ARRAY_COUNT(commands), commands);
return 0;
}
+ bool runAll = false;
if (FLAGS_bmh.isEmpty() && FLAGS_include.isEmpty() && FLAGS_status.isEmpty()) {
- SkDebugf("requires at least one of: -b -i -a\n");
- SkCommandLineFlags::PrintUsage();
- return 1;
+ FLAGS_status.set(0, "docs/status.json");
+ if (FLAGS_extract) {
+ FLAGS_examples.set(0, "fiddle.json");
+ } else {
+ FLAGS_fiddle.set(0, "fiddleout.json");
+ FLAGS_ref.set(0, "site/user/api");
+ runAll = true;
+ }
}
if (!FLAGS_bmh.isEmpty() && !FLAGS_status.isEmpty()) {
SkDebugf("requires -b or -a but not both\n");
@@ -2810,62 +2817,38 @@ int main(int argc, char** const argv) {
if (FLAGS_selfcheck && !SelfCheck(bmhParser)) {
return -1;
}
- bool done = false;
- if (!FLAGS_include.isEmpty() && FLAGS_tokens) {
+ if (!FLAGS_fiddle.isEmpty() && FLAGS_examples.isEmpty()) {
+ FiddleParser fparser(&bmhParser);
+ if (!fparser.parseFromFile(FLAGS_fiddle[0])) {
+ return -1;
+ }
+ }
+ if (runAll || (!FLAGS_catalog && !FLAGS_ref.isEmpty())) {
IncludeParser includeParser;
includeParser.validate();
- if (!includeParser.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
+ if (!FLAGS_status.isEmpty() && !includeParser.parseStatus(FLAGS_status[0], ".h",
+ StatusFilter::kCompleted)) {
return -1;
}
- if (FLAGS_tokens) {
- includeParser.fDebugOut = FLAGS_stdout;
- if (includeParser.dumpTokens()) {
- bmhParser.fWroteOut = true;
- }
- done = true;
- }
- } else if (!FLAGS_include.isEmpty() || !FLAGS_status.isEmpty()) {
- if (FLAGS_crosscheck) {
- IncludeParser includeParser;
- includeParser.validate();
- if (!FLAGS_include.isEmpty() &&
- !includeParser.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
- return -1;
- }
- if (!FLAGS_status.isEmpty() && !includeParser.parseStatus(FLAGS_status[0], ".h",
- StatusFilter::kCompleted)) {
- return -1;
- }
- if (!includeParser.crossCheck(bmhParser)) {
- return -1;
- }
- done = true;
- } else if (FLAGS_populate) {
- IncludeWriter includeWriter;
- includeWriter.validate();
- if (!FLAGS_include.isEmpty() &&
- !includeWriter.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
- return -1;
- }
- if (!FLAGS_status.isEmpty() && !includeWriter.parseStatus(FLAGS_status[0], ".h",
- StatusFilter::kCompleted)) {
- return -1;
- }
- includeWriter.fDebugOut = FLAGS_stdout;
- if (!includeWriter.populate(bmhParser)) {
- return -1;
- }
+ if (!FLAGS_include.isEmpty() && !includeParser.parseFile(FLAGS_include[0], ".h",
+ ParserCommon::OneFile::kYes)) {
+ return -1;
+ }
+ includeParser.writeCodeBlock();
+ MdOut mdOut(bmhParser, includeParser);
+ mdOut.fDebugOut = FLAGS_stdout;
+ mdOut.fValidate = FLAGS_validate;
+ if (!FLAGS_bmh.isEmpty() && mdOut.buildReferences(FLAGS_bmh[0], FLAGS_ref[0])) {
bmhParser.fWroteOut = true;
- done = true;
}
- }
- if (!done && !FLAGS_fiddle.isEmpty() && FLAGS_examples.isEmpty()) {
- FiddleParser fparser(&bmhParser);
- if (!fparser.parseFromFile(FLAGS_fiddle[0])) {
- return -1;
+ if (!FLAGS_status.isEmpty() && mdOut.buildStatus(FLAGS_status[0], FLAGS_ref[0])) {
+ bmhParser.fWroteOut = true;
+ }
+ if (FLAGS_validate) {
+ mdOut.checkAnchors();
}
}
- if (!done && FLAGS_catalog && FLAGS_examples.isEmpty()) {
+ if (runAll || (FLAGS_catalog && FLAGS_ref.isEmpty())) {
Catalog cparser(&bmhParser);
cparser.fDebugOut = FLAGS_stdout;
if (!FLAGS_bmh.isEmpty() && !cparser.openCatalog(FLAGS_bmh[0])) {
@@ -2881,34 +2864,51 @@ int main(int argc, char** const argv) {
return -1;
}
bmhParser.fWroteOut = true;
- done = true;
}
- if (!done && !FLAGS_ref.isEmpty() && FLAGS_examples.isEmpty()) {
+ if (FLAGS_tokens) {
+ IncludeParser includeParser;
+ includeParser.validate();
+ if (!includeParser.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
+ return -1;
+ }
+ includeParser.fDebugOut = FLAGS_stdout;
+ if (includeParser.dumpTokens()) {
+ bmhParser.fWroteOut = true;
+ }
+ }
+ if (runAll || FLAGS_crosscheck) {
IncludeParser includeParser;
includeParser.validate();
+ if (!FLAGS_include.isEmpty() &&
+ !includeParser.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
+ return -1;
+ }
if (!FLAGS_status.isEmpty() && !includeParser.parseStatus(FLAGS_status[0], ".h",
StatusFilter::kCompleted)) {
return -1;
}
- if (!FLAGS_include.isEmpty() && !includeParser.parseFile(FLAGS_include[0], ".h",
- ParserCommon::OneFile::kYes)) {
+ if (!includeParser.crossCheck(bmhParser)) {
return -1;
}
- includeParser.writeCodeBlock();
- MdOut mdOut(bmhParser, includeParser);
- mdOut.fDebugOut = FLAGS_stdout;
- mdOut.fValidate = FLAGS_validate;
- if (!FLAGS_bmh.isEmpty() && mdOut.buildReferences(FLAGS_bmh[0], FLAGS_ref[0])) {
- bmhParser.fWroteOut = true;
+ }
+ if (runAll || FLAGS_populate) {
+ IncludeWriter includeWriter;
+ includeWriter.validate();
+ if (!FLAGS_include.isEmpty() &&
+ !includeWriter.parseFile(FLAGS_include[0], ".h", ParserCommon::OneFile::kNo)) {
+ return -1;
}
- if (!FLAGS_status.isEmpty() && mdOut.buildStatus(FLAGS_status[0], FLAGS_ref[0])) {
- bmhParser.fWroteOut = true;
+ if (!FLAGS_status.isEmpty() && !includeWriter.parseStatus(FLAGS_status[0], ".h",
+ StatusFilter::kCompleted)) {
+ return -1;
}
- if (FLAGS_validate) {
- mdOut.checkAnchors();
+ includeWriter.fDebugOut = FLAGS_stdout;
+ if (!includeWriter.populate(bmhParser)) {
+ return -1;
}
+ bmhParser.fWroteOut = true;
}
- if (!done && !FLAGS_spellcheck.isEmpty() && FLAGS_examples.isEmpty()) {
+ if (!FLAGS_spellcheck.isEmpty()) {
if (!FLAGS_bmh.isEmpty()) {
bmhParser.spellCheck(FLAGS_bmh[0], FLAGS_spellcheck);
}
@@ -2916,12 +2916,8 @@ int main(int argc, char** const argv) {
bmhParser.spellStatus(FLAGS_status[0], FLAGS_spellcheck);
}
bmhParser.fWroteOut = true;
- done = true;
}
- int examples = 0;
- int methods = 0;
- int topics = 0;
- if (!done && !FLAGS_examples.isEmpty()) {
+ if (!FLAGS_examples.isEmpty()) {
// check to see if examples have duplicate names
if (!bmhParser.checkExamples()) {
return -1;
@@ -2933,6 +2929,9 @@ int main(int argc, char** const argv) {
return 0;
}
if (!bmhParser.fWroteOut) {
+ int examples = 0;
+ int methods = 0;
+ int topics = 0;
for (const auto& topic : bmhParser.fTopicMap) {
if (topic.second->fParent) {
continue;
diff --git a/tools/bookmaker/mdOut.cpp b/tools/bookmaker/mdOut.cpp
index ced107d818..22b830b69d 100644
--- a/tools/bookmaker/mdOut.cpp
+++ b/tools/bookmaker/mdOut.cpp
@@ -2176,6 +2176,7 @@ void MdOut::markTypeOut(Definition* def, const Definition** prior) {
paramMap.fName = parentName + iMethod->fName;
paramMap.fParent = parentMap;
fNames = &paramMap;
+ TextParser methParams(iMethod);
for (auto& param : iMethod->fTokens) {
if (MarkType::kComment != param.fMarkType) {
continue;
@@ -2193,6 +2194,9 @@ void MdOut::markTypeOut(Definition* def, const Definition** prior) {
SkASSERT(isalnum(c) || '_' == c);
}
#endif
+ if (!methParams.containsWord(paramName.c_str(), methParams.fEnd, nullptr)) {
+ param.reportError<void>("mismatched param name");
+ }
paramMap.fRefMap[paramName] = &param;
paramMap.fLinkMap[paramName] = '#' + def->fFiddle + '_' + paramName;
}
diff --git a/tools/flags/SkCommandLineFlags.h b/tools/flags/SkCommandLineFlags.h
index bf4a41e70d..693a5db6e3 100644
--- a/tools/flags/SkCommandLineFlags.h
+++ b/tools/flags/SkCommandLineFlags.h
@@ -162,6 +162,10 @@ public:
}
void set(int i, const char* str) {
+ if (i >= fStrings.count()) {
+ this->append(str);
+ return;
+ }
fStrings[i].set(str);
}