@principled/cairn 1.0.0-beta → 1.0.1-beta
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/README.md
CHANGED
|
@@ -161,6 +161,42 @@ coverage:
|
|
|
161
161
|
| decision | D | no | rationale |
|
|
162
162
|
| milestone | M | no | description |
|
|
163
163
|
|
|
164
|
+
## Cross-Repo Inheritance
|
|
165
|
+
|
|
166
|
+
GVP libraries can inherit from other libraries hosted in git repositories.
|
|
167
|
+
Documents reference external sources in `meta.inherits`:
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
meta:
|
|
171
|
+
name: my-project
|
|
172
|
+
inherits:
|
|
173
|
+
- source: "@github:company/org-gvp@v1.0.0"
|
|
174
|
+
as: org
|
|
175
|
+
- source: "@azure:myorg/myproject/shared-gvp@v2.1.0"
|
|
176
|
+
as: shared
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Supported providers:
|
|
180
|
+
|
|
181
|
+
| Provider | Format | Resolves to |
|
|
182
|
+
|----------|--------|-------------|
|
|
183
|
+
| GitHub | `@github:user/repo@tag` | `https://github.com/user/repo.git` |
|
|
184
|
+
| Azure DevOps | `@azure:org/project/repo@tag` | `https://dev.azure.com/org/project/_git/repo` |
|
|
185
|
+
| GitLab | `@gitlab:user/repo@tag` | `https://gitlab.com/user/repo.git` |
|
|
186
|
+
| Bitbucket | `@bitbucket:user/repo@tag` | `https://bitbucket.org/user/repo.git` |
|
|
187
|
+
|
|
188
|
+
The commit-ish must be an immutable reference (tag or SHA) — branches are not
|
|
189
|
+
allowed. Sources are cached at `~/.cache/cairn/sources/` and only cloned once.
|
|
190
|
+
|
|
191
|
+
Elements in inherited libraries are accessible via aliased references:
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
decisions:
|
|
195
|
+
- id: D1
|
|
196
|
+
name: Follow org coding standards
|
|
197
|
+
maps_to: [org:values:V1, my-project:G1]
|
|
198
|
+
```
|
|
199
|
+
|
|
164
200
|
## Refs — Linking Decisions to Artifacts
|
|
165
201
|
|
|
166
202
|
Any element can have `refs` linking it to external files:
|
|
@@ -16,11 +16,25 @@ export declare class LocalSourceResolver implements SourceResolver {
|
|
|
16
16
|
resolve(source: string): string;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
19
|
+
* Resolver for git-based sources (DEC-1.9).
|
|
20
|
+
* Clones repos to a local cache and returns the library path.
|
|
21
|
+
*
|
|
22
|
+
* Flow:
|
|
23
|
+
* 0. Check cache — if already cloned at this commitish, return cached path
|
|
24
|
+
* 1. Parse @provider:path@commitish
|
|
25
|
+
* 2. Map provider to git URL
|
|
26
|
+
* 3. Clone (shallow) to cache directory
|
|
27
|
+
* 4. Return library path within clone (dual lookup: gvp/ then .gvp/library/)
|
|
21
28
|
*/
|
|
22
29
|
export declare class GitSourceResolver implements SourceResolver {
|
|
30
|
+
private readonly cacheDir;
|
|
31
|
+
constructor(cacheDir?: string);
|
|
23
32
|
resolve(source: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Find the library directory within a cloned repo.
|
|
35
|
+
* Dual lookup per DEC-1.2, DEC-1.10: gvp/ wins over .gvp/library/
|
|
36
|
+
*/
|
|
37
|
+
private findLibraryDir;
|
|
24
38
|
}
|
|
25
39
|
/**
|
|
26
40
|
* Factory that creates the appropriate resolver based on source format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAmChC;AA+BD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,CAAC,EAAE,MAAM;IAI7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAgE/B;;;OAGG;IACH,OAAO,CAAC,cAAc;CAcvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAYvE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
3
5
|
import { InheritanceError } from '../errors.js';
|
|
4
6
|
/**
|
|
5
7
|
* Resolves local filesystem source paths (DEC-1.7).
|
|
@@ -40,12 +42,48 @@ export class LocalSourceResolver {
|
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
+
* Provider → git URL templates.
|
|
46
|
+
* Each template receives the parsed path segments and produces a clone URL.
|
|
47
|
+
*/
|
|
48
|
+
const GIT_PROVIDERS = {
|
|
49
|
+
github: (repoPath) => `https://github.com/${repoPath}.git`,
|
|
50
|
+
gitlab: (repoPath) => `https://gitlab.com/${repoPath}.git`,
|
|
51
|
+
bitbucket: (repoPath) => `https://bitbucket.org/${repoPath}.git`,
|
|
52
|
+
azure: (repoPath) => {
|
|
53
|
+
// @azure:org/project/repo → https://dev.azure.com/org/project/_git/repo
|
|
54
|
+
const parts = repoPath.split('/');
|
|
55
|
+
if (parts.length < 3) {
|
|
56
|
+
throw new InheritanceError(`Azure DevOps source requires org/project/repo format, got '${repoPath}'`);
|
|
57
|
+
}
|
|
58
|
+
const [org, project, ...repoParts] = parts;
|
|
59
|
+
const repo = repoParts.join('/');
|
|
60
|
+
return `https://dev.azure.com/${org}/${project}/_git/${repo}`;
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Default cache directory for cloned git sources.
|
|
65
|
+
*/
|
|
66
|
+
function defaultCacheDir() {
|
|
67
|
+
return path.join(os.homedir(), '.cache', 'cairn', 'sources');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolver for git-based sources (DEC-1.9).
|
|
71
|
+
* Clones repos to a local cache and returns the library path.
|
|
72
|
+
*
|
|
73
|
+
* Flow:
|
|
74
|
+
* 0. Check cache — if already cloned at this commitish, return cached path
|
|
75
|
+
* 1. Parse @provider:path@commitish
|
|
76
|
+
* 2. Map provider to git URL
|
|
77
|
+
* 3. Clone (shallow) to cache directory
|
|
78
|
+
* 4. Return library path within clone (dual lookup: gvp/ then .gvp/library/)
|
|
45
79
|
*/
|
|
46
80
|
export class GitSourceResolver {
|
|
81
|
+
cacheDir;
|
|
82
|
+
constructor(cacheDir) {
|
|
83
|
+
this.cacheDir = cacheDir ?? defaultCacheDir();
|
|
84
|
+
}
|
|
47
85
|
resolve(source) {
|
|
48
|
-
// Parse @
|
|
86
|
+
// Parse @provider:path@commitish
|
|
49
87
|
const match = source.match(/^@(\w+):(.+?)@(.+)$/);
|
|
50
88
|
if (!match) {
|
|
51
89
|
// Check if it's a git source without commit-ish
|
|
@@ -57,16 +95,51 @@ export class GitSourceResolver {
|
|
|
57
95
|
throw new InheritanceError(`Invalid git source format: '${source}'`);
|
|
58
96
|
}
|
|
59
97
|
const [, provider, repoPath, commitish] = match;
|
|
60
|
-
// Reject branch-like references (no slashes, starts with letter, no dots)
|
|
61
|
-
// This is a heuristic — exact validation would require git
|
|
62
|
-
// For alpha, just ensure something is there
|
|
63
98
|
if (!commitish || commitish.length === 0) {
|
|
64
99
|
throw new InheritanceError(`Git source '${source}' requires a commit-ish after '@'`);
|
|
65
100
|
}
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
101
|
+
// Step 0: Check cache
|
|
102
|
+
const cacheKey = `${provider}/${repoPath.replace(/\//g, '--')}/${commitish}`;
|
|
103
|
+
const cachedPath = path.join(this.cacheDir, cacheKey);
|
|
104
|
+
if (fs.existsSync(cachedPath)) {
|
|
105
|
+
return this.findLibraryDir(cachedPath, source);
|
|
106
|
+
}
|
|
107
|
+
// Step 1: Map provider to git URL
|
|
108
|
+
const urlBuilder = GIT_PROVIDERS[provider];
|
|
109
|
+
if (!urlBuilder) {
|
|
110
|
+
throw new InheritanceError(`Unknown git provider '${provider}' in source '${source}'. ` +
|
|
111
|
+
`Supported: ${Object.keys(GIT_PROVIDERS).join(', ')}`);
|
|
112
|
+
}
|
|
113
|
+
const gitUrl = urlBuilder(repoPath);
|
|
114
|
+
// Step 2: Clone to cache
|
|
115
|
+
fs.mkdirSync(cachedPath, { recursive: true });
|
|
116
|
+
try {
|
|
117
|
+
execSync(`git clone --depth 1 --branch ${commitish} ${gitUrl} ${cachedPath}`, { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf-8' });
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
// Clean up failed clone
|
|
121
|
+
fs.rmSync(cachedPath, { recursive: true, force: true });
|
|
122
|
+
const errMsg = e instanceof Error ? e.message : String(e);
|
|
123
|
+
throw new InheritanceError(`Failed to clone git source '${source}' from ${gitUrl}: ${errMsg}`);
|
|
124
|
+
}
|
|
125
|
+
// Step 3: Return library path
|
|
126
|
+
return this.findLibraryDir(cachedPath, source);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Find the library directory within a cloned repo.
|
|
130
|
+
* Dual lookup per DEC-1.2, DEC-1.10: gvp/ wins over .gvp/library/
|
|
131
|
+
*/
|
|
132
|
+
findLibraryDir(repoDir, source) {
|
|
133
|
+
const gvpDir = path.join(repoDir, 'gvp');
|
|
134
|
+
if (fs.existsSync(gvpDir) && fs.statSync(gvpDir).isDirectory()) {
|
|
135
|
+
return gvpDir;
|
|
136
|
+
}
|
|
137
|
+
const dotGvpLibrary = path.join(repoDir, '.gvp', 'library');
|
|
138
|
+
if (fs.existsSync(dotGvpLibrary) && fs.statSync(dotGvpLibrary).isDirectory()) {
|
|
139
|
+
return dotGvpLibrary;
|
|
140
|
+
}
|
|
141
|
+
// Fall back to repo root (maybe the whole repo IS the library)
|
|
142
|
+
return repoDir;
|
|
70
143
|
}
|
|
71
144
|
}
|
|
72
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,OAAO,CAAC,MAAc;QACpB,yBAAyB;QACzB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,gBAAgB,CACxB,qDAAqD,MAAM,2BAA2B,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACvB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzC,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7E,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,sEAAsE;QACtE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACnE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,0BAA0B,MAAM,qCAAqC,QAAQ,KAAK;YAClF,YAAY,MAAM,KAAK,aAAa,KAAK,QAAQ,EAAE,CACpD,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED