@skeptools/skep-organization-project 0.0.5 → 0.0.7
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 +5 -5
- package/README.md +1 -0
- package/files/scaffolding/README.md.liquid +10 -29
- package/files/scaffolding/src/config/organization/index.ts.liquid +8 -0
- package/files/scaffolding/src/config/people/index.ts +2 -0
- package/files/scaffolding/src/config/teams/index.ts +1 -0
- package/files/scaffolding/src/stack.ts.liquid +58 -0
- package/lib/skep-organization-project.js +7 -2
- package/package.json +2 -2
package/.jsii
CHANGED
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
},
|
|
87
87
|
"name": "@skeptools/skep-organization-project",
|
|
88
88
|
"readme": {
|
|
89
|
-
"markdown": "# skep-organization-project\n\n## Usage\n```\nnpx projen new \\\n --from @skeptools/skep-organization-project \\\n --organization-name \"Foo Company\" \\\n --projenrcts\n```\n"
|
|
89
|
+
"markdown": "# skep-organization-project\n\n## Usage\n```\nnvm use 14\nnpx projen new \\\n --from @skeptools/skep-organization-project \\\n --organization-name \"Foo Company\" \\\n --projenrcts\n```\n"
|
|
90
90
|
},
|
|
91
91
|
"repository": {
|
|
92
92
|
"type": "git",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
},
|
|
113
113
|
"locationInModule": {
|
|
114
114
|
"filename": "src/skep-organization-project.ts",
|
|
115
|
-
"line":
|
|
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":
|
|
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.
|
|
171
|
-
"fingerprint": "
|
|
170
|
+
"version": "0.0.7",
|
|
171
|
+
"fingerprint": "Yz4ZBvqpvMIyNxMVKg7ZpJZvnC5+6oheUyfpYODZBwI="
|
|
172
172
|
}
|
package/README.md
CHANGED
|
@@ -12,32 +12,13 @@ TF_WORKSPACE=prod terraform plan -out=prod.tfplan
|
|
|
12
12
|
terraform apply prod.tfplan
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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 @@
|
|
|
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.
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
SkepOrganizationProject[_a] = { fqn: "@skeptools/skep-organization-project.SkepOrganizationProject", version: "0.0.7" };
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlcC1vcmdhbml6YXRpb24tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VwLW9yZ2FuaXphdGlvbi1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLGtFQUFtRjtBQUNuRixvRUFBbUc7QUFNbkcsTUFBTSxZQUFZLEdBQUc7SUFDbkIsb0JBQW9CO0lBQ3BCLGtCQUFrQjtDQUNuQixDQUFDO0FBRUYsTUFBYSx1QkFBd0IsU0FBUSw0QkFBWTtJQUN2RCxZQUFZLE9BQXVDO1FBQ2pELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSwrQkFBYyxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRSxpQkFBaUIsRUFBRSx5QkFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztTQUN0RCxDQUFDO1FBQ0YsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsNkJBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLHlCQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLG1DQUFtQztJQUNyQyxDQUFDOztBQVhILDBEQVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENka3RmUHJvamVjdCwgQ2RrdGZQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ0BybG1hcnRpbi1wcm9qZW4vY2RrdGYtcHJvamVjdCc7XG5pbXBvcnQgeyBhZGRGaWxlcywgYWxsQ2FzZXMsIGxvYWRTZXR0aW5ncywgc3F1YXNoUGFja2FnZXMgfSBmcm9tICdAcmxtYXJ0aW4tcHJvamVuL3Byb2plbi1wcm9qZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBTa2VwT3JnYW5pemF0aW9uUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBDZGt0ZlByb2plY3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uTmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBkZXBlbmRlbmNpZXMgPSBbXG4gICdAc2tlcHRvb2xzL3NrZXBAfjAnLFxuICAndGltZXpvbmUtZW51bUB+MScsXG5dO1xuXG5leHBvcnQgY2xhc3MgU2tlcE9yZ2FuaXphdGlvblByb2plY3QgZXh0ZW5kcyBDZGt0ZlByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa2VwT3JnYW5pemF0aW9uUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCB0ZW1wT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBkZXBzOiBzcXVhc2hQYWNrYWdlcyhbLi4uZGVwZW5kZW5jaWVzLCAuLi4ob3B0aW9ucy5kZXBzIHx8IFtdKV0pLFxuICAgICAgX29yZ2FuaXphdGlvbk5hbWU6IGFsbENhc2VzKG9wdGlvbnMub3JnYW5pemF0aW9uTmFtZSksXG4gICAgfTtcbiAgICBjb25zdCB7IG9wdGlvbnM6IHByb2plY3RPcHRzLCBmaWxlcyB9ID0gbG9hZFNldHRpbmdzKHRlbXBPcHRpb25zLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vZmlsZXMnKSwgdHJ1ZSk7XG4gICAgc3VwZXIocHJvamVjdE9wdHMpO1xuICAgIGFkZEZpbGVzKHRoaXMsIGZpbGVzKTtcbiAgICAvLyBBZGQgbm9uLXRlbXBsYXRlZCByZXNvdXJjZXMgaGVyZVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"jest-junit": "^13",
|
|
48
48
|
"jsii": "^1.72.0",
|
|
49
49
|
"jsii-diff": "^1.72.0",
|
|
50
|
-
"jsii-docgen": "^7.0.
|
|
50
|
+
"jsii-docgen": "^7.0.183",
|
|
51
51
|
"jsii-pacmak": "^1.72.0",
|
|
52
52
|
"json-schema": "^0.4.0",
|
|
53
53
|
"npm-check-updates": "^16",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"version": "0.0.
|
|
79
|
+
"version": "0.0.7",
|
|
80
80
|
"jest": {
|
|
81
81
|
"testMatch": [
|
|
82
82
|
"<rootDir>/src/**/__tests__/**/*.ts?(x)",
|