PhoenixGenerator  2.8.0
Set of tools to generate code
Loading...
Searching...
No Matches
simple_project_generator.h File Reference
Include dependency graph for simple_project_generator.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

bool isPhoenixDependency (const PString &packageName)
 Check if a package is a Phoenix dependency.
bool simple_project_generator (const PPath &descriptionFile, const PVecPath &vecClassConfigFile, const PString &projectType, const GeneratorMode &mode)
 Create a simple project from a configuration.

Function Documentation

◆ isPhoenixDependency()

bool isPhoenixDependency ( const PString & packageName)

Check if a package is a Phoenix dependency.

Parameters
packageName: name of the package
Returns
true if it's a Phoenix dependency, false otherwise

Definition at line 54 of file simple_project_generator.cpp.

54 {
55 return (packageName.isSameBegining("Phoenix") || packageName.isSameBegining("phoenix"));
56}

Referenced by generateCmakeFindBody(), generateMarkdownDepList(), generatePhoenixFindModule(), generatePhoenixGlobalDep(), generatePhoenixPullExtraModule(), and generateTargetLinkBody().

Here is the caller graph for this function:

◆ simple_project_generator()

bool simple_project_generator ( const PPath & descriptionFile,
const PVecPath & vecClassConfigFile,
const PString & projectType,
const GeneratorMode & mode )

Create a simple project from a configuration.

Parameters
descriptionFile: description of the full project
vecClassConfigFile: vector of class configuration files (.pdata files)
projectType: type of the project (SimpleCpp)
mode: all modes of the generator (data/check/type/config stream)
Returns
true on success, false otherwise

Definition at line 524 of file simple_project_generator.cpp.

526{
527 //First, let's read the toml config of the project
528 ProjectConfig projectConfig;
529 if(!project_generator_loadConfig(projectConfig, descriptionFile)){
530 std::cerr << "simple_project_generator : cannot parse project description file '"<<descriptionFile<<"'" << std::endl;
531 return false;
532 }
533 //Then look in the config files if the packages exists
534 if(!project_generator_loadPackageInfo(projectConfig)){
535 std::cerr << "simple_project_generator : cannot find package info of project '"<<projectConfig.name<<"'" << std::endl;
536 return false;
537 }
538 // Generate replacement data
539 PMapString mapReplace = generateAllReplacementData(projectConfig, mode, vecClassConfigFile);
540 PPath inputConfigPlaceholderDir = PPath::getProgramPrefix() / PPath("share") / PPath("PhoenixGenerator") / PPath("Projects") / PPath(projectType), outputPath("./");
541 if(!directory_replace_placeholder(outputPath, inputConfigPlaceholderDir, mapReplace)){
542 std::cerr << "simple_project_generator : cannot replace placeholder in project generation '"<<projectConfig.name<<"'" << std::endl;
543 return false;
544 }
545 PPath mainPath = PPath(".") / PPath(projectConfig.name);
546 PPath srcPath = mainPath / PPath("src"), pdataDir = mainPath / PPath("pdata");
547 if(!pdataDir.createDirectory()){
548 std::cerr << "simple_project_generator : cannot create pdata directory '"<<pdataDir<<"'" << std::endl;
549 return false;
550 }
551 ProjectParam param;
552 param.mode = mode;
553 param.name = projectConfig.name;
554 param.version = projectConfig.version;
555 param.outputProjectDir = mainPath;
556 param.outputSourceDir = srcPath;
558 param.outputTestDir = mainPath / PPath("TESTS");
559 }else if(param.mode.type == ProjectType::WRAPPER){
560 param.outputTestDir = mainPath / PPath("tests");
561 }
562
563 if(!simple_project_load_config(param, pdataDir, vecClassConfigFile)){
564 std::cerr << "simple_project_generator : cannot load config to generate project in '"<<srcPath<<"'" << std::endl;
565 return false;
566 }
568 std::cerr << "simple_project_generator : cannot generate sources in '"<<srcPath<<"'" << std::endl;
569 return false;
570 }
571 // Generate class generator script
572 if(!generateClassGeneratorScript(vecClassConfigFile, pdataDir, param.mode)){
573 std::cerr << "simple_project_generator : cannot generate class generator script in pdata directory '"<<pdataDir<<"'" << std::endl;
574 return false;
575 }
576 return true;
577}
bool project_generator_loadPackageInfo(ProjectConfig &config)
This function should load the package info file from share/PhoenixGenerator/Packages and retrieve the...
bool project_generator_loadConfig(ProjectConfig &config, const PPath &descriptionFile)
Load the project configuration.
bool generateClassGeneratorScript(const PVecPath &vecClassConfigFile, const PPath &scriptDir, const GeneratorMode &mode)
Generate a bash script to re generate all the classes from their pdata configuration files.
PMapString generateAllReplacementData(const ProjectConfig &projectConfig, const GeneratorMode &mode, const PVecPath &vecClassConfigFile)
Generate all replacement data for project generation.
bool simple_project_load_config(ProjectParam &param, const PPath &pdataDir, const PVecPath &vecClassConfigFile)
Load configuration pdata of generated sources.
bool simple_project_generate_source(const ProjectParam &projectParam)
Save generated sources of project.
ProjectType::ProjectType type
Type of the project to be generated.
Configuration of the project.
PString name
Name of the project.
PString version
Project version.
Set of parameters to generate a project.
PPath outputProjectDir
Output path of the full project.
GeneratorMode mode
Mode to be used to generate the project.
PString version
Version of the project.
PPath outputTestDir
Output path of the unit tests.
PString name
Name of the project.
PPath outputSourceDir
Output path of the sources.

References ProjectType::CPP, generateAllReplacementData(), generateClassGeneratorScript(), ProjectParam::mode, ProjectConfig::name, ProjectParam::name, ProjectType::NANOBIND_WRAPPER, ProjectParam::outputProjectDir, ProjectParam::outputSourceDir, ProjectParam::outputTestDir, project_generator_loadConfig(), project_generator_loadPackageInfo(), simple_project_generate_source(), simple_project_load_config(), GeneratorMode::type, ProjectConfig::version, ProjectParam::version, and ProjectType::WRAPPER.

Here is the call graph for this function: