@vamship/build-utils 2.2.1 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vamship/build-utils",
3
- "version": "2.2.1",
3
+ "version": "2.3.2",
4
4
  "description": "Utility library for build tooling",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/project.js CHANGED
@@ -88,12 +88,15 @@ export class Project {
88
88
 
89
89
  this._containerTargets = Object.keys(this._container).reduce(
90
90
  (result, key) => {
91
- const { repo, buildFile, buildArgs } = this._container[key];
91
+ const { repo, buildFile, buildArgs, buildSecrets } =
92
+ this._container[key];
93
+
92
94
  result[key] = {
93
95
  name: key,
94
96
  repo,
95
- buildFile,
96
- buildArgs,
97
+ buildFile: buildFile || 'Dockerfile',
98
+ buildArgs: buildArgs || {},
99
+ buildSecrets: buildSecrets || {},
97
100
  };
98
101
  return result;
99
102
  },
@@ -107,6 +110,7 @@ export class Project {
107
110
  api: null,
108
111
  },
109
112
  infra: null,
113
+ scripts: null,
110
114
  working: {
111
115
  src: null,
112
116
  test: {
@@ -275,11 +279,7 @@ export class Project {
275
279
  }
276
280
 
277
281
  /**
278
- * Returns a list of docker targets defined for the project. Every target
279
- * will define the following properties:
280
- * - repo: The docker repo
281
- * - buildFile: The name of the build file to use
282
- * - buildArgs: Arguments to be passed to the docker build
282
+ * Returns a list of docker targets defined for the project.
283
283
  *
284
284
  * @return {Array}
285
285
  */
@@ -288,9 +288,14 @@ export class Project {
288
288
  }
289
289
 
290
290
  /**
291
- * Gets CDK stack information based on the cdk stack key.
291
+ * Gets the definition for a specific container target. The definition will
292
+ * include the following properties:
293
+ * - repo: The docker repo
294
+ * - buildFile: The name of the build file to use
295
+ * - buildArgs: Arguments to be passed to the docker build
296
+ * - buildSecrets: Secrets to be passed to the docker build
292
297
  *
293
- * @param {String} target The CDK target name
298
+ * @param {String} target The container target name
294
299
  * @returns {Object} The container definition corresponding to the target.
295
300
  */
296
301
  getContainerDefinition(target) {
@@ -109,6 +109,35 @@ export default {
109
109
  },
110
110
  additionalProperties: false,
111
111
  },
112
+
113
+ /**
114
+ * Collection of secrets passed to the
115
+ * container build.
116
+ */
117
+ buildSecrets: {
118
+ type: 'object',
119
+ /**
120
+ * Individual build arguments
121
+ */
122
+ patternProperties: {
123
+ '^[a-zA-Z0-9-_]+$': {
124
+ type: 'object',
125
+ properties: {
126
+ type: {
127
+ type: 'string',
128
+ minLength: 1,
129
+ },
130
+ src: {
131
+ type: 'string',
132
+ minLength: 1,
133
+ },
134
+ },
135
+ required: ['type', 'src'],
136
+ additionalProperties: false,
137
+ },
138
+ },
139
+ additionalProperties: false,
140
+ },
112
141
  },
113
142
  required: ['repo'],
114
143
  additionalProperties: false,
@@ -36,7 +36,7 @@ export class CopyFilesTaskBuilder extends TaskBuilder {
36
36
  }
37
37
 
38
38
  const { rootDir } = project;
39
- const dirs = ['src', 'test'];
39
+ const dirs = ['src', 'test', 'scripts'];
40
40
  const extensions = ['json'].concat(project.getStaticFilePatterns());
41
41
  const containerBuildFiles = project
42
42
  .getContainerTargets()
@@ -56,7 +56,6 @@ export class CopyFilesTaskBuilder extends TaskBuilder {
56
56
  'package.json',
57
57
  'LICENSE',
58
58
  'README.md',
59
- '_scripts/*',
60
59
  'nginx.conf',
61
60
  '.env',
62
61
  '.npmignore',
@@ -35,12 +35,16 @@ export class DocsTsTaskBuilder extends TaskBuilder {
35
35
 
36
36
  const { rootDir } = project;
37
37
  const docsDir = rootDir.getChild('docs').getFilePath(project.version);
38
- const srcDir = rootDir.getChild('src');
38
+ const srcPath = rootDir.getChild('src').getAllFilesGlob('ts');
39
39
 
40
40
  const task = () =>
41
- _execa('typedoc', ['--out', docsDir, srcDir.absolutePath], {
42
- stdio: 'inherit',
43
- }).then(undefined, (err) => {
41
+ _execa(
42
+ 'typedoc',
43
+ ['--out', docsDir, srcPath, '--entryPointStrategy', 'resolve'],
44
+ {
45
+ stdio: 'inherit',
46
+ },
47
+ ).then(undefined, (err) => {
44
48
  /*
45
49
  * Do nothing. This handler prevents the gulp task from
46
50
  * crashing with an unhandled error.
@@ -67,7 +67,7 @@ export class PackageContainerTaskBuilder extends TaskBuilder {
67
67
 
68
68
  const repo =
69
69
  typeof this._repo === 'undefined' ? definition.repo : this._repo;
70
- const { buildFile, buildArgs } = definition;
70
+ const { buildFile, buildArgs, buildSecrets } = definition;
71
71
 
72
72
  const dockerBin = 'docker';
73
73
  const args = [
@@ -94,6 +94,12 @@ export class PackageContainerTaskBuilder extends TaskBuilder {
94
94
  args.push(`${key}=${buildArgs[key]}`);
95
95
  });
96
96
 
97
+ Object.keys(buildSecrets).forEach((key) => {
98
+ const { type, src } = buildSecrets[key];
99
+ args.push('--secret');
100
+ args.push(`id=${key},src=${src},type=${type}`);
101
+ });
102
+
97
103
  args.push('.');
98
104
 
99
105
  const task = () =>