aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFJob.cc15
-rw-r--r--libqpdf/QPDFJob_argv.cc13
-rw-r--r--libqpdf/QPDFJob_json.cc2
-rw-r--r--libqpdf/qpdf/auto_job_decl.hh2
-rw-r--r--libqpdf/qpdf/auto_job_init.hh2
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));