1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#ifndef PROJECTGENERATE_H
6#define PROJECTGENERATE_H
7
8#include "templateparser.h"
9
10#include <QObject>
11#include <QVector>
12#include <QMap>
13
14namespace templateMgr {
15
16using SettingParamMap = QMap<QString, QString>;
17
18enum GenType {
19 Unknown = 0,
20 Project,
21 File
22};
23
24struct PojectGenParam {
25 GenType type = Unknown;
26 QString kit;
27 QString language;
28 QString templatePath;
29 SettingParamMap settingParamMap;
30 FileGenerator generator;
31};
32
33struct PojectGenResult {
34 QString message;
35 QString kit;
36 QString language;
37 QString projectPath;
38 QString filePath;
39};
40
41class ProjectGeneratePrivate;
42class ProjectGenerate : public QObject
43{
44 Q_OBJECT
45public:
46 explicit ProjectGenerate(QObject *parent = nullptr);
47 ~ProjectGenerate();
48
49 bool create(PojectGenResult &retResult, const PojectGenParam &genParam);
50signals:
51
52private slots:
53
54private:
55 bool genProject(PojectGenResult &retResult, const PojectGenParam &genParam);
56 bool copyDir(QString &retMsg, const QString &srcPath, const QString &dstPath, bool cover);
57 bool transform(QString &retMsg, const PojectGenParam &genParam, const QString &projectPath);
58
59 bool genFile(PojectGenResult &retResult, const PojectGenParam &genParam);
60 bool copyFile(QString &retMsg, const QString &srcPath, const QString &dstPath, bool cover);
61
62 ProjectGeneratePrivate *const d;
63};
64
65} //namespace templateMgr
66
67#endif // PROJECTGENERATE_H
68