mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-16 18:43:42 +08:00
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
import { Tree } from '@angular-devkit/schematics';
|
|
import { getWorkspace } from '../utility/config';
|
|
import { ProjectType, WorkspaceProject, WorkspaceSchema } from '../utility/workspace-models';
|
|
|
|
|
|
/**
|
|
* Build a default project path for generating.
|
|
* @param project The project to build the path for.
|
|
*/
|
|
export function buildDefaultPath(project: WorkspaceProject): string {
|
|
const root = project.sourceRoot
|
|
? `/${project.sourceRoot}/`
|
|
: `/${project.root}/src/`;
|
|
|
|
const projectDirName = project.projectType === ProjectType.Application ? 'app' : 'lib';
|
|
|
|
return `${root}${projectDirName}`;
|
|
}
|
|
|
|
export function getProject<TProjectType extends ProjectType = ProjectType.Application>(
|
|
workspaceOrHost: WorkspaceSchema | Tree,
|
|
projectName: string,
|
|
): WorkspaceProject<TProjectType> {
|
|
const workspace = isWorkspaceSchema(workspaceOrHost)
|
|
? workspaceOrHost
|
|
: getWorkspace(workspaceOrHost);
|
|
|
|
return workspace.projects[projectName] as WorkspaceProject<TProjectType>;
|
|
}
|
|
|
|
// TODO(hans): change this any to unknown when google3 supports TypeScript 3.0.
|
|
// tslint:disable-next-line:no-any
|
|
export function isWorkspaceSchema(workspace: any): workspace is WorkspaceSchema {
|
|
return !!(workspace && (workspace as WorkspaceSchema).projects);
|
|
}
|
|
|
|
// TODO(hans): change this any to unknown when google3 supports TypeScript 3.0.
|
|
// tslint:disable-next-line:no-any
|
|
export function isWorkspaceProject(project: any): project is WorkspaceProject {
|
|
return !!(project && (project as WorkspaceProject).projectType);
|
|
}
|