Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ on:
- main
jobs:
ci:
runs-on: ubuntu-24.04
strategy:
matrix:
os: [ubuntu-24.04, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: halo-sigs/reusable-workflows/plugin-setup-env@v3
Expand Down
15 changes: 0 additions & 15 deletions src/template-config.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,4 @@
export const templateConfig = {
templateFiles: [
".gitignore.template",
"build.gradle.template",
"settings.gradle.template",
"README.md.template",
"src/main/resources/plugin.yaml.template",
"src/main/java/Plugin.java.template",
"src/test/java/PluginTest.java.template",

"ui/build.gradle.template",
"ui/package.json.template",
"ui/tsconfig.node.json.template",
"ui/env.d.ts.template",
],

conditionalFiles: {
vite: ["ui/vite.config.ts"],
rsbuild: ["ui/rsbuild.config.ts"],
Expand Down
31 changes: 15 additions & 16 deletions src/template-engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,18 @@ function getAllFiles(dir, basePath = "") {
return files;
}

/**
* Check if file is a template file
* @param {string} filePath - File path
* @param {string[]} templateFiles - Template files list
* @returns {boolean}
*/
function isTemplateFile(filePath, templateFiles) {
return templateFiles.includes(filePath);
}

/**
* Check if file is a conditional file
* @param {string} filePath - File path
* @param {string[]} conditionalFiles - Conditional files list
* @returns {boolean}
*/
function isConditionalFile(filePath, conditionalFiles) {
return conditionalFiles.includes(filePath);
const normalizedPath = filePath.replace(/\\/g, '/');
return conditionalFiles.some(conditional => {
const normalizedConditional = conditional.replace(/\\/g, '/');
return normalizedPath === normalizedConditional;
});
}

/**
Expand All @@ -85,15 +79,21 @@ function isConditionalFile(filePath, conditionalFiles) {
* @returns {boolean}
*/
function isExcludedConditionalFile(filePath, config) {
const normalizedPath = filePath.replace(/\\/g, '/');

// Get all conditional files (including selected and unselected)
const allConditionalFiles = Object.values(
templateConfig.conditionalFiles,
).flat();
).flat().map(file => file.replace(/\\/g, '/'));

const selectedConditionalFiles = config.conditionalFiles.map(file =>
file.replace(/\\/g, '/')
);

// If it's a conditional file but not in current selected conditional files list, it should be excluded
return (
allConditionalFiles.includes(filePath) &&
!config.conditionalFiles.includes(filePath)
allConditionalFiles.includes(normalizedPath) &&
!selectedConditionalFiles.includes(normalizedPath)
);
}

Expand Down Expand Up @@ -137,8 +137,7 @@ async function processFile(filePath, projectPath, variables, config) {
return;
}

// Determine file type and process accordingly
if (isTemplateFile(filePath, config.templateFiles)) {
if (filePath.endsWith('.template')) {
// Process template file
await processTemplateFile(filePath, srcPath, projectPath, variables);
} else if (isExcludedConditionalFile(filePath, config)) {
Expand Down
Loading