1 | import * as path from 'path';
|
2 | import { loadPackageJson } from './utils';
|
3 | import { pascalCase } from 'pascal-case';
|
4 |
|
5 | export class Component {
|
6 | public tag: string;
|
7 |
|
8 | constructor(tag: string) {
|
9 | this.tag = tag;
|
10 | }
|
11 |
|
12 | public static tagFromPackage(workingDir: string): string {
|
13 | const { main } = loadPackageJson(workingDir);
|
14 | return path.parse(main).name;
|
15 | }
|
16 |
|
17 | public get valid(): boolean {
|
18 | return 0 < this.tag.indexOf('-')
|
19 | && this.tag.indexOf('-') < this.tag.length - 1
|
20 | && this.tag === this.tag.toLowerCase();
|
21 | }
|
22 |
|
23 | public get name(): string {
|
24 | return pascalCase(this.tag);
|
25 | }
|
26 | }
|