@dxworks/depinder 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const extractFrameworkVersionsCommand: Command;
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractFrameworkVersionsCommand = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const xml2js_1 = require("xml2js");
10
+ const commander_1 = require("commander");
11
+ async function extractFrameworkVersions(rootPath, outputPath) {
12
+ const projectVersions = await extract(rootPath);
13
+ projectVersions.sort((a, b) => a.projectFile.localeCompare(b.projectFile));
14
+ const csvContent = convertToCSV(projectVersions);
15
+ await promises_1.default.writeFile(outputPath, csvContent, 'utf-8');
16
+ }
17
+ function convertToCSV(data) {
18
+ const headers = ['programmingLanguage', 'frameworkVersion', 'projectFile', 'component', 'group', 'notes'];
19
+ const csvRows = data.map(item => [
20
+ item.programmingLanguage,
21
+ item.frameworkVersion,
22
+ item.projectFile,
23
+ item.component,
24
+ item.group,
25
+ item.notes || ''
26
+ ].map(value => `${value}`).join(','));
27
+ return [headers.join(','), ...csvRows].join('\n');
28
+ }
29
+ async function extract(rootPath) {
30
+ const results = [];
31
+ const dotNetProjectFiles = await findFiles(rootPath, /.*\.(csproj|vbproj|fsproj)$/);
32
+ for (const projectFile of dotNetProjectFiles) {
33
+ let notes = '';
34
+ let targetFramework = await extractTargetFramework(projectFile);
35
+ const relativePath = path_1.default.relative(rootPath, projectFile);
36
+ const component = getComponent(relativePath);
37
+ if (targetFramework.startsWith('$')) {
38
+ const { parameterValue, propsFilePath } = await getParameterFromProps(rootPath, projectFile, targetFramework);
39
+ targetFramework = parameterValue;
40
+ notes = propsFilePath;
41
+ }
42
+ results.push({
43
+ programmingLanguage: '.NET',
44
+ projectFile: relativePath,
45
+ frameworkVersion: targetFramework,
46
+ component,
47
+ group: component,
48
+ notes,
49
+ });
50
+ }
51
+ const mavenFiles = await findFiles(rootPath, /pom\.xml$/);
52
+ for (const mavenFile of mavenFiles) {
53
+ const javaVersion = await extractJavaVersionFromMaven(mavenFile);
54
+ const relativePath = path_1.default.relative(rootPath, mavenFile);
55
+ const component = getComponent(relativePath);
56
+ results.push({
57
+ programmingLanguage: 'JAVA',
58
+ projectFile: relativePath,
59
+ frameworkVersion: javaVersion,
60
+ component,
61
+ group: component,
62
+ notes: 'Extracted from pom.xml',
63
+ });
64
+ }
65
+ const gradleFiles = await findFiles(rootPath, /build\.gradle$/);
66
+ for (const gradleFile of gradleFiles) {
67
+ const javaVersion = await extractJavaVersionFromGradle(gradleFile);
68
+ const relativePath = path_1.default.relative(rootPath, gradleFile);
69
+ const component = getComponent(relativePath);
70
+ results.push({
71
+ programmingLanguage: 'JAVA',
72
+ projectFile: relativePath,
73
+ frameworkVersion: javaVersion,
74
+ component,
75
+ group: component,
76
+ notes: 'Extracted from build.gradle',
77
+ });
78
+ }
79
+ const pipfiles = await findFiles(rootPath, /^Pipfile$/);
80
+ for (const pipfile of pipfiles) {
81
+ const pythonVersion = await extractPythonVersionFromPipfile(pipfile);
82
+ const relativePath = path_1.default.relative(rootPath, pipfile);
83
+ const component = getComponent(relativePath);
84
+ results.push({
85
+ programmingLanguage: 'PYTHON',
86
+ projectFile: relativePath,
87
+ frameworkVersion: pythonVersion,
88
+ component,
89
+ group: component,
90
+ notes: 'Extracted from Pipfile',
91
+ });
92
+ }
93
+ return results;
94
+ }
95
+ async function extractPythonVersionFromPipfile(pipfilePath) {
96
+ try {
97
+ const content = await promises_1.default.readFile(pipfilePath, 'utf-8');
98
+ // Look for a line like: python_version = "3.11"
99
+ const match = content.match(/python_version\s*=\s*["']([\d.]+)["']/);
100
+ if (match) {
101
+ return match[1];
102
+ }
103
+ return '';
104
+ }
105
+ catch (_a) {
106
+ return '';
107
+ }
108
+ }
109
+ async function extractJavaVersionFromGradle(gradleFilePath) {
110
+ const gradleContent = await promises_1.default.readFile(gradleFilePath, 'utf-8');
111
+ const matchToolchain = gradleContent.match(/java\s*\{[^}]*?languageVersion\.set\(JavaLanguageVersion\.of\((\d+(?:\.\d+)?)\)\)/s);
112
+ if (matchToolchain)
113
+ return matchToolchain[1];
114
+ const matchSourceCompatibility = gradleContent.match(/sourceCompatibility\s*[=:]\s*['"]?(\d+(?:\.\d+)?)['"]?/);
115
+ if (matchSourceCompatibility)
116
+ return matchSourceCompatibility[1];
117
+ const matchTargetCompatibility = gradleContent.match(/targetCompatibility\s*[=:]\s*['"]?(\d+(?:\.\d+)?)['"]?/);
118
+ if (matchTargetCompatibility)
119
+ return matchTargetCompatibility[1];
120
+ return '';
121
+ }
122
+ async function extractJavaVersionFromMaven(pomFilePath) {
123
+ var _a, _b, _c, _d;
124
+ try {
125
+ const xmlData = await promises_1.default.readFile(pomFilePath, 'utf-8');
126
+ const result = await parseXml(xmlData);
127
+ if (!result || !result.project) {
128
+ console.error('Invalid POM structure');
129
+ return "";
130
+ }
131
+ // Extract properties if they exist
132
+ const properties = (_a = result.project.properties) === null || _a === void 0 ? void 0 : _a[0];
133
+ if (properties) {
134
+ if (properties['java.version']) {
135
+ return properties['java.version'][0];
136
+ }
137
+ if (properties['maven.compiler.source']) {
138
+ return properties['maven.compiler.source'][0];
139
+ }
140
+ }
141
+ // Check maven-compiler-plugin configuration
142
+ const build = (_b = result.project.build) === null || _b === void 0 ? void 0 : _b[0];
143
+ if (build && build.plugins) {
144
+ for (const plugin of build.plugins) {
145
+ if (((_c = plugin.artifactId) === null || _c === void 0 ? void 0 : _c[0]) === 'maven-compiler-plugin' && ((_d = plugin.configuration) === null || _d === void 0 ? void 0 : _d[0])) {
146
+ const config = plugin.configuration[0];
147
+ if (config['source']) {
148
+ return config['source'][0];
149
+ }
150
+ }
151
+ }
152
+ }
153
+ return ""; // Return empty string if Java version not found
154
+ }
155
+ catch (error) {
156
+ console.error('Error reading or parsing POM file:', error);
157
+ return "";
158
+ }
159
+ }
160
+ async function parseXml(xmlData) {
161
+ // Remove multi-line comments from the entire file
162
+ const withoutComments = xmlData.replace(/\/\*[\s\S]*?\*\//g, '');
163
+ // Remove empty lines and whitespace from the beginning of the file only
164
+ const trimmedXml = withoutComments.replace(/^\s*[\r\n]+/, '');
165
+ return await (0, xml2js_1.parseStringPromise)(trimmedXml);
166
+ }
167
+ async function extractTargetFramework(projectFile) {
168
+ var _a;
169
+ try {
170
+ const content = await promises_1.default.readFile(projectFile, 'utf-8');
171
+ const xml = await parseXml(content);
172
+ const frameworkTags = ['TargetFramework', 'TargetFrameworks', 'TargetFrameworkVersion'];
173
+ const propertyGroups = ((_a = xml === null || xml === void 0 ? void 0 : xml.Project) === null || _a === void 0 ? void 0 : _a.PropertyGroup) || [];
174
+ for (const group of propertyGroups) {
175
+ for (const tag of frameworkTags) {
176
+ if (group[tag]) {
177
+ return group[tag][0];
178
+ }
179
+ }
180
+ }
181
+ return '';
182
+ }
183
+ catch (error) {
184
+ console.error(`Error extracting target framework from ${projectFile}:`, error);
185
+ return '';
186
+ }
187
+ }
188
+ async function getParameterFromProps(rootPath, filePath, parameterName) {
189
+ let currentDirectory = path_1.default.dirname(filePath);
190
+ while (currentDirectory && currentDirectory !== rootPath) {
191
+ const propsFiles = await findFiles(currentDirectory, /\.props$/);
192
+ if (propsFiles.length > 0) {
193
+ const propsFilePath = propsFiles[0];
194
+ const parameterValue = await extractParameterValueFromProps(propsFilePath, parameterName);
195
+ if (parameterValue) {
196
+ return { parameterValue, propsFilePath };
197
+ }
198
+ }
199
+ currentDirectory = path_1.default.dirname(currentDirectory);
200
+ }
201
+ throw new Error(`No .props file found from '${filePath}' up to '${rootPath}'.`);
202
+ }
203
+ async function extractParameterValueFromProps(propsFilePath, parameterName) {
204
+ var _a, _b, _c, _d;
205
+ try {
206
+ const content = await promises_1.default.readFile(propsFilePath, 'utf-8');
207
+ const xml = await parseXml(content);
208
+ const cleanParameterName = parameterName.replace(/[\$()]/g, '');
209
+ return ((_d = (_c = (_b = (_a = xml === null || xml === void 0 ? void 0 : xml.Project) === null || _a === void 0 ? void 0 : _a.PropertyGroup) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[cleanParameterName]) === null || _d === void 0 ? void 0 : _d[0]) || '';
210
+ }
211
+ catch (_e) {
212
+ return '';
213
+ }
214
+ }
215
+ async function findFiles(directory, pattern) {
216
+ const entries = await promises_1.default.readdir(directory, { withFileTypes: true });
217
+ let files = [];
218
+ for (const entry of entries) {
219
+ const fullPath = path_1.default.join(directory, entry.name);
220
+ if (entry.isDirectory()) {
221
+ files = files.concat(await findFiles(fullPath, pattern));
222
+ }
223
+ else if (pattern.test(entry.name)) {
224
+ files.push(fullPath);
225
+ }
226
+ }
227
+ return files;
228
+ }
229
+ function getComponent(relativePath) {
230
+ return relativePath.split(path_1.default.sep)[0];
231
+ }
232
+ exports.extractFrameworkVersionsCommand = new commander_1.Command()
233
+ .command('extractFrameworkVersion')
234
+ .description('Extracts .NET framework and Java language versions from a *proj files, Maven and Gradle files')
235
+ .argument('<projectPath>', 'Path to the root directory')
236
+ .argument('<outputPath>', 'Path to save the extracted versions in CSV format')
237
+ .action(extractFrameworkVersions);
238
+ //# sourceMappingURL=extractFrameworkVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractFrameworkVersion.js","sourceRoot":"","sources":["../../src/commands/extractFrameworkVersion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Transforms raw Black Duck CSV exports into four cleaned and shareable CSV reports
4
+ * @param reportDir Directory containing Black Duck report files
5
+ * @param options Command options including optional basePath and pathMappings
6
+ */
7
+ export declare function transformBlackDuckReports(reportDir: string, options?: {
8
+ basePath?: string;
9
+ pathMappings?: string;
10
+ }): Promise<void>;
11
+ export declare const transformBlackDuckReportsCommand: Command;