1+ #!/usr/bin/wsjcpp-safe-scripting
2+
3+ # log_info rootdir
4+ # log_info script_filename
5+
6+ make_dir "src"
7+
8+ var argument_processor_name
9+ set_value argument_processor_name arg1
10+ normalize_class_name argument_processor_name
11+ convert_CamelCase_to_snake_case argument_processor_name argument_processor_name
12+
13+ var class_name
14+ concat class_name "WsjcppJsonRpc20Handler" arg1
15+ normalize_class_name class_name
16+
17+ var base_filename
18+ convert_CamelCase_to_snake_case class_name base_filename
19+ # log_info base_filename
20+
21+ var filename_cpp
22+ concat filename_cpp "./src/" base_filename ".cpp"
23+
24+ var filename_h
25+ concat filename_h "./src/" base_filename ".h"
26+
27+ var ifndef_header
28+ set_value ifndef_header base_filename
29+ concat ifndef_header "_H"
30+
31+ to_upper_case ifndef_header
32+
33+ var content_header
34+ concat content_header "#ifndef " ifndef_header "
35+ #define " ifndef_header "
36+
37+ #include <wsjcpp_arguments.h>
38+
39+ class " class_name " : public WsjcppJsonRpc20HandlerBase {
40+ public:
41+ " class_name "();
42+ virtual void handle(WsjcppJsonRpc20Request *pRequest) override;
43+ };
44+
45+ #endif // " ifndef_header
46+
47+
48+ var content_source
49+ concat content_source "
50+ #include \"" base_filename ".h\"
51+ #include <wsjcpp_jsonrpc20.h>
52+
53+ // ---------------------------------------------------------------------
54+ // " class_name "
55+
56+ " class_name "::" class_name "()
57+ : WsjcppJsonRpc20HandlerBase(\"" argument_processor_name "\", \"TODO description\") {
58+ TAG = \"" class_name "\";
59+ // setAccessUnauthorized(true);
60+ // setAccessUser(true);
61+ // setAccessTester(\"here example of command\");
62+ // setAccessAdmin();
63+ // void setActivatedFromVersion(\"v0.0.1"); // TODO authomatic set WSJCPP_APP_VERSION
64+ // void setDeprecatedFromVersion("");
65+
66+ // description of input params
67+ // requireStringParam(\"uuid\", "object uuid")
68+ // .addValidator(new WsjcppValidatorUUID());
69+ // optionalStringParam(\"name\", "Name of object")
70+ // .addValidator(new WsjcppValidatorStringLength(3,10));
71+
72+ // requireIntegerParam(\"cost\", "Name of object")
73+ // .addValidator(new WsjcppValidatorIntegerMinValue(3))
74+ // .addValidator(new WsjcppValidatorIntegerMaxValue(1000));
75+ // optionalIntegerParam(\"age\", "Name of object")
76+ // .addValidator(new WsjcppValidatorIntegerMinValue(0))
77+
78+ // requireBooleanParam(\"public\", "True if object is public");
79+ // optionalBooleanParam(\"activated\", "If object can handle");
80+ }
81+
82+ // ---------------------------------------------------------------------
83+
84+ void " class_name "::handle(WsjcppJsonRpc20Request *pRequest) {
85+ WsjcppLog::err(TAG, \"Not implemented\");
86+ // TODO
87+ pRequest->fail(WsjcppJsonRpc20Error(501, "NOT_IMPLEMENTED"));
88+ }
89+
90+ "
91+
92+ var file_source
93+ concat file_source "src/" filename_cpp
94+
95+ write_file filename_h content_header
96+ write_file filename_cpp content_source
97+
98+ log_info "
99+ ======
100+ Generated class:
101+ - " class_name "
102+ Generated files:
103+ - " filename_h "
104+ - " filename_cpp "
105+ ======
106+ "
107+
108+ cmakelists_txt_append_wsjcpp filename_h
109+ cmakelists_txt_append_wsjcpp filename_cpp
0 commit comments