mirror of
https://github.com/kovetskiy/mark.git
synced 2025-04-24 05:42:40 +08:00
Merge pull request #238 from mrueg/ci
Add a CI pipeline that runs on PRs
This commit is contained in:
commit
4ef1d47b5c
66
.github/ci.yml
vendored
Normal file
66
.github/ci.yml
vendored
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
name: continuous-integration
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
env:
|
||||||
|
GO_VERSION: "~1.19.4"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Runs Golangci-lint on the source code
|
||||||
|
ci-go-lint:
|
||||||
|
name: ci-go-lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Go 1.x
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
id: go
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: golangci-lint
|
||||||
|
uses: golangci/golangci-lint-action@v3
|
||||||
|
|
||||||
|
# Executes Unit Tests
|
||||||
|
ci-unit-tests:
|
||||||
|
name: ci-unit-tests
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Go 1.x
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
id: go
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
run: |
|
||||||
|
make test
|
||||||
|
|
||||||
|
# Builds mark binary
|
||||||
|
ci-build:
|
||||||
|
name: ci-build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Go 1.x
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
id: go
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Build mark
|
||||||
|
run: |
|
||||||
|
make build
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
|||||||
/testdata
|
/testdata
|
||||||
.idea/
|
.idea/
|
||||||
/mark.test
|
/mark.test
|
||||||
|
/profile.cov
|
||||||
|
3
Makefile
3
Makefile
@ -18,6 +18,9 @@ build:
|
|||||||
-ldflags "-X main.version=$(VERSION)" \
|
-ldflags "-X main.version=$(VERSION)" \
|
||||||
-gcflags "-trimpath $(GOPATH)/src"
|
-gcflags "-trimpath $(GOPATH)/src"
|
||||||
|
|
||||||
|
test:
|
||||||
|
go test -race -coverprofile=profile.cov ./...
|
||||||
|
|
||||||
image:
|
image:
|
||||||
@echo :: building image $(NAME):$(VERSION)
|
@echo :: building image $(NAME):$(VERSION)
|
||||||
@docker build -t $(NAME):$(VERSION) -f Dockerfile .
|
@docker build -t $(NAME):$(VERSION) -f Dockerfile .
|
||||||
|
@ -89,7 +89,10 @@ func (tracer *tracer) Printf(format string, args ...interface{}) {
|
|||||||
func NewAPI(baseURL string, username string, password string) *API {
|
func NewAPI(baseURL string, username string, password string) *API {
|
||||||
var auth *gopencils.BasicAuth
|
var auth *gopencils.BasicAuth
|
||||||
if username != "" {
|
if username != "" {
|
||||||
auth = &gopencils.BasicAuth{username, password}
|
auth = &gopencils.BasicAuth{
|
||||||
|
Username: username,
|
||||||
|
Password: password,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rest := gopencils.Api(baseURL+"/rest/api", auth)
|
rest := gopencils.Api(baseURL+"/rest/api", auth)
|
||||||
if username == "" {
|
if username == "" {
|
||||||
|
@ -149,7 +149,7 @@ func SubstituteLinks(markdown []byte, links []LinkSubstitution) []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func parseLinks(markdown string) []markdownLink {
|
func parseLinks(markdown string) []markdownLink {
|
||||||
re := regexp.MustCompile("\\[[^\\]]+\\]\\((([^\\)#]+)?#?([^\\)]+)?)\\)")
|
re := regexp.MustCompile(`\[[^\]]+\]\((([^\)#]+)?#?([^\)]+)?)\)`)
|
||||||
matches := re.FindAllStringSubmatch(markdown, -1)
|
matches := re.FindAllStringSubmatch(markdown, -1)
|
||||||
|
|
||||||
links := make([]markdownLink, len(matches))
|
links := make([]markdownLink, len(matches))
|
||||||
|
@ -176,7 +176,7 @@ func (renderer ConfluenceRenderer) RenderNode(
|
|||||||
theme = option
|
theme = option
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
renderer.Stdlib.Templates.ExecuteTemplate(
|
err := renderer.Stdlib.Templates.ExecuteTemplate(
|
||||||
writer,
|
writer,
|
||||||
"ac:code",
|
"ac:code",
|
||||||
struct {
|
struct {
|
||||||
@ -197,20 +197,46 @@ func (renderer ConfluenceRenderer) RenderNode(
|
|||||||
strings.TrimSuffix(string(node.Literal), "\n"),
|
strings.TrimSuffix(string(node.Literal), "\n"),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
return bf.GoToNext
|
return bf.GoToNext
|
||||||
}
|
}
|
||||||
if node.Type == bf.Link && string(node.Destination[0:3]) == "ac:" {
|
if node.Type == bf.Link && string(node.Destination[0:3]) == "ac:" {
|
||||||
if entering {
|
if entering {
|
||||||
writer.Write([]byte("<ac:link><ri:page ri:content-title=\""))
|
_, err := writer.Write([]byte("<ac:link><ri:page ri:content-title=\""))
|
||||||
if len(node.Destination) < 4 {
|
if err != nil {
|
||||||
writer.Write(node.FirstChild.Literal)
|
panic(err)
|
||||||
} else {
|
|
||||||
writer.Write(node.Destination[3:])
|
|
||||||
}
|
}
|
||||||
writer.Write([]byte("\"/><ac:plain-text-link-body><![CDATA["))
|
|
||||||
writer.Write(node.FirstChild.Literal)
|
if len(node.Destination) < 4 {
|
||||||
writer.Write([]byte("]]></ac:plain-text-link-body></ac:link>"))
|
_, err := writer.Write(node.FirstChild.Literal)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_, err := writer.Write(node.Destination[3:])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
_, err = writer.Write([]byte("\"/><ac:plain-text-link-body><![CDATA["))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = writer.Write(node.FirstChild.Literal)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = writer.Write([]byte("]]></ac:plain-text-link-body></ac:link>"))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
return bf.SkipChildren
|
return bf.SkipChildren
|
||||||
}
|
}
|
||||||
return bf.GoToNext
|
return bf.GoToNext
|
||||||
|
@ -14,10 +14,6 @@ const (
|
|||||||
NL = "\n"
|
NL = "\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
func text(lines ...string) string {
|
|
||||||
return strings.Join(lines, "\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCompileMarkdown(t *testing.T) {
|
func TestCompileMarkdown(t *testing.T) {
|
||||||
test := assert.New(t)
|
test := assert.New(t)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user