browser-extension-manager 1.3.8 → 1.3.9
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/dist/build.js +2 -1
- package/dist/gulp/tasks/publish.js +67 -17
- package/package.json +1 -1
package/dist/build.js
CHANGED
|
@@ -44,7 +44,8 @@ Manager.getArguments = function () {
|
|
|
44
44
|
|
|
45
45
|
// Fix
|
|
46
46
|
options._ = options._ || [];
|
|
47
|
-
|
|
47
|
+
// browser can be: true (all), false (none), or a string like 'chrome' or 'chrome,firefox'
|
|
48
|
+
options.browser = options.browser === undefined ? true : options.browser;
|
|
48
49
|
options.debug = force(options.debug === undefined ? false : options.debug, 'boolean');
|
|
49
50
|
|
|
50
51
|
// Return
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Libraries
|
|
2
2
|
const Manager = new (require('../../build.js'));
|
|
3
3
|
const logger = Manager.logger('publish');
|
|
4
|
+
const argv = Manager.getArguments();
|
|
4
5
|
const { series } = require('gulp');
|
|
5
6
|
const jetpack = require('fs-jetpack');
|
|
6
7
|
const path = require('path');
|
|
@@ -9,6 +10,29 @@ const { execute } = require('node-powertools');
|
|
|
9
10
|
// Load package
|
|
10
11
|
const project = Manager.getPackage('project');
|
|
11
12
|
|
|
13
|
+
// Helper to parse browser filter from --browser flag
|
|
14
|
+
// Returns array of browser names to publish to, or null for all
|
|
15
|
+
function getBrowserFilter() {
|
|
16
|
+
const browser = argv.browser;
|
|
17
|
+
|
|
18
|
+
// If true or undefined, publish to all
|
|
19
|
+
if (browser === true || browser === undefined) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// If false, publish to none
|
|
24
|
+
if (browser === false) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// If string, parse comma-separated list
|
|
29
|
+
if (typeof browser === 'string') {
|
|
30
|
+
return browser.split(',').map((b) => b.trim().toLowerCase());
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
|
|
12
36
|
// Paths for each target
|
|
13
37
|
const PATHS = {
|
|
14
38
|
chromium: {
|
|
@@ -89,27 +113,53 @@ async function publish(complete) {
|
|
|
89
113
|
// Log version
|
|
90
114
|
logger.log(`Publishing version ${project.version}`);
|
|
91
115
|
|
|
92
|
-
// Get
|
|
116
|
+
// Get browser filter from --browser flag
|
|
117
|
+
const browserFilter = getBrowserFilter();
|
|
118
|
+
|
|
119
|
+
// Log filter if applied
|
|
120
|
+
if (browserFilter) {
|
|
121
|
+
logger.log(`Browser filter: ${browserFilter.join(', ') || 'none'}`);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Get enabled stores (filtered by --browser flag if provided)
|
|
93
125
|
const enabledStores = Object.entries(STORES)
|
|
94
|
-
.filter(([, store]) =>
|
|
126
|
+
.filter(([key, store]) => {
|
|
127
|
+
// Check if store is enabled via credentials
|
|
128
|
+
if (!store.enabled()) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// If no filter, include all enabled stores
|
|
133
|
+
if (!browserFilter) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Check if this store is in the filter
|
|
138
|
+
return browserFilter.includes(key);
|
|
139
|
+
})
|
|
95
140
|
.map(([key]) => key);
|
|
96
141
|
|
|
97
|
-
// If no stores
|
|
142
|
+
// If no stores to publish to
|
|
98
143
|
if (enabledStores.length === 0) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
logger.
|
|
104
|
-
logger.log(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
logger.log(`
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
144
|
+
// Check if it's because of filter or missing credentials
|
|
145
|
+
if (browserFilter && browserFilter.length > 0) {
|
|
146
|
+
logger.error(`No matching stores for --browser=${browserFilter.join(',')}. Available: chrome, firefox, edge`);
|
|
147
|
+
} else {
|
|
148
|
+
logger.error('No stores configured for publishing. Add credentials to .env file');
|
|
149
|
+
logger.log('');
|
|
150
|
+
logger.log('Store URLs and API documentation:');
|
|
151
|
+
Object.entries(STORES).forEach(([, store]) => {
|
|
152
|
+
logger.log(` ${store.name}:`);
|
|
153
|
+
logger.log(` Submit: ${store.submitUrl}`);
|
|
154
|
+
if (store.apiUrl) {
|
|
155
|
+
logger.log(` API: ${store.apiUrl}`);
|
|
156
|
+
} else if (store.note) {
|
|
157
|
+
logger.log(` Note: ${store.note}`);
|
|
158
|
+
} else {
|
|
159
|
+
logger.log(` API: N/A (manual submission only)`);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
113
163
|
throw new Error('No stores configured for publishing');
|
|
114
164
|
}
|
|
115
165
|
|