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 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,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 enabled stores
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]) => store.enabled())
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 are configured, error and show all store info
142
+ // If no stores to publish to
98
143
  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
- });
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
 
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.9",
4
4
  "description": "Browser Extension Manager dependency manager",
5
5
  "main": "dist/index.js",
6
6
  "exports": {