@skeptools/skep-organization-project 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -112,7 +112,7 @@
112
112
  },
113
113
  "locationInModule": {
114
114
  "filename": "src/skep-organization-project.ts",
115
- "line": 10
115
+ "line": 15
116
116
  },
117
117
  "parameters": [
118
118
  {
@@ -126,7 +126,7 @@
126
126
  "kind": "class",
127
127
  "locationInModule": {
128
128
  "filename": "src/skep-organization-project.ts",
129
- "line": 9
129
+ "line": 14
130
130
  },
131
131
  "name": "SkepOrganizationProject",
132
132
  "symbolId": "src/skep-organization-project:SkepOrganizationProject"
@@ -167,6 +167,6 @@
167
167
  "symbolId": "src/skep-organization-project:SkepOrganizationProjectOptions"
168
168
  }
169
169
  },
170
- "version": "0.0.5",
171
- "fingerprint": "nNe+H64ohvDkzE/FBmSFD/+jAPuyoL+1uLqs4XBByJs="
170
+ "version": "0.0.6",
171
+ "fingerprint": "8wIeTtsEBILnu/WH0GAXu7eYLwLZY2hITjHMakLapow="
172
172
  }
@@ -12,32 +12,13 @@ TF_WORKSPACE=prod terraform plan -out=prod.tfplan
12
12
  terraform apply prod.tfplan
