UNPKG

ngx-deploy-docker

Version:

Publish your angular projects to a docker registry by just run `ng deploy your-app`

1 lines 6.26 kB
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Rule,\r\n SchematicContext,\r\n Tree,\r\n SchematicsException,\r\n url,\r\n chain,\r\n apply,\r\n mergeWith,\r\n template,\r\n} from '@angular-devkit/schematics';\r\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\r\n\r\nimport {\r\n addPackageToPackageJson,\r\n createHost,\r\n getLibraryVersion,\r\n getVersionFromPackageJson,\r\n} from '../utils';\r\n\r\nimport { Schema as NgAddOptions } from './schema';\r\nimport { workspaces } from '@angular-devkit/core';\r\nimport {\r\n WorkspaceDefinition,\r\n WorkspaceHost,\r\n} from '@angular-devkit/core/src/workspace';\r\n\r\nfunction addDeployBuilderToProject(\r\n tree: Tree,\r\n host: WorkspaceHost,\r\n workspace: WorkspaceDefinition,\r\n options: NgAddOptions\r\n) {\r\n if (!options.project) {\r\n if (workspace.extensions.defaultProject) {\r\n options.project = workspace.extensions.defaultProject as string;\r\n } else {\r\n throw new SchematicsException(\r\n 'No Angular project selected and no default project in the workspace'\r\n );\r\n }\r\n }\r\n\r\n const project = workspace.projects.get(options.project);\r\n if (!project) {\r\n throw new SchematicsException(\r\n 'The specified Angular project is not defined in this workspace'\r\n );\r\n }\r\n\r\n if (project.extensions.projectType !== 'application') {\r\n throw new SchematicsException(\r\n `Deploy requires an Angular project type of \"application\" in angular.json`\r\n );\r\n }\r\n\r\n if (!project.targets.get('build')?.options?.outputPath) {\r\n throw new SchematicsException(\r\n `Cannot read the output path (architect.build.options.outputPath) of the Angular project \"${options.project}\" in angular.json`\r\n );\r\n }\r\n\r\n project.targets.add({\r\n name: 'deploy',\r\n builder: 'ngx-deploy-docker:deploy',\r\n options: {\r\n account: options.account,\r\n },\r\n });\r\n\r\n workspaces.writeWorkspace(workspace, host);\r\n return tree;\r\n}\r\n\r\nfunction prepareDockerFiles(\r\n tree: Tree,\r\n workspace: WorkspaceDefinition,\r\n options: NgAddOptions\r\n): Rule {\r\n const sourceTemplates = url('./files');\r\n\r\n const outputPath =\r\n workspace.projects.get(options.project)?.targets.get('build')?.options\r\n ?.outputPath || '';\r\n const version = getVersionFromPackageJson(tree);\r\n const sourceParametrizedTemplates = apply(sourceTemplates, [\r\n template({\r\n outputPath,\r\n version,\r\n }),\r\n ]);\r\n\r\n return mergeWith(sourceParametrizedTemplates);\r\n}\r\n\r\nexport const ngAdd = (options: NgAddOptions) => async (\r\n tree: Tree,\r\n context: SchematicContext\r\n) => {\r\n const host = createHost(tree);\r\n const { workspace } = await workspaces.readWorkspace('/', host);\r\n\r\n const version = getLibraryVersion();\r\n addPackageToPackageJson(tree, 'ngx-deploy-docker', `^${version}`);\r\n context.logger.log(\r\n 'info',\r\n `🐳 Added \"ngx-deploy-docker@^${version}\" into devDependencies`\r\n );\r\n\r\n if (options.skipInstall) {\r\n context.logger.log(\r\n 'warn',\r\n `❗️ The \"--skip-install\" flag was present, don't forget to install package manually`\r\n );\r\n } else {\r\n context.logger.log('info', `📦 Installing added packages...`);\r\n context.addTask(new NodePackageInstallTask());\r\n }\r\n\r\n addDeployBuilderToProject(tree, host, workspace, options);\r\n context.logger.log('info', `🚀 Deploy Builder added to your project`);\r\n\r\n context.logger.log('info', 'Preparing some 🐳 files...');\r\n return chain([prepareDockerFiles(tree, workspace, options)]);\r\n};\r\n"]}