Skip to content

Commit

Permalink
Parametric ware signature and documentation
Browse files Browse the repository at this point in the history
* added cmakelists parameter CONFIGURED_SIGNATURE
* added template variables in signature and documentation at configuration step
* changed tolerated characters for template case

(references OpenFLUID#1157)
  • Loading branch information
Arthoni committed Oct 27, 2023
1 parent 15c9a87 commit c22bf77
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 10 deletions.
2 changes: 1 addition & 1 deletion CMake.in.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ SET(OFBUILD_CUSTOM_CMAKE_VERSION "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.
SET(OPENFLUID_VERSION_MAJOR 2)
SET(OPENFLUID_VERSION_MINOR 2)
SET(OPENFLUID_VERSION_PATCH 0)
SET(OPENFLUID_VERSION_STATUS "alpha99") # example: SET(OPENFLUID_VERSION_STATUS "rc1")
SET(OPENFLUID_VERSION_STATUS "alpha100") # example: SET(OPENFLUID_VERSION_STATUS "rc1")

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

Expand Down
30 changes: 27 additions & 3 deletions cmake/OpenFLUIDHelpers.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,15 @@ FUNCTION(_OPENFLUID_WAREPLUGIN_BUILD)

# Run info2build if not already done
IF (NOT _FORCE_PARAMSUI)
SET(_SRC_PATH ${CMAKE_SOURCE_DIR})
IF (${_BUILDARGS_CONFIGURED_SIGNATURE})
SET(_META_PATH "${CMAKE_SOURCE_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
MESSAGE(STATUS "Signature configured")
CONFIGURE_FILE(${_META_PATH} "${CMAKE_BINARY_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
SET(_SRC_PATH ${CMAKE_BINARY_DIR})
ENDIF()
EXECUTE_PROCESS(COMMAND "${OpenFLUID_CMD_PROGRAM}" "info2build"
"--src-path=${CMAKE_SOURCE_DIR}" "--dest-path=${CMAKE_BINARY_DIR}"
"--src-path=${_SRC_PATH}" "--dest-path=${CMAKE_BINARY_DIR}"
RESULT_VARIABLE _WAREINFO_RESULT
OUTPUT_VARIABLE _WAREINFO_OUTPUT)
IF(_WAREINFO_RESULT AND NOT _WAREINFO_RESULT EQUAL 0)
Expand Down Expand Up @@ -398,8 +405,25 @@ FUNCTION(_OPENFLUID_WAREPLUGIN_BUILD)

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

SET(_SRC_PATH ${CMAKE_SOURCE_DIR})
IF (${_BUILDARGS_CONFIGURED_SIGNATURE})
SET(_META_PATH "${CMAKE_SOURCE_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
MESSAGE(STATUS "Signature configured")
CONFIGURE_FILE(${_META_PATH} "${CMAKE_BINARY_DIR}/@OPENFLUID_WARESDEV_WAREMETA_FILE@")
SET(_README_PATH "${CMAKE_SOURCE_DIR}/README") #TODO factorize list of doc sources
IF(EXISTS ${_README_PATH})
CONFIGURE_FILE(${_README_PATH} "${CMAKE_BINARY_DIR}/README")
ENDIF()
SET(_README_PATH "${CMAKE_SOURCE_DIR}/README.md")
IF(EXISTS ${_README_PATH})
CONFIGURE_FILE(${_README_PATH} "${CMAKE_BINARY_DIR}/README.md")
ENDIF()
FILE(COPY "${CMAKE_SOURCE_DIR}/doc" DESTINATION "${CMAKE_BINARY_DIR}")
SET(_SRC_PATH ${CMAKE_BINARY_DIR})
ENDIF()

ADD_CUSTOM_COMMAND(COMMAND "${OpenFLUID_CMD_PROGRAM}" "docalyze"
ARGS "--src-path=${CMAKE_SOURCE_DIR}" "--output-path=${CMAKE_BINARY_DIR}"
ARGS "--src-path=${_SRC_PATH}" "--output-path=${CMAKE_BINARY_DIR}"
DEPENDS ${_DOCFILES_DEPENDS}
OUTPUT "${CMAKE_BINARY_DIR}/${WARE_ID}.pdf")

Expand Down Expand Up @@ -519,7 +543,7 @@ ENDFUNCTION()
# WARES_PREFIX_INSTALL_PATH : forced prefix install path (overrides default install path, overriden by WARE_INSTALL_PATH)
FUNCTION(OPENFLUID_ADD_WAREPLUGIN)
SET(_ARGS_OPTIONS "")
SET(_ARGS_ONEVAL "INSTALL_PATH;TARGET;WITH_PARAMSUI;PARAMSUI_INSTALL_PATH;PARAMSUI_TARGET")
SET(_ARGS_ONEVAL "INSTALL_PATH;TARGET;CONFIGURED_SIGNATURE;WITH_PARAMSUI;PARAMSUI_INSTALL_PATH;PARAMSUI_TARGET")
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")
CMAKE_PARSE_ARGUMENTS(_BUILDARGS "${_ARGS_OPTIONS}" "${_ARGS_ONEVAL}" "${_ARGS_MULTIVAL}" ${ARGN})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ OPENFLUID_ADD_WAREPLUGIN(
%%#TARGET%%TARGET %%TARGET%%
# custom installation path, standard path is used if not provided
%%#INSTALLPATH%%INSTALL_PATH %%INSTALLPATH%%
# parametrized signature and/or documentation
#CONFIGURED_SIGNATURE ON


# enable build of parameterization UI (ON/OFF, OFF is default)
Expand Down
11 changes: 9 additions & 2 deletions src/openfluid/tools/IDHelpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,19 @@ bool isValidDatasetName(const std::string& Name)
// =====================================================================


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

return std::regex_match(ID,std::regex(WareIDRuleString));
if (Template)
{
return std::regex_match(ID,std::regex(WareIDRuleStringAndTpl));
}
else
{
return std::regex_match(ID,std::regex(WareIDRuleString));
}
}


Expand Down
3 changes: 2 additions & 1 deletion src/openfluid/tools/IDHelpers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ namespace openfluid { namespace tools {
constexpr auto DatasetNameRuleString("[A-Za-z0-9]+([A-Za-z0-9_\\.\\-]*)");

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

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

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


/**
Expand Down
2 changes: 1 addition & 1 deletion src/openfluid/ui/common/SignatureEditorWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -923,7 +923,7 @@ bool SignatureEditorWidget::isValidID() const
return true;
}

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


Expand Down
2 changes: 1 addition & 1 deletion src/openfluid/ui/waresdev/NewWareDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ QRegularExpression NewWareDialog::getWareIdRegExp(QString& Tooltip)

Tooltip = QObject::tr("Accepts only letters, digits, dashes ('-'), underscores ('_') and dots ('.').");
#if (QT_VERSION_MAJOR < 6)
return QRegExp(QString::fromStdString(openfluid::tools::WareIDRuleString));
return QRegExp(QString::fromStdString(openfluid::tools::WareIDRuleStringAndTpl));
#else
return QRegularExpression(QString::fromStdString(openfluid::tools::WareIDRuleString));
#endif
Expand Down
2 changes: 1 addition & 1 deletion src/openfluid/waresdev/WareSignatureSerializer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ SignatureType WareSignatureSerializer<SignatureType>::fromJSONBase(const openflu
SignatureType Sign;

Sign.ID = Json.value("id","");
if (!openfluid::tools::isValidWareID(Sign.ID))
if (!openfluid::tools::isValidWareID(Sign.ID, true))
{
throw openfluid::base::FrameworkException(OPENFLUID_CODE_LOCATION,"Missing or invalid ware ID");
}
Expand Down

0 comments on commit c22bf77

Please sign in to comment.