13
13
  ```
14
14
 
15
- ## Adding new people and teams
16
- There are a couple yarn commands you can use to add new people.
17
-
18
- To create a new `config` file for a person, run:
19
-
20
- ```
21
- yarn add-person {firstName} {lastName}
22
- ```
23
-
24
- This will create a new src/config/people/first_last.ts file. The name of the manager should also be in the same format, i.e., manager: "first_last". The team file src/config/teams/team_name.ts *must* be added with the new team member with the pattern set in that file.
25
-
26
- To create a new `config` file for a team, run:
27
-
28
- ```
29
- yarn add-team {teamName}
30
- ```
31
-
32
- To re-generate composite `people` files for use in a `Team` config file plus composite `team` files, run:
33
-
34
- ```
35
- yarn regen
36
- ```
37
-
38
- To clean re-generated files using `regen`, run:
39
-
40
- ```
41
- yarn regen:clean
42
- ```
43
-
15
+ ## Bootstrapping
16
+ * Define your `SkepStack` in [src/stack.ts](./src/stack.ts). This will include:
17
+ * Adding plugins to `deps` in `.projenrc.ts` for any necessary integrations, re-running `npx projen`.
18
+ * Adding any necessary [Integrations](./src/stack.ts#L16) to the definition.
19
+ * Adding [loading code](./src/stack.ts#L42-L50) for those integrations.
20
+ * Adding all provider variables for those integrations to `.projenrc.ts`, re-running `npx projen`.
21
+ * Adding GitHub secrets to the repo for all provider variables defined above.
22
+ * Add [person config](./src/config/people) for each person in the org; make sure to add them to [index.ts](./src/config/people/index.ts).
23
+ * Add [team config](./src/config/teams) for each team in the org; make sure to add them to [index.ts](./src/config/teams/index.ts).
24
+ * Delete this section when complete.
@@ -0,0 +1,8 @@
1
+ import { OrganizationProps } from '@skeptools/skep-core';
2
+ import { {{ _organizationName.pascal }}Integrations } from '../../stack';
3
+
4
+ export const organization: OrganizationProps<{{ _organizationName.pascal }}Integrations> = {
5
+ name: '{{ _organizationName.title }}',
6
+ integrations: {
7
+ },
8
+ };
@@ -0,0 +1,2 @@
1
+ export * from './janeDoe'
2
+ export * from './johnDoe'
@@ -0,0 +1 @@
1
+ export * from './foorBar'
@@ -0,0 +1,58 @@
1
+ import { Factory as GitHubFactory } from '@skeptools/plugin-github';
2
+ import { OrganizationProps, PersonProps, SkepStack, TeamProps } from '@skeptools/skep-core';
3
+ import { RoleType, TeamType } from '@skeptools/skep';
4
+ import { organization } from './config/organization';
5
+ import * as people from './config/people';
6
+ import * as teams from './config/teams';
7
+ import { Construct } from 'constructs';
8
+ import { Environments } from './environments';
9
+ import { TerraformStack } from 'cdktf';
10
+
11
+ export type PeopleKeys = Extract<keyof typeof people, string>;
12
+ export type TeamKeys = Extract<keyof typeof teams, string>;
13
+ export type {{ _organizationName.pascal }}Integrations = Integrations<PeopleKeys>;
14
+
15
+ export interface Integrations<PeopleKeys extends string> {
16
+ readonly github: GitHubFactory<PeopleKeys, TeamType, RoleType>;
17
+ }
18
+
19
+ export class {{ _organizationName.pascal }}Stack<
20
+ PeopleKeys extends string,
21
+ TeamKeys extends string
22
+ > extends SkepStack<
23
+ Integrations<PeopleKeys>,
24
+ PeopleKeys,
25
+ TeamKeys,
26
+ TeamType,
27
+ RoleType
28
+ > {
29
+ get defaultConfig() {
30
+ return {
31
+ team: {
32
+ type: 'team' as TeamType,
33
+ },
34
+ };
35
+ }
36
+
37
+ load(
38
+ orgConfig: OrganizationProps<Integrations<PeopleKeys>>,
39
+ peopleConfig: Record<PeopleKeys, PersonProps<Integrations<PeopleKeys>, RoleType>>,
40
+ teamConfig: Record<TeamKeys, TeamProps<Integrations<PeopleKeys>, PeopleKeys, TeamType>>,
41
+ ): Integrations<PeopleKeys> {
42
+ const github = new GitHubFactory<PeopleKeys, TeamType, RoleType>(
43
+ this,
44
+ 'github',
45
+ this.getOrganizationConfig(orgConfig, 'github'),
46
+ this.getPersonConfig(peopleConfig, 'github'),
47
+ this.getTeamConfig(teamConfig, 'github'),
48
+ );
49
+ github.load();
50
+ return { github };
51
+ }
52
+ }
53
+
54
+ export const pushStacks = (scope: Construct): Environments<TerraformStack> => {
55
+ return {
56
+ 'prod': new {{ _organizationName.pascal }}Stack<PeopleKeys, TeamKeys>(scope, 'prod', organization, people, teams),
57
+ }
58
+ }
@@ -6,10 +6,15 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const path = require("path");
7
7
  const cdktf_project_1 = require("@rlmartin-projen/cdktf-project");
8
8
  const projen_project_1 = require("@rlmartin-projen/projen-project");
9
+ const dependencies = [
10
+ '@skeptools/skep@~0',
11
+ 'timezone-enum@~1',
12
+ ];
9
13
  class SkepOrganizationProject extends cdktf_project_1.CdktfProject {
10
14
  constructor(options) {
11
15
  const tempOptions = {
12
16
  ...options,
17
+ deps: projen_project_1.squashPackages([...dependencies, ...(options.deps || [])]),
13
18
  _organizationName: projen_project_1.allCases(options.organizationName),
14
19
  };
15
20
  const { options: projectOpts, files } = projen_project_1.loadSettings(tempOptions, path.join(__dirname, '../files'), true);
@@ -20,5 +25,5 @@ class SkepOrganizationProject extends cdktf_project_1.CdktfProject {
20
25
  }
21
26
  exports.SkepOrganizationProject = SkepOrganizationProject;
22
27
  _a = JSII_RTTI_SYMBOL_1;
23
- SkepOrganizationProject[_a] = { fqn: "@skeptools/skep-organization-project.SkepOrganizationProject", version: "0.0.5" };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlcC1vcmdhbml6YXRpb24tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VwLW9yZ2FuaXphdGlvbi1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLGtFQUFtRjtBQUNuRixvRUFBbUY7QUFNbkYsTUFBYSx1QkFBd0IsU0FBUSw0QkFBWTtJQUN2RCxZQUFZLE9BQXVDO1FBQ2pELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLEdBQUcsT0FBTztZQUNWLGlCQUFpQixFQUFFLHlCQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1NBQ3RELENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyw2QkFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIseUJBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEIsbUNBQW1DO0lBQ3JDLENBQUM7O0FBVkgsMERBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ2RrdGZQcm9qZWN0LCBDZGt0ZlByb2plY3RPcHRpb25zIH0gZnJvbSAnQHJsbWFydGluLXByb2plbi9jZGt0Zi1wcm9qZWN0JztcbmltcG9ydCB7IGFkZEZpbGVzLCBhbGxDYXNlcywgbG9hZFNldHRpbmdzIH0gZnJvbSAnQHJsbWFydGluLXByb2plbi9wcm9qZW4tcHJvamVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2tlcE9yZ2FuaXphdGlvblByb2plY3RPcHRpb25zIGV4dGVuZHMgQ2RrdGZQcm9qZWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNrZXBPcmdhbml6YXRpb25Qcm9qZWN0IGV4dGVuZHMgQ2RrdGZQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2tlcE9yZ2FuaXphdGlvblByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgdGVtcE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgX29yZ2FuaXphdGlvbk5hbWU6IGFsbENhc2VzKG9wdGlvbnMub3JnYW5pemF0aW9uTmFtZSksXG4gICAgfTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHByb2plY3RPcHRzLCBmaWxlcyB9ID0gbG9hZFNldHRpbmdzKHRlbXBPcHRpb25zLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMnKSwgdHJ1ZSk7XG4gICAgc3VwZXIocHJvamVjdE9wdHMpO1xuICAgIGFkZEZpbGVzKHRoaXMsIGZpbGVzKTtcbiAgICAvLyBBZGQgbm9uLXRlbXBsYXRlZCByZXNvdXJjZXMgaGVyZVxuICB9XG59XG4iXX0=
28
+ SkepOrganizationProject[_a] = { fqn: "@skeptools/skep-organization-project.SkepOrganizationProject", version: "0.0.6" };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlcC1vcmdhbml6YXRpb24tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VwLW9yZ2FuaXphdGlvbi1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLGtFQUFtRjtBQUNuRixvRUFBbUc7QUFNbkcsTUFBTSxZQUFZLEdBQUc7SUFDbkIsb0JBQW9CO0lBQ3BCLGtCQUFrQjtDQUNuQixDQUFDO0FBRUYsTUFBYSx1QkFBd0IsU0FBUSw0QkFBWTtJQUN2RCxZQUFZLE9BQXVDO1FBQ2pELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSwrQkFBYyxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRSxpQkFBaUIsRUFBRSx5QkFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztTQUN0RCxDQUFDO1FBQ0YsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsNkJBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLHlCQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLG1DQUFtQztJQUNyQyxDQUFDOztBQVhILDBEQVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENka3RmUHJvamVjdCwgQ2RrdGZQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ0BybG1hcnRpbi1wcm9qZW4vY2RrdGYtcHJvamVjdCc7XG5pbXBvcnQgeyBhZGRGaWxlcywgYWxsQ2FzZXMsIGxvYWRTZXR0aW5ncywgc3F1YXNoUGFja2FnZXMgfSBmcm9tICdAcmxtYXJ0aW4tcHJvamVuL3Byb2plbi1wcm9qZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBTa2VwT3JnYW5pemF0aW9uUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBDZGt0ZlByb2plY3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uTmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBkZXBlbmRlbmNpZXMgPSBbXG4gICdAc2tlcHRvb2xzL3NrZXBAfjAnLFxuICAndGltZXpvbmUtZW51bUB+MScsXG5dO1xuXG5leHBvcnQgY2xhc3MgU2tlcE9yZ2FuaXphdGlvblByb2plY3QgZXh0ZW5kcyBDZGt0ZlByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa2VwT3JnYW5pemF0aW9uUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCB0ZW1wT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZXBzOiBzcXVhc2hQYWNrYWdlcyhbLi4uZGVwZW5kZW5jaWVzLCAuLi4ob3B0aW9ucy5kZXBzIHx8IFtdKV0pLFxuICAgICAgX29yZ2FuaXphdGlvbk5hbWU6IGFsbENhc2VzKG9wdGlvbnMub3JnYW5pemF0aW9uTmFtZSksXG4gICAgfTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHByb2plY3RPcHRzLCBmaWxlcyB9ID0gbG9hZFNldHRpbmdzKHRlbXBPcHRpb25zLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMnKSwgdHJ1ZSk7XG4gICAgc3VwZXIocHJvamVjdE9wdHMpO1xuICAgIGFkZEZpbGVzKHRoaXMsIGZpbGVzKTtcbiAgICAvLyBBZGQgbm9uLXRlbXBsYXRlZCByZXNvdXJjZXMgaGVyZVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -76,7 +76,7 @@
76
76
  "publishConfig": {
77
77
  "access": "public"
78
78
  },
79
- "version": "0.0.5",
79
+ "version": "0.0.6",
80
80
  "jest": {
81
81
  "testMatch": [
82
82
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",