UNPKG

@ngx-i18nsupport/tooling

Version:

Schematics to add the tooling to be used with the Angular 2 i18n workflow

49 lines (40 loc) 1.77 kB
/** * @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); }