diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFJob.cc | 15 | ||||
-rw-r--r-- | libqpdf/QPDFJob_argv.cc | 13 | ||||
-rw-r--r-- | libqpdf/QPDFJob_json.cc | 2 | ||||
-rw-r--r-- | libqpdf/qpdf/auto_job_decl.hh | 2 | ||||
-rw-r--r-- | libqpdf/qpdf/auto_job_init.hh | 2 |
5 files changed, 28 insertions, 6 deletions
diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index e5914ddd..bc8f64f3 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -487,6 +487,15 @@ QPDFJob::config() std::string QPDFJob::job_json_schema_v1() { + return job_json_schema(1); +} + +std::string +QPDFJob::job_json_schema(int version) +{ + if (version != LATEST_JOB_JSON) { + throw std::runtime_error("job_json_schema: version must be 1"); + } return JOB_SCHEMA_DATA; } @@ -1753,6 +1762,12 @@ QPDFJob::json_schema(int json_version, std::set<std::string>* keys) } std::string +QPDFJob::json_out_schema(int version) +{ + return json_schema(version).unparse(); +} + +std::string QPDFJob::json_out_schema_v1() { return json_schema(1).unparse(); diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc index aa4755e8..89d6b106 100644 --- a/libqpdf/QPDFJob_argv.cc +++ b/libqpdf/QPDFJob_argv.cc @@ -143,10 +143,17 @@ ArgParser::argCopyright() } void -ArgParser::argJsonHelp() +ArgParser::argJsonHelp(std::string const& parameter) { + int version = JSON::LATEST; + if (!(parameter.empty() || (parameter == "latest"))) { + version = QUtil::string_to_int(parameter.c_str()); + } + if ((version < 1) || (version > JSON::LATEST)) { + usage(std::string("unsupported json version ") + parameter); + } *QPDFLogger::defaultLogger()->getInfo() - << QPDFJob::json_out_schema_v1() << "\n"; + << QPDFJob::json_out_schema(version) << "\n"; } void @@ -396,7 +403,7 @@ void ArgParser::argJobJsonHelp() { *QPDFLogger::defaultLogger()->getInfo() - << QPDFJob::job_json_schema_v1() << "\n"; + << QPDFJob::job_json_schema(QPDFJob::LATEST_JOB_JSON) << "\n"; } void diff --git a/libqpdf/QPDFJob_json.cc b/libqpdf/QPDFJob_json.cc index fcdeb666..fe81bced 100644 --- a/libqpdf/QPDFJob_json.cc +++ b/libqpdf/QPDFJob_json.cc @@ -10,7 +10,7 @@ #include <sstream> #include <stdexcept> -static JSON JOB_SCHEMA = JSON::parse(QPDFJob::job_json_schema_v1().c_str()); +static JSON JOB_SCHEMA = JSON::parse(QPDFJob::job_json_schema(1).c_str()); namespace { diff --git a/libqpdf/qpdf/auto_job_decl.hh b/libqpdf/qpdf/auto_job_decl.hh index 02f0ca91..196a4fe7 100644 --- a/libqpdf/qpdf/auto_job_decl.hh +++ b/libqpdf/qpdf/auto_job_decl.hh @@ -16,9 +16,9 @@ static constexpr char const* O_COPY_ATTACHMENT = "copy attachment"; void argVersion(); void argCopyright(); -void argJsonHelp(); void argShowCrypto(); void argJobJsonHelp(); +void argJsonHelp(std::string const&); void argPositional(std::string const&); void argAddAttachment(); void argCopyAttachmentsFrom(); diff --git a/libqpdf/qpdf/auto_job_init.hh b/libqpdf/qpdf/auto_job_init.hh index 0c5302e1..b90592e0 100644 --- a/libqpdf/qpdf/auto_job_init.hh +++ b/libqpdf/qpdf/auto_job_init.hh @@ -29,9 +29,9 @@ static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", this->ap.selectHelpOptionTable(); this->ap.addBare("version", b(&ArgParser::argVersion)); this->ap.addBare("copyright", b(&ArgParser::argCopyright)); -this->ap.addBare("json-help", b(&ArgParser::argJsonHelp)); this->ap.addBare("show-crypto", b(&ArgParser::argShowCrypto)); this->ap.addBare("job-json-help", b(&ArgParser::argJobJsonHelp)); +this->ap.addChoices("json-help", p(&ArgParser::argJsonHelp), false, json_version_choices); this->ap.selectMainOptionTable(); this->ap.addPositional(p(&ArgParser::argPositional)); this->ap.addBare("add-attachment", b(&ArgParser::argAddAttachment)); |