browser-extension-manager 1.3.8 → 1.3.10

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