Skip to content
Snippets Groups Projects
Verified Commit 7b4abb17 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

chore: commit save point

parent cb51a7f2
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,6 @@ chmod u+x reqman
The date format for the output can be specified with the parameter `--date-format`.
The format can be looked up in the first column of the table below.
| Layout | Java notation | C notation | Notes |
| ------------------ | --------------- | ------------ | ---------- |
| 2006-01-02 | yyyy-MM-dd | %F | ISO 8601 |
......@@ -93,7 +92,6 @@ reqman tasks print --path=examples/
The output is then of the type:
| AUFGABE | BIS | ERLEDIGT | DATEI |
| -------------------------- | ----- | ---------- | -------------------- |
| das ist das erste todo 1 | — | — | ./req1/001-1425.md |
......@@ -106,7 +104,6 @@ reqman requirements print --path examples/ --column ID --column Title
The output is then of the type:
| ID | TITEL |
| ---- | ---------------- |
| A1 | My requirement |
......@@ -127,7 +124,6 @@ reqman requirements print --path=example/ --column=ID --column=
The output is then of the type:
| ID | GRUPPE | NAME | TYP | BESCHREIBUNG | BIS | ERLEDIGT | AM | VON | DATEI |
| -------------------- | -------- | -------------------------- | ------ | -------------- | ------------ | ---------- | ------------ | ----- | ---------------------- |
| 23423-Beistellung1 | A1 | Beistellung eines Bildes | Bild | Großes Logo | 2022-12-12 | ✓ | 2022-12-01 | Me | ./req1/002/002-01.md |
......@@ -159,9 +155,8 @@ requirements report --grouped-by ID
This command produces two tables:
| Anforderung | Gesch | TIME SPENT |
| ------------- | ------- | ------------ |
| ------------- | ------- | --------- |
| ID1 | 40 | 1 |
| ID2 | 40 | 1 |
| ID3 | 40 | 1 |
......@@ -188,8 +183,8 @@ This command produces two tables:
| ID24 | 40 | 6 |
| ID25 | 40 | 6 |
1) Groups all estimates and adds up the estimate and the booked times. This allows you to see how much time you have spent.
1) Groups all estimates and adds up the estimate and the booked times. This allows you to see how much time you have
spent.
| KEY | PLANNED VALUE | TIME SPENT | RATIO |
| :---- | --------------- | ------------ | ------- |
......@@ -197,7 +192,6 @@ This command produces two tables:
2) This table shows for each plan value the hours needed, the mean, the variance and the standard deviation.
| PLAN VALUE | TIME SPENT | MEAN | VARIANCE | STANDARD DEVIATION |
| ------------ | ------------ | ------ | ---------- | -------------------- |
| 40 | 75h0m0s | 3.00 | 2.08 | 1.44 |
......@@ -211,6 +205,30 @@ The smaller the standard deviation, the better.
So what decision can we derive? If a new requirement is estimated at
40, the hours offered should be between 3 and 5.
### Sync with Gitlab
You can synchronize the issues of a document with a Gitlab server.
```bash
reqman gitlab sync --path=example/
```
If no ID is defined in the document, an issue is created,
```yaml
issues:
- gitlab:
title: "Issue 1"
```
otherwise the data is updated.
```yaml
issues:
- gitlab:
id: 1
```
## Structure
### The Text
......@@ -235,13 +253,13 @@ For example, the following statement can be used to include the items within the
{{ end }}
```
If the PDF function is used, LaTeX commands can also be included in the text. For example, the LaTex instruction `/newline' leads to a line break.
If the PDF function is used, LaTeX commands can also be included in the text. For example, the LaTex instruction `
/newline' leads to a line break.
## YAML
| | `>` | `|` | | `"` | `'` | `>-` | `>+` | `|-` | `|+` |
| --------------------------------- | ----- | ------ | --- | ---- | --- | ----- | ------ | ------ | ------ |
| | `>` | `` | | `"` | `'` | `>-` | `>+` | `│-` | `│+` |
|-----------------------------------|---------|--------|-----|------|-----|-------|--------|--------|--------|
| **Spaces/newlines converted as:** | | | | | | | | | |
| Trailing space → | \_ | \_ | | | | \_ | \_ | \_ | \_ |
| Leading space → | \\n\_ | \\n\_ | | | | \\n\_ | \\n\_ | \\n\_ | \\n\_ |
......@@ -259,6 +277,7 @@ If the PDF function is used, LaTeX commands can also be included in the text. Fo
| `#` or `:` in value | ✅ | ✅ | 🚫 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Can start on same line as key | 🚫 | 🚫 | ✅ | ✅ | ✅ | 🚫 | 🚫 | 🚫 | 🚫 |
`│ -> |`
## Latex
......
package main
import (
"fmt"
"os"
"path"
"path/filepath"
......@@ -42,7 +41,7 @@ func executeCommand() {
switch activeCommand.Name {
case "version":
fmt.Println("Version " + version + " (" + build + ")")
printInfo("Version " + version + " (" + build + ")")
case "changelog":
subcommand := activeCommand.Active
switch subcommand.Name {
......
......@@ -2,7 +2,6 @@ package main
import (
"errors"
"fmt"
"net/url"
"path"
......@@ -250,32 +249,51 @@ func recursiveMerge(from, into *yaml.Node) error {
func syncIssuesWithGitlab(pageData map[string]*requirement) {
err := enrichIssuesWithGitlab(pageData)
if err != nil {
printError(err.Error())
printErrorAndExit(2, "Failed to enrich issues with gitlab")
}
for _, pageData := range pageData {
for k, info := range pageData.Issues {
if info.GitlabRemote != nil {
continue
}
if info.GitlabIntern == nil {
continue
}
if info.GitlabIntern.ID == 0 {
issue, err := createIssue(info)
if err != nil {
printErrorAndExit(2, "Failed to create issue %s", err.Error())
}
pageData.Issues[k].GitlabRemote = issue
pageData.Issues[k].GitlabIntern = new(GitlabInternalIssueStruct)
pageData.Issues[k].GitlabIntern.ID = issue.IID
pageData.Issues[k].GitlabIntern.URL = issue.WebURL
pageData.Issues[k].GitlabIntern.Title = issue.Title
pageData.Issues[k].GitlabIntern.Description = issue.Description
pageData.Issues[k].GitlabIntern.Labels = issue.Labels
pageData.Issues[k].GitlabIntern.Status = issue.State
} else {
pageData.Issues[k].GitlabIntern = new(GitlabInternalIssueStruct)
pageData.Issues[k].GitlabIntern.ID = info.GitlabRemote.IID
pageData.Issues[k].GitlabIntern.URL = info.GitlabRemote.WebURL
pageData.Issues[k].GitlabIntern.Title = info.GitlabRemote.Title
pageData.Issues[k].GitlabIntern.Description = info.GitlabRemote.Description
pageData.Issues[k].GitlabIntern.Labels = info.GitlabRemote.Labels
pageData.Issues[k].GitlabIntern.Status = info.GitlabRemote.State
}
var change yaml.Node
bytes, err := yaml.Marshal(&pageData)
if err != nil {
fmt.Println(err)
printError("Failed to marshal page data %s", err.Error())
continue
}
yaml.Unmarshal(bytes, &change)
recursiveRemove(pageData.OriginNode)
recursiveMerge(&change, pageData.OriginNode)
}
}
}
......@@ -309,8 +327,8 @@ func createIssue(issue Issue) (*gitlab.Issue, error) {
return gitlabIssue, err
}
printInfo("Created issue %s (%s)", gitlabIssue.Title, gitlabIssue.ID)
printInfo(" %s", gitlabIssue.WebURL)
printInfo("Created issue %v (ID %v)", gitlabIssue.Title, gitlabIssue.IID)
printInfo("\t%s", gitlabIssue.WebURL)
return gitlabIssue, nil
}
......
......@@ -14,13 +14,15 @@ type GitlabInternalIssueStruct struct {
ID int `yaml:"ID"`
Title string `yaml:"Title,omitempty"`
Description string `yaml:"Description,omitempty"`
//Priority string `yaml:"Priority,omitempty"`
Status string `yaml:"Status,omitempty"`
//Assignee string `yaml:"Assignee,omitempty"`
//Milestone string `yaml:"Milestone,omitempty"`
Labels []string `yaml:"Labels,omitempty"`
URL string `yaml:"URL,omitempty"`
}
//Priority string `yaml:"Priority,omitempty"`
//Assignee string `yaml:"Assignee,omitempty"`
//Milestone string `yaml:"Milestone,omitempty"`
type Issue struct {
GitlabIntern *GitlabInternalIssueStruct `yaml:"Gitlab"`
GitlabRemote *gitlab.Issue `yaml:"-"`
......
......@@ -39,18 +39,6 @@ Time Spent: 2h
Source: null
Created: 2022-05-03
Last Update: null
Issues:
- Gitlab:
ID: 1
- Gitlab:
Title: Test 1
Status: offen
Description: |
Lorem Ipsum Lila Rot
Blau1 Lila Rot Blau2
Labels:
- a
- b
# the individual items as a list
Items:
- ID: null
......@@ -103,7 +91,32 @@ Privacy:
# Where possible, a general description of the technical and organisational
# security measures referred to in Article 32(1).
TOM: null
Issues:
- Gitlab:
ID: 1
Title: demo
Status: closed
Labels:
- bug
- enhancement
- feature
URL: https://gitlab.schukai.com/oss/utilities/requirements-manager/-/issues/1
- Gitlab:
ID: 47
Title: Test 15
Description: |-
Lorem Ipsum Lila Rot
Blau1 Lila Rot Blau2
```
a=4
```
Status: closed
Labels:
- bug
- bugfix
URL: https://gitlab.schukai.com/oss/utilities/requirements-manager/-/issues/47
...
### {{ .Title }} - {{ .ID }}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment