@gregoriusrippenstein/node-red-contrib-nodedev 0.3.6 → 0.3.8
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.
package/nodes/20-pkg-file.html
CHANGED
package/nodes/lib/tarhelpers.js
CHANGED
|
@@ -3,13 +3,14 @@ module.exports = (function () {
|
|
|
3
3
|
var tarStream = require('tar-stream');
|
|
4
4
|
var streamx = require('streamx');
|
|
5
5
|
var pakoGzip = require('pako');
|
|
6
|
+
let pathUtil = require('path')
|
|
6
7
|
|
|
7
8
|
/*
|
|
8
9
|
* there is no indication in a tar file of whether a file is binary or textual.
|
|
9
10
|
* we can only make a guess by the extension of the filename.
|
|
10
11
|
***/
|
|
11
12
|
var computeFormat = (filename) => {
|
|
12
|
-
|
|
13
|
+
let ext = pathUtil.extname(filename).substr(1).toLowerCase()
|
|
13
14
|
|
|
14
15
|
return {
|
|
15
16
|
"html": "html",
|
|
@@ -39,7 +40,7 @@ module.exports = (function () {
|
|
|
39
40
|
"mov": "base64",
|
|
40
41
|
"ico": "base64",
|
|
41
42
|
"eot": "base64",
|
|
42
|
-
}[ext
|
|
43
|
+
}[ext] || "text";
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
var convertTarFile = (RED, tgzData, onFinish, onError) => {
|
|
@@ -59,22 +60,23 @@ module.exports = (function () {
|
|
|
59
60
|
});
|
|
60
61
|
|
|
61
62
|
stream.on('end', function () {
|
|
62
|
-
|
|
63
|
+
let filenameWithPath = header.name.replace(/^package\//, '')
|
|
64
|
+
let filename = pathUtil.basename(filenameWithPath)
|
|
65
|
+
let frmt = computeFormat(filename);
|
|
63
66
|
|
|
64
67
|
allFiles.push({
|
|
65
68
|
id: RED.util.generateId(),
|
|
66
69
|
type: "PkgFile",
|
|
67
|
-
name:
|
|
68
|
-
filename:
|
|
70
|
+
name: filename,
|
|
71
|
+
filename: filenameWithPath,
|
|
72
|
+
dirname: pathUtil.dirname(filenameWithPath),
|
|
69
73
|
template: Buffer.concat(buffer).toString(frmt == "base64" ? 'base64' : 'utf8'),
|
|
70
|
-
syntax:
|
|
74
|
+
syntax: filename == "package.json" ? "mustache" : "plain",
|
|
71
75
|
format: frmt,
|
|
72
76
|
output: "str",
|
|
73
|
-
x:
|
|
74
|
-
y:
|
|
75
|
-
wires: [
|
|
76
|
-
[]
|
|
77
|
-
]
|
|
77
|
+
x: 0,
|
|
78
|
+
y: 0,
|
|
79
|
+
wires: [[]]
|
|
78
80
|
})
|
|
79
81
|
|
|
80
82
|
next() // ready for next entry
|
|
@@ -84,9 +86,12 @@ module.exports = (function () {
|
|
|
84
86
|
})
|
|
85
87
|
|
|
86
88
|
extract.on('finish', function () {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
allFiles = allFiles.sort((a, b) => { return a.dirname < b.dirname ? -1 : (a.dirname > b.dirname ? 1 : 0) } )
|
|
90
|
+
|
|
91
|
+
for (var idx = 0; idx < allFiles.length; idx++) {
|
|
92
|
+
allFiles[idx].x = 250 * Math.floor(idx / 40)
|
|
93
|
+
allFiles[idx].y = 50 * (idx % 40)
|
|
94
|
+
allFiles[idx].wires = allFiles[idx + 1] ? [[allFiles[idx + 1].id]] : [[]]
|
|
90
95
|
}
|
|
91
96
|
|
|
92
97
|
onFinish(allFiles)
|
|
@@ -66,6 +66,20 @@ module.exports = function (RED) {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
function createGroupForDirectory(dirname, allIds) {
|
|
70
|
+
return {
|
|
71
|
+
"id": RED.util.generateId(),
|
|
72
|
+
"type": "group",
|
|
73
|
+
"name": `Dir: ${dirname}`,
|
|
74
|
+
"style": {
|
|
75
|
+
"label": true,
|
|
76
|
+
"label-position": "ne",
|
|
77
|
+
"color": "#001f60"
|
|
78
|
+
},
|
|
79
|
+
"nodes": allIds
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
69
83
|
function createGroup(pkgname, pversion, allFiles) {
|
|
70
84
|
return {
|
|
71
85
|
"id": RED.util.generateId(),
|
|
@@ -136,19 +150,14 @@ module.exports = function (RED) {
|
|
|
136
150
|
if ( msg.pkgname && msg.pkgversion ) {
|
|
137
151
|
const onFinish = (allFiles) => {
|
|
138
152
|
|
|
139
|
-
|
|
140
|
-
allFiles.forEach(function(element) {
|
|
141
|
-
element.syntax = "plain"
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
var lastNode = allFiles[allFiles.length - 1];
|
|
153
|
+
var lastNode = allFiles.at(-1);
|
|
145
154
|
|
|
146
155
|
var nodeDevOp = createDevOpsNode(msg.pkgname, msg.pkgversion, allFiles[0].x, allFiles[0].y, allFiles[0].id)
|
|
147
156
|
var nrInstallNode = createNodeRedInstallNode(lastNode.x, lastNode.y)
|
|
148
157
|
var tarballNode = createTarballNode(lastNode.x, lastNode.y, nrInstallNode.id)
|
|
149
158
|
|
|
150
159
|
let pkgjson = allFiles.filter( a => {
|
|
151
|
-
return a.filename == "package.json"
|
|
160
|
+
return a.filename == "package.json" && a.dirname == "."
|
|
152
161
|
})[0];
|
|
153
162
|
|
|
154
163
|
if ( pkgjson) {
|
|
@@ -161,13 +170,29 @@ module.exports = function (RED) {
|
|
|
161
170
|
|
|
162
171
|
lastNode.wires[0].push(tarballNode.id)
|
|
163
172
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
173
|
+
|
|
174
|
+
/* group by dirname */
|
|
175
|
+
let groupByDirectory = {}
|
|
176
|
+
let dirGroups = []
|
|
177
|
+
allFiles.forEach(a => {
|
|
178
|
+
(groupByDirectory[a.dirname] ||= []).push(a.id)
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
Object.keys(groupByDirectory).forEach(d => {
|
|
182
|
+
dirGroups.push(createGroupForDirectory(d, groupByDirectory[d]))
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
let nodeDevNodes = [
|
|
186
|
+
nodeDevOp,
|
|
187
|
+
tarballNode,
|
|
188
|
+
nrInstallNode
|
|
189
|
+
]
|
|
167
190
|
|
|
168
191
|
allFiles = [
|
|
169
|
-
createGroup(msg.pkgname, nodeDevOp.pversion || msg.pkgversion,
|
|
170
|
-
|
|
192
|
+
createGroup(msg.pkgname, nodeDevOp.pversion || msg.pkgversion, dirGroups.concat(nodeDevNodes))
|
|
193
|
+
// @ts-ignore
|
|
194
|
+
].concat(dirGroups).concat(nodeDevNodes).concat(allFiles);
|
|
195
|
+
|
|
171
196
|
|
|
172
197
|
RED.comms.publish(
|
|
173
198
|
"nodedev:perform-autoimport-nodes",
|
|
@@ -190,7 +215,8 @@ module.exports = function (RED) {
|
|
|
190
215
|
}
|
|
191
216
|
|
|
192
217
|
pacote.manifest(
|
|
193
|
-
msg.pkgname + "@" + msg.pkgversion
|
|
218
|
+
msg.pkgname + "@" + msg.pkgversion,
|
|
219
|
+
{ registry: msg.pkgregistry || 'https://registry.npmjs.org' }
|
|
194
220
|
).then(manifest => {
|
|
195
221
|
RED.comms.publish(
|
|
196
222
|
"nodedev:perform-autoimport-nodes",
|
package/package.json
CHANGED
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
|
|
42
42
|
data: JSON.stringify({
|
|
43
43
|
pkgname: $("#node-input-nodefactorysidebar-package-name").val().trim(),
|
|
44
|
-
pkgversion: $("#node-input-nodefactorysidebar-package-version").val().trim()
|
|
44
|
+
pkgversion: $("#node-input-nodefactorysidebar-package-version").val().trim(),
|
|
45
|
+
pkgregistry: $("#node-input-nodefactorysidebar-package-registry").val().trim()
|
|
45
46
|
}),
|
|
46
47
|
|
|
47
48
|
success: function (resp) {
|
|
@@ -210,6 +211,18 @@
|
|
|
210
211
|
})
|
|
211
212
|
$("#node-input-nodefactorysidebar-package-name").val(globalYourConfigNode.pkgname);
|
|
212
213
|
|
|
214
|
+
$("#node-input-nodefactorysidebar-package-registry").on("change", function() {
|
|
215
|
+
ensureYourConfigNodeExists();
|
|
216
|
+
|
|
217
|
+
let data = $(this).val();
|
|
218
|
+
|
|
219
|
+
if (globalYourConfigNode.pkgregistry != data) {
|
|
220
|
+
globalYourConfigNode.pkgregistry = data.trim();
|
|
221
|
+
RED.nodes.dirty(true);
|
|
222
|
+
}
|
|
223
|
+
})
|
|
224
|
+
$("#node-input-nodefactorysidebar-package-registry").val(globalYourConfigNode.pkgregistry);
|
|
225
|
+
|
|
213
226
|
/*
|
|
214
227
|
************* OTP generator handlers
|
|
215
228
|
*/
|
|
@@ -370,6 +383,15 @@
|
|
|
370
383
|
placeholder="3.5.0">
|
|
371
384
|
</div>
|
|
372
385
|
|
|
386
|
+
<div class="form-row" style="margin-left: 10px;">
|
|
387
|
+
<label for="node-input-nodefactorysidebar-package-registry">
|
|
388
|
+
<i class="fa fa-tag"></i>
|
|
389
|
+
Registry
|
|
390
|
+
</label>
|
|
391
|
+
<input type="text" id="node-input-nodefactorysidebar-package-registry"
|
|
392
|
+
placeholder="https://registry.npmjs.org">
|
|
393
|
+
</div>
|
|
394
|
+
|
|
373
395
|
<div class="form-row">
|
|
374
396
|
<div style="position: relative; height: 100%; margin: 15px;">
|
|
375
397
|
<button id="node-input-nodefactorysidebar-generate-btn"
|