Merge pull request #51 from rofafor/feature/labels

Add label support fix #34 fix #50
This commit is contained in:
Egor Kovetskiy 2021-01-06 07:53:19 +03:00 committed by GitHub
commit 8b28912866
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 3 deletions

View File

@ -25,6 +25,8 @@ File in the extended format should follow the specification:
<!-- Parent: <parent 2> -->
<!-- Title: <title> -->
<!-- Attachment: <local path> -->
<!-- Label: <label 1> -->
<!-- Label: <label 2> -->
<page contents>
```
@ -268,6 +270,7 @@ mark -h | --help
manual edits over Confluence Web UI.
- `--drop-h1` Don't include H1 headings in Confluence output.
- `--dry-run` — Show resulting HTML and don't update Confluence page content.
- `--minor-edit` — Don't send notifications while updating Confluence page.
- `--trace` — Enable trace logs.
- `-v | --version` — Show version.
- `-h | --help` — Show help screen and call 911.
@ -282,6 +285,8 @@ password = "matrixishere"
base_url = "http://confluence.local"
```
**NOTE**: Labels aren't supported when using `minor-edit`!
# Tricks
## Continuous Integration

View File

@ -43,6 +43,7 @@ Options:
--drop-h1 Don't include H1 headings in Confluence output.
--dry-run Resolve page and ancestry, show resulting HTML and exit.
--compile-only Show resulting HTML and don't update Confluence page content.
--minor-edit Don't send notifications while updating Confluence page.
--debug Enable debug logs.
--trace Enable trace logs.
-h --help Show this screen and call 911.
@ -62,6 +63,7 @@ func main() {
dryRun = args["--dry-run"].(bool)
editLock = args["-k"].(bool)
dropH1 = args["--drop-h1"].(bool)
minorEdit = args["--minor-edit"].(bool)
)
if args["--debug"].(bool) {
@ -240,7 +242,7 @@ func main() {
html = buffer.String()
}
err = api.UpdatePage(target, html)
err = api.UpdatePage(target, html, minorEdit, meta.Labels)
if err != nil {
log.Fatal(err)
}

View File

@ -434,7 +434,7 @@ func (api *API) CreatePage(
}
func (api *API) UpdatePage(
page *PageInfo, newContent string,
page *PageInfo, newContent string, minorEdit bool, newLabels []string,
) error {
nextPageVersion := page.Version.Number + 1
@ -450,13 +450,24 @@ func (api *API) UpdatePage(
{"id": page.Ancestors[len(page.Ancestors)-1].Id},
}
labels := []map[string]interface{}{}
for _, label := range newLabels {
if label != "" {
item := map[string]interface{}{
"prexix": "global",
"name": label,
}
labels = append(labels, item)
}
}
payload := map[string]interface{}{
"id": page.ID,
"type": "page",
"title": page.Title,
"version": map[string]interface{}{
"number": nextPageVersion,
"minorEdit": false,
"minorEdit": minorEdit,
},
"ancestors": oldAncestors,
"body": map[string]interface{}{
@ -465,6 +476,9 @@ func (api *API) UpdatePage(
"representation": "storage",
},
},
"metadata": map[string]interface{}{
"labels": labels,
},
}
request, err := api.rest.Res(

View File

@ -16,6 +16,7 @@ const (
HeaderTitle = `Title`
HeaderLayout = `Layout`
HeaderAttachment = `Attachment`
HeaderLabel = `Label`
)
type Meta struct {
@ -24,6 +25,7 @@ type Meta struct {
Title string
Layout string
Attachments map[string]string
Labels []string
}
var (
@ -90,6 +92,9 @@ func ExtractMeta(data []byte) (*Meta, []byte, error) {
case HeaderAttachment:
meta.Attachments[value] = value
case HeaderLabel:
meta.Labels = append(meta.Labels, value)
default:
log.Errorf(
nil,