@teambit/component 1.0.280 → 1.0.282

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/show/show.cmd.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import open from 'open';
1
2
  import { Command, CommandOptions } from '@teambit/cli';
2
3
  import { compact } from 'lodash';
3
4
  // import { Logger } from '@teambit/logger';
@@ -6,6 +7,7 @@ import { CLITable } from '@teambit/cli-table';
6
7
  import { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';
7
8
  import { ComponentID } from '@teambit/component-id';
8
9
  import LegacyShow from '@teambit/legacy/dist/cli/commands/public-cmds/show-cmd';
10
+ import { Logger } from '@teambit/logger';
9
11
  import { ComponentMain } from '../component.main.runtime';
10
12
 
11
13
  export class ShowCmd implements Command {
@@ -18,6 +20,7 @@ export class ShowCmd implements Command {
18
20
  ['j', 'json', 'return the component data in json format'],
19
21
  ['l', 'legacy', 'use the legacy bit show.'],
20
22
  ['r', 'remote', 'show data for a remote component'],
23
+ ['b', 'browser', 'open the component page in the browser'],
21
24
  [
22
25
  'c',
23
26
  'compare',
@@ -25,7 +28,7 @@ export class ShowCmd implements Command {
25
28
  ],
26
29
  ] as CommandOptions;
27
30
 
28
- constructor(private component: ComponentMain) {}
31
+ constructor(private component: ComponentMain, private logger: Logger) {}
29
32
 
30
33
  private async getComponent(idStr: string, remote: boolean) {
31
34
  if (remote) {
@@ -59,7 +62,10 @@ to see the legacy bit show, please use "--legacy" flag`);
59
62
  return legacyShow.report(showData);
60
63
  }
61
64
 
62
- async report([idStr]: [string], { legacy, remote, compare }: { legacy: boolean; remote: boolean; compare: boolean }) {
65
+ async report(
66
+ [idStr]: [string],
67
+ { legacy, remote, compare, browser }: { legacy: boolean; remote: boolean; compare: boolean; browser: boolean }
68
+ ) {
63
69
  if (legacy) return this.useLegacy(idStr, false, remote, compare);
64
70
  const component = await this.getComponent(idStr, remote);
65
71
  const fragments = this.component.getShowFragments();
@@ -72,7 +78,23 @@ to see the legacy bit show, please use "--legacy" flag`);
72
78
  );
73
79
 
74
80
  const table = new CLITable([], compact(rows));
75
- return table.render();
81
+ const renderedTable = table.render();
82
+ if (browser) {
83
+ const isExported = component.isExported();
84
+ if (!isExported) {
85
+ this.logger.consoleWarning(`unable to open the browser, the component "${idStr}" has not been exported yet`);
86
+ return renderedTable;
87
+ }
88
+ const homepageUrl = component.homepage;
89
+ if (!homepageUrl || homepageUrl === '') {
90
+ this.logger.consoleWarning(`unable to open browser, the component ${idStr} does not have a homepage`);
91
+ return renderedTable;
92
+ }
93
+ open(homepageUrl).catch((err) => {
94
+ this.logger.error(`failed to open browser for component ${idStr}, err: ${err}`);
95
+ });
96
+ }
97
+ return renderedTable;
76
98
  }
77
99
 
78
100
  async json([idStr]: [string], { remote, legacy }: { remote: boolean; legacy: boolean }) {