browser-extension-manager 1.3.7 → 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.
|
@@ -181,5 +181,6 @@ $avatar-sizes: (
|
|
|
181
181
|
$headings-font-weight: $headings-font-weight,
|
|
182
182
|
$border-radius: $border-radius,
|
|
183
183
|
$border-radius-sm: $border-radius-sm,
|
|
184
|
-
$border-radius-lg: $border-radius-lg
|
|
184
|
+
$border-radius-lg: $border-radius-lg,
|
|
185
|
+
$enable-negative-margins: true
|
|
185
186
|
);
|
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
|
|
|
@@ -220,21 +270,29 @@ async function publishToFirefox() {
|
|
|
220
270
|
throw new Error('Missing Firefox credentials. Set FIREFOX_API_KEY, FIREFOX_API_SECRET in .env');
|
|
221
271
|
}
|
|
222
272
|
|
|
223
|
-
|
|
273
|
+
// Log what we're doing
|
|
274
|
+
if (extensionId) {
|
|
275
|
+
logger.log(`[firefox] Updating existing add-on: ${extensionId}`);
|
|
276
|
+
} else {
|
|
277
|
+
logger.log('[firefox] Creating new add-on (no FIREFOX_EXTENSION_ID set)');
|
|
278
|
+
logger.log('[firefox] After publish, add FIREFOX_EXTENSION_ID to .env for future updates');
|
|
279
|
+
}
|
|
224
280
|
|
|
225
281
|
// Use web-ext sign with firefox build
|
|
282
|
+
// --approval-timeout=0 to skip waiting for approval (can take minutes to hours)
|
|
226
283
|
const command = [
|
|
227
284
|
'npx web-ext sign',
|
|
228
285
|
`--source-dir "${PATHS.firefox.raw}"`,
|
|
229
286
|
`--api-key "${apiKey}"`,
|
|
230
287
|
`--api-secret "${apiSecret}"`,
|
|
231
288
|
`--channel "${channel}"`,
|
|
289
|
+
'--approval-timeout 0', // Don't wait for approval - it can take hours
|
|
232
290
|
extensionId ? `--id "${extensionId}"` : '',
|
|
233
291
|
].filter(Boolean).join(' ');
|
|
234
292
|
|
|
235
293
|
await execute(command);
|
|
236
294
|
|
|
237
|
-
logger.log('[firefox] Upload complete');
|
|
295
|
+
logger.log('[firefox] Upload complete (approval may take time)');
|
|
238
296
|
}
|
|
239
297
|
|
|
240
298
|
// Publish to Microsoft Edge Add-ons
|