Skip to content

Commit 2039340

Browse files
authored
Merge pull request #155 from ducflair/dev
Dev
2 parents 9ae3229 + 0328f7f commit 2039340

10 files changed

Lines changed: 69 additions & 21 deletions

File tree

packages/ducdxf/release.config.cjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
module.exports = {
22
branches: ["main", { name: "next", prerelease: true }, { name: "dev", prerelease: true }],
33
plugins: [
4+
[
5+
require.resolve("../../scripts/semrel-path-filter.cjs"),
6+
{
7+
paths: [
8+
"packages/ducdxf",
9+
"packages/ducpy"
10+
],
11+
analyzer: { preset: "conventionalcommits" },
12+
notes: { preset: "conventionalcommits" },
13+
},
14+
],
415
"@semantic-release/commit-analyzer",
516
"@semantic-release/release-notes-generator",
617
[

packages/ducjs/release.config.cjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ module.exports = {
44
[
55
require.resolve("../../scripts/semrel-path-filter.cjs"),
66
{
7-
path: "packages/ducjs",
7+
paths: [
8+
"packages/ducjs"
9+
],
810
analyzer: { preset: "conventionalcommits" },
911
notes: { preset: "conventionalcommits" },
1012
},

packages/ducpdf/release.config.cjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@ module.exports = {
44
[
55
require.resolve("../../scripts/semrel-path-filter.cjs"),
66
{
7-
path: "packages/ducpdf",
7+
paths: [
8+
"packages/ducpdf",
9+
"packages/ducjs",
10+
"packages/ducrs"
11+
],
812
analyzer: { preset: "conventionalcommits" },
913
notes: { preset: "conventionalcommits" },
1014
},
1115
],
1216
[
1317
"@semantic-release/exec",
1418
{
15-
prepareCmd: "node ../../scripts/semrel-set-version.js packages/ducsvg ${nextRelease.version}",
19+
prepareCmd: "node ../../scripts/semrel-set-version.js packages/ducpdf ${nextRelease.version}",
1620
publishCmd: "bun publish"
1721
}
1822
],

packages/ducpdf/src/duc2pdf/release.config.cjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ module.exports = {
44
[
55
require.resolve("../../../../scripts/semrel-path-filter.cjs"),
66
{
7-
path: "packages/ducpdf/src/duc2pdf",
7+
paths: [
8+
"packages/ducpdf/src/duc2pdf",
9+
"packages/ducrs",
10+
],
811
analyzer: { preset: "conventionalcommits" },
912
notes: { preset: "conventionalcommits" },
1013
},

packages/ducpy/release.config.cjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ module.exports = {
44
[
55
require.resolve("../../scripts/semrel-path-filter.cjs"),
66
{
7-
path: "packages/ducpy",
7+
paths: [
8+
"packages/ducpy"
9+
],
810
analyzer: { preset: "conventionalcommits" },
911
notes: { preset: "conventionalcommits" },
1012
},

packages/ducpy/src/ducpy/builders/element_builders.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ def _create_element_wrapper(element_class, base_params, element_params, explicit
8888
# Set required list fields with defaults
8989
base_params.setdefault('group_ids', [])
9090
base_params.setdefault('block_ids', [])
91-
base_params.setdefault('block_ids', [])
9291
base_params.setdefault('region_ids', [])
9392
base_params.setdefault('instance_id', None)
9493

packages/ducrs/release.config.cjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ module.exports = {
44
[
55
require.resolve("../../scripts/semrel-path-filter.cjs"),
66
{
7-
path: "packages/ducrs",
7+
paths: [
8+
"packages/ducrs"
9+
],
810
analyzer: { preset: "conventionalcommits" },
911
notes: { preset: "conventionalcommits" },
1012
},

packages/ducsvg/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
> This library leverages the stable renderer from `ducpdf`, first converting the `duc` document to PDF format before transforming it into SVG using `pdf-into-svg`. This approach ensures high fidelity in the SVG output by utilizing the robust rendering capabilities of the PDF format.
1717
18+
> 💡 Maybe in the future we could refactor `ducpdf` to leverage the growing library [`hayro_svg`](https://docs.rs/hayro-svg/latest/hayro_svg/) to convert PDF to SVG more seamlessly instead of using `pdf-into-svg` (C# library). Reference: [hayro project](https://github.com/LaurenzV/hayro?tab=readme-ov-file)
19+
1820
## Documentation
1921

2022
For detailed documentation, including all available types and utility functions, visit our [Documentation](https://duc.ducflair.com).

packages/ducsvg/release.config.cjs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ module.exports = {
44
[
55
require.resolve('../../scripts/semrel-path-filter.cjs'),
66
{
7-
// relative to repo root
8-
path: 'packages/ducsvg',
9-
// pass through any analyzer/notes options you like
10-
analyzer: { preset: 'conventionalcommits' },
11-
notes: { preset: 'conventionalcommits' },
7+
paths: [
8+
"packages/ducsvg",
9+
"packages/ducpdf",
10+
"packages/ducjs",
11+
"packages/ducrs",
12+
],
13+
analyzer: { preset: "conventionalcommits" },
14+
notes: { preset: "conventionalcommits" },
1215
},
1316
],
1417
[

scripts/semrel-path-filter.cjs

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,31 @@ function normalizePrefix(p) {
1212
return p.replace(/\\/g, '/').replace(/\/+$/, '') + '/';
1313
}
1414

15-
async function filterCommitsByPath(commits, pkgPath) {
16-
if (!pkgPath) return commits;
17-
const prefix = normalizePrefix(pkgPath);
15+
/**
16+
* Normalize paths config to an array of prefixes
17+
* Supports `paths` (array) option
18+
*/
19+
function normalizePaths(pluginConfig) {
20+
const { paths } = pluginConfig;
21+
22+
// Ensure paths is an array
23+
const allPaths = Array.isArray(paths) ? paths : [];
24+
25+
// Remove duplicates and normalize
26+
return [...new Set(allPaths)].map(normalizePrefix);
27+
}
28+
29+
async function filterCommitsByPaths(commits, prefixes) {
30+
if (!prefixes || prefixes.length === 0) return commits;
1831
const filtered = [];
1932

2033
for (const c of commits) {
2134
const files = gitChangedFiles(c.hash);
22-
if (files.some(f => f.replace(/\\/g, '/').startsWith(prefix))) {
35+
// Check if any file matches any of the prefixes
36+
if (files.some(f => {
37+
const normalizedFile = f.replace(/\\/g, '/');
38+
return prefixes.some(prefix => normalizedFile.startsWith(prefix));
39+
})) {
2340
filtered.push(c);
2441
}
2542
}
@@ -28,19 +45,22 @@ async function filterCommitsByPath(commits, pkgPath) {
2845

2946
module.exports = {
3047
analyzeCommits: async (pluginConfig = {}, context) => {
31-
const { path: pkgPath, analyzer = {} } = pluginConfig;
32-
const filtered = await filterCommitsByPath(context.commits, pkgPath);
48+
const { analyzer = {} } = pluginConfig;
49+
const prefixes = normalizePaths(pluginConfig);
50+
const filtered = await filterCommitsByPaths(context.commits, prefixes);
3351

34-
context.logger.log(`[path-filter] ${filtered.length}/${context.commits.length} commits affect "${pkgPath}"`);
52+
const pathsDisplay = prefixes.map(p => p.slice(0, -1)).join(', ');
53+
context.logger.log(`[path-filter] ${filtered.length}/${context.commits.length} commits affect "${pathsDisplay}"`);
3554
if (filtered.length === 0) return null;
3655

3756
const { analyzeCommits: analyze } = await import('@semantic-release/commit-analyzer');
3857
return analyze(analyzer, { ...context, commits: filtered });
3958
},
4059

4160
generateNotes: async (pluginConfig = {}, context) => {
42-
const { path: pkgPath, notes = {} } = pluginConfig;
43-
const filtered = await filterCommitsByPath(context.commits, pkgPath);
61+
const { notes = {} } = pluginConfig;
62+
const prefixes = normalizePaths(pluginConfig);
63+
const filtered = await filterCommitsByPaths(context.commits, prefixes);
4464

4565
const { generateNotes: genNotes } = await import('@semantic-release/release-notes-generator');
4666
return genNotes(notes, { ...context, commits: filtered });

0 commit comments

Comments
 (0)