Skip to content

Commit ca2e75e

Browse files
Feat/add project path field (#2)
* docs: 更新 TEMPLATE.md 文档,添加 ProjectPath 字段说明 在模板文档中添加新增的 ProjectPath 字段的说明和使用示例。 变更内容: - 更新数据结构说明,说明 Path 和 ProjectPath 的区别 - 更新模板示例,展示如何使用 ProjectPath 字段 * docs: 添加 nameMode 和路径字段的详细说明 在 TEMPLATE.md 中添加: - Path 与 ProjectPath 字段的区别说明 - nameMode 对路径的影响说明 - 具体示例展示两种模式的效果 --------- Co-authored-by: [email protected] <[email protected]>
1 parent aa5efff commit ca2e75e

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

docs/TEMPLATE.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ GitLab CLI 支持使用自定义模板来格式化输出结果,让你可以按
3030

3131
模板使用 Go 的 `text/template` 语法,支持访问以下数据结构:
3232

33+
### 重要说明:Path 与 ProjectPath 字段
34+
35+
在输出数据中,项目有两个路径字段:
36+
37+
- **Path**: 完整路径,包含 group 或 username 前缀
38+
- 组级项目:`backend-group-20251105112212/demo-20251105112213`
39+
- 用户级项目:`tektoncd-20251105112211/my-personal-project-20251105112216`
40+
41+
- **ProjectPath**: 项目本身的路径,不包含前缀
42+
- 组级项目:`demo-20251105112213`
43+
- 用户级项目:`my-personal-project-20251105112216`
44+
45+
**关于时间戳后缀**
46+
- 当使用 `nameMode: prefix` 时(默认),路径会自动添加时间戳后缀
47+
- 当使用 `nameMode: name` 时,路径保持与配置文件中一致,不添加时间戳
48+
- **注意**:nameMode 只影响路径(Path),不影响项目的显示名称(Name)
49+
3350
### 可用数据
3451

3552
```go
@@ -50,14 +67,16 @@ GitLab CLI 支持使用自定义模板来格式化输出结果,让你可以按
5067
│ ├── .Visibility // 可见性
5168
│ └── .Projects // 组下的项目数组
5269
│ ├── .Name // 项目名
53-
│ ├── .Path // 项目路径
70+
│ ├── .Path // 完整路径,如 group/project
71+
│ ├── .ProjectPath // 项目本身的路径,不含 group
5472
│ ├── .ProjectID // 项目 ID
5573
│ ├── .Description // 描述
5674
│ ├── .Visibility // 可见性
5775
│ └── .WebURL // Web URL
5876
└── .Projects // 用户级项目数组(不属于任何组)
5977
├── .Name // 项目名
60-
├── .Path // 项目路径
78+
├── .Path // 完整路径,如 username/project
79+
├── .ProjectPath // 项目本身的路径,不含 username
6180
├── .ProjectID // 项目 ID
6281
├── .Description // 描述
6382
├── .Visibility // 可见性
@@ -175,6 +194,8 @@ toolchains:
175194
projects:
176195
{{- range .Projects }}
177196
- name: {{ .Name }}
197+
path: {{ .Path }} # 完整路径,如 group/project
198+
project_path: {{ .ProjectPath }} # 项目本身的路径,不含 group
178199
project_id: {{ .ProjectID }}
179200
web_url: {{ .WebURL }}
180201
{{- end }}

examples/template-example.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ toolchains:
4545
projects:
4646
{{- range .Projects }}
4747
- name: {{ .Name }}
48+
path: {{ .Path }} # 完整路径,如 group/project
49+
project_path: {{ .ProjectPath }} # 项目本身的路径,不含 group
4850
{{- end }}
4951
{{- end }}
5052
{{- end }}

internal/processor/processor.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ func (p *ResourceProcessor) createUserProjectsWithOutput(username string, projec
308308
projectOutputs = append(projectOutputs, types.ProjectOutput{
309309
Name: projSpec.Name,
310310
Path: fullPath,
311+
ProjectPath: actualProjectPath,
311312
ProjectID: projectID,
312313
Description: projSpec.Description,
313314
Visibility: projSpec.Visibility,
@@ -379,6 +380,7 @@ func (p *ResourceProcessor) createProjectsWithOutput(username string, groupID in
379380
projectOutputs = append(projectOutputs, types.ProjectOutput{
380381
Name: projSpec.Name,
381382
Path: fullPath,
383+
ProjectPath: actualProjectPath,
382384
ProjectID: projectID,
383385
Description: projSpec.Description,
384386
Visibility: projSpec.Visibility,

pkg/types/types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ type GroupOutput struct {
8585
// ProjectOutput 项目输出结果
8686
type ProjectOutput struct {
8787
Name string `yaml:"name"`
88-
Path string `yaml:"path"`
88+
Path string `yaml:"path"` // 完整路径,如 group/project 或 username/project
89+
ProjectPath string `yaml:"project_path"` // 项目本身的路径,不包含 group 或 username
8990
ProjectID int `yaml:"project_id"`
9091
Description string `yaml:"description"`
9192
Visibility string `yaml:"visibility"`

0 commit comments

Comments
 (0)