Skip to content

Commit 7ee8f01

Browse files
committed
Parametric ware signature and documentation
* added cmakelists parameter CONFIGURED_SIGNATURE * added template variables in signature and documentation at configuration step * changed tolerated characters for template case (references #1157)
1 parent 2d96ddb commit 7ee8f01

8 files changed

Lines changed: 44 additions & 10 deletions

File tree

CMake.in.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ SET(OFBUILD_CUSTOM_CMAKE_VERSION "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.
2323
SET(OPENFLUID_VERSION_MAJOR 2)
2424
SET(OPENFLUID_VERSION_MINOR 2)
2525
SET(OPENFLUID_VERSION_PATCH 0)
26-
SET(OPENFLUID_VERSION_STATUS "alpha99") # example: SET(OPENFLUID_VERSION_STATUS "rc1")
26+
SET(OPENFLUID_VERSION_STATUS "alpha100") # example: SET(OPENFLUID_VERSION_STATUS "rc1")
2727

2828
SET(OPENFLUID_VERSION_FULL "${OPENFLUID_VERSION_MAJOR}.${OPENFLUID_VERSION_MINOR}.${OPENFLUID_VERSION_PATCH}")
2929

cmake/OpenFLUIDHelpers.cmake.in

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,15 @@ FUNCTION(_OPENFLUID_WAREPLUGIN_BUILD)
176176

177177
# Run info2build if not already done
178178
IF (NOT _FORCE_PARAMSUI)
179+
SET(_SRC_PATH ${CMAKE_SOURCE_DIR})
180+
IF (${_BUILDARGS_CONFIGURED_SIGNATURE})
181+
SET(_META_PATH "${CMAKE_SOURCE_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
182+
MESSAGE(STATUS "Signature configured")
183+
CONFIGURE_FILE(${_META_PATH} "${CMAKE_BINARY_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
184+
SET(_SRC_PATH ${CMAKE_BINARY_DIR})
185+
ENDIF()
179186
EXECUTE_PROCESS(COMMAND "${OpenFLUID_CMD_PROGRAM}" "info2build"
180-
"--src-path=${CMAKE_SOURCE_DIR}" "--dest-path=${CMAKE_BINARY_DIR}"
187+
"--src-path=${_SRC_PATH}" "--dest-path=${CMAKE_BINARY_DIR}"
181188
RESULT_VARIABLE _WAREINFO_RESULT
182189
OUTPUT_VARIABLE _WAREINFO_OUTPUT)
183190
IF(_WAREINFO_RESULT AND NOT _WAREINFO_RESULT EQUAL 0)
@@ -398,8 +405,25 @@ FUNCTION(_OPENFLUID_WAREPLUGIN_BUILD)
398405

399406
FILE(GLOB_RECURSE _DOCFILES_DEPENDS "${CMAKE_SOURCE_DIR}/@OPENFLUID_WARESDEV_DOC_DIR@/*")
400407

408+
SET(_SRC_PATH ${CMAKE_SOURCE_DIR})
409+
IF (${_BUILDARGS_CONFIGURED_SIGNATURE})
410+
SET(_META_PATH "${CMAKE_SOURCE_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
411+
MESSAGE(STATUS "Signature configured")
412+
CONFIGURE_FILE(${_META_PATH} "${CMAKE_BINARY_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
413+
SET(_README_PATH "${CMAKE_SOURCE_DIR}/README") #TODO factorize list of doc sources
414+
IF(EXISTS ${_README_PATH})
415+
CONFIGURE_FILE(${_README_PATH} "${CMAKE_BINARY_DIR}/README")
416+
ENDIF()
417+
SET(_README_PATH "${CMAKE_SOURCE_DIR}/README.md")
418+
IF(EXISTS ${_README_PATH})
419+
CONFIGURE_FILE(${_README_PATH} "${CMAKE_BINARY_DIR}/README.md")
420+
ENDIF()
421+
FILE(COPY "${CMAKE_SOURCE_DIR}/doc" DESTINATION "${CMAKE_BINARY_DIR}")
422+
SET(_SRC_PATH ${CMAKE_BINARY_DIR})
423+
ENDIF()
424+
401425
ADD_CUSTOM_COMMAND(COMMAND "${OpenFLUID_CMD_PROGRAM}" "docalyze"
402-
ARGS "--src-path=${CMAKE_SOURCE_DIR}" "--output-path=${CMAKE_BINARY_DIR}"
426+
ARGS "--src-path=${_SRC_PATH}" "--output-path=${CMAKE_BINARY_DIR}"
403427
DEPENDS ${_DOCFILES_DEPENDS}
404428
OUTPUT "${CMAKE_BINARY_DIR}/${WARE_ID}.pdf")
405429

@@ -519,7 +543,7 @@ ENDFUNCTION()
519543
# WARES_PREFIX_INSTALL_PATH : forced prefix install path (overrides default install path, overriden by WARE_INSTALL_PATH)
520544
FUNCTION(OPENFLUID_ADD_WAREPLUGIN)
521545
SET(_ARGS_OPTIONS "")
522-
SET(_ARGS_ONEVAL "INSTALL_PATH;TARGET;WITH_PARAMSUI;PARAMSUI_INSTALL_PATH;PARAMSUI_TARGET")
546+
SET(_ARGS_ONEVAL "INSTALL_PATH;TARGET;CONFIGURED_SIGNATURE;WITH_PARAMSUI;PARAMSUI_INSTALL_PATH;PARAMSUI_TARGET")
523547
SET(_ARGS_MULTIVAL "CPP_FILES;FORTRAN_FILES;UI_FILES;RC_FILES;OPENFLUID_COMPONENTS;I18N_LANGS;PARAMSUI_CPP_FILES;PARAMSUI_UI_FILES;PARAMSUI_RC_FILES;PARAMSUI_I18N_LANGS;PARAMSUI_OPENFLUID_COMPONENTS")
524548
CMAKE_PARSE_ARGUMENTS(_BUILDARGS "${_ARGS_OPTIONS}" "${_ARGS_ONEVAL}" "${_ARGS_MULTIVAL}" ${ARGN})
525549

share/openfluid/waresdev/templates/common/skeleton/src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ OPENFLUID_ADD_WAREPLUGIN(
3737
%%#TARGET%%TARGET %%TARGET%%
3838
# custom installation path, standard path is used if not provided
3939
%%#INSTALLPATH%%INSTALL_PATH %%INSTALLPATH%%
40+
# parametrized signature and/or documentation
41+
#CONFIGURED_SIGNATURE ON
4042

4143

4244
# enable build of parameterization UI (ON/OFF, OFF is default)

src/openfluid/tools/IDHelpers.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,19 @@ bool isValidDatasetName(const std::string& Name)
8282
// =====================================================================
8383

8484

85-
bool isValidWareID(const openfluid::ware::WareID_t& ID)
85+
bool isValidWareID(const openfluid::ware::WareID_t& ID, bool Template)
8686
{
8787
// authorized chars: a to z, A to Z, 0 to 9, -, ., _
8888
// must start by an alphanumeric char
8989

90-
return std::regex_match(ID,std::regex(WareIDRuleString));
90+
if (Template)
91+
{
92+
return std::regex_match(ID,std::regex(WareIDRuleStringAndTpl));
93+
}
94+
else
95+
{
96+
return std::regex_match(ID,std::regex(WareIDRuleString));
97+
}
9198
}
9299

93100

src/openfluid/tools/IDHelpers.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ namespace openfluid { namespace tools {
6060
constexpr auto DatasetNameRuleString("[A-Za-z0-9]+([A-Za-z0-9_\\.\\-]*)");
6161

6262
constexpr auto WareIDRuleString("[A-Za-z0-9]+([A-Za-z0-9_\\.\\-]*)");
63+
constexpr auto WareIDRuleStringAndTpl("[A-Za-z0-9]+([A-Za-z0-9_@\\.\\-]*)");
6364

6465
constexpr auto FragmentNameRuleString("[A-Za-z]+([A-Za-z0-9_\\.\\-]*)");
6566

@@ -99,7 +100,7 @@ bool OPENFLUID_API isValidDatasetName(const std::string& Name);
99100
@param[in] ID the ware ID to check
100101
@return true if the ID is valid
101102
*/
102-
bool OPENFLUID_API isValidWareID(const openfluid::ware::WareID_t& ID);
103+
bool OPENFLUID_API isValidWareID(const openfluid::ware::WareID_t& ID, bool Template=false);
103104

104105

105106
/**

src/openfluid/ui/common/SignatureEditorWidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,7 @@ bool SignatureEditorWidget::isValidID() const
923923
return true;
924924
}
925925

926-
return openfluid::tools::isValidWareID(ui->IDEdit->text().toStdString());
926+
return openfluid::tools::isValidWareID(ui->IDEdit->text().toStdString(), true);
927927
}
928928

929929

src/openfluid/ui/waresdev/NewWareDialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ QRegularExpression NewWareDialog::getWareIdRegExp(QString& Tooltip)
199199

200200
Tooltip = QObject::tr("Accepts only letters, digits, dashes ('-'), underscores ('_') and dots ('.').");
201201
#if (QT_VERSION_MAJOR < 6)
202-
return QRegExp(QString::fromStdString(openfluid::tools::WareIDRuleString));
202+
return QRegExp(QString::fromStdString(openfluid::tools::WareIDRuleStringAndTpl));
203203
#else
204204
return QRegularExpression(QString::fromStdString(openfluid::tools::WareIDRuleString));
205205
#endif

src/openfluid/waresdev/WareSignatureSerializer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ SignatureType WareSignatureSerializer<SignatureType>::fromJSONBase(const openflu
288288
SignatureType Sign;
289289

290290
Sign.ID = Json.value("id","");
291-
if (!openfluid::tools::isValidWareID(Sign.ID))
291+
if (!openfluid::tools::isValidWareID(Sign.ID, true))
292292
{
293293
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,"Missing or invalid ware ID");
294294
}

0 commit comments

Comments
 (0)