18 Commits
v1.1.0 ... main

Author SHA1 Message Date
github-actions[bot]
d1148580df chore(main): release 1.1.2 (#12)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-21 01:59:58 +01:00
c3c5f71c7a docs(readme): fix build badge 2024-10-21 01:57:46 +01:00
2e276c037b docs(readme): fix styling of badges 2024-10-21 01:53:54 +01:00
af31c21ec1 Merge pull request #11 from jimeh/perf-improvement
fix(perf): minor improvement when no indent is found
2024-10-21 01:50:25 +01:00
84715b90d0 fix(perf): minor improvement when no indent is found 2024-10-21 01:43:49 +01:00
3878874bbe chore: remove bootstrap values in release-please config 2022-12-05 01:24:42 +00:00
23c6c4cd7d Merge pull request #10 from jimeh/release-please--branches--main 2022-12-05 00:02:42 +00:00
github-actions[bot]
1a0b0aafae chore(main): release 1.1.1 2022-12-05 00:02:03 +00:00
bf5d7b709e ci: release depends on lint, tidy and test 2022-12-05 00:00:58 +00:00
5890256a45 ci(release): fix filename of release-please config 2022-12-04 23:57:41 +00:00
5e31bd0485 Merge pull request #7 from jimeh/improve-performance 2022-12-04 23:55:21 +00:00
178d9b5bf6 perf: simplify line-feed and minimum indentation loops
This is based on performance improvements suggested by OpenAI's ChatGPT.
2022-12-04 23:49:34 +00:00
20ac9c9824 Merge pull request #9 from jimeh/release-please 2022-12-04 23:46:44 +00:00
caeba6291d chore(release): setup release-please for automatic release PR generation 2022-12-04 23:43:14 +00:00
044587fb4c ci(benchmarks): fix store benchmark job 2022-12-04 23:32:55 +00:00
69ffce4dca Merge pull request #8 from jimeh/update-workflow-actions 2022-12-04 23:24:47 +00:00
a0b74d98db chore(deps): update golangci-lint 2022-12-04 23:22:55 +00:00
cf20ee4e75 ci(github): update workflow actions 2022-12-04 23:22:55 +00:00
9 changed files with 99 additions and 89 deletions

View File

@@ -7,11 +7,14 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: golangci-lint
uses: golangci/golangci-lint-action@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
version: v1.37
go-version: 1.15
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.50
env:
VERBOSE: "true"
@@ -19,11 +22,11 @@ jobs:
name: Tidy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.15
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
@@ -37,11 +40,11 @@ jobs:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.15
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
@@ -67,18 +70,18 @@ jobs:
name: Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.15
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Publish coverage
uses: paambaati/codeclimate-action@v2.7.4
uses: paambaati/codeclimate-action@v3.2.0
env:
VERBOSE: "true"
GOMAXPROCS: 4
@@ -93,11 +96,11 @@ jobs:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.15
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
@@ -113,11 +116,11 @@ jobs:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.15
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
@@ -134,6 +137,16 @@ jobs:
with:
tool: "go"
output-file-path: output.txt
github-token: ${{ secrets.GH_PUSH_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-on-alert: true
auto-push: true
release-please:
needs: [lint, tidy, test]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: google-github-actions/release-please-action@v3
id: release-please
with:
command: manifest

View File

@@ -7,8 +7,9 @@ linters-settings:
golint:
min-confidence: 0
govet:
check-shadowing: true
enable-all: true
disable:
- fieldalignment
lll:
line-length: 80
tab-width: 4
@@ -21,10 +22,10 @@ linters:
disable-all: true
enable:
- bodyclose
- deadcode
- depguard
- dupl
- errcheck
- exportloopref
- funlen
- gochecknoinits
- goconst
@@ -32,7 +33,6 @@ linters:
- gocyclo
- goerr113
- goimports
- golint
- goprintffuncname
- gosec
- gosimple
@@ -44,19 +44,15 @@ linters:
- nlreturn
- noctx
- nolintlint
- scopelint
- revive
- sqlclosecheck
- staticcheck
- structcheck
- typecheck
- unconvert
- unused
- varcheck
- whitespace
issues:
include:
# - EXC0002 # disable excluding of issues about comments from golint
exclude:
- Using the variable on range scope `tt` in function literal
- Using the variable on range scope `tc` in function literal

View File

@@ -0,0 +1,3 @@
{
".": "1.1.2"
}

View File

@@ -1,6 +1,18 @@
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [1.1.2](https://github.com/jimeh/undent/compare/v1.1.1...v1.1.2) (2024-10-21)
### Bug Fixes
* **perf:** minor improvement when no indent is found ([84715b9](https://github.com/jimeh/undent/commit/84715b90d000292e4e4fbe081e00a583acf0dada))
## [1.1.1](https://github.com/jimeh/undent/compare/v1.1.0...v1.1.1) (2022-12-05)
### Performance Improvements
* simplify line-feed and minimum indentation loops ([178d9b5](https://github.com/jimeh/undent/commit/178d9b5bf6dd090a406229e862c5da1ba26cbf5d))
## [1.1.0](https://github.com/jimeh/undent/compare/v1.0.2...v1.1.0) (2021-02-22)

View File

@@ -48,7 +48,7 @@ endef
$(eval $(call tool,godoc,golang.org/x/tools/cmd/godoc))
$(eval $(call tool,gofumports,mvdan.cc/gofumpt/gofumports))
$(eval $(call tool,golangci-lint,github.com/golangci/golangci-lint/cmd/golangci-lint@v1.37))
$(eval $(call tool,golangci-lint,github.com/golangci/golangci-lint/cmd/golangci-lint@v1.50))
.PHONY: tools
tools: $(TOOLS)

View File

@@ -9,29 +9,13 @@
</p>
<p align="center">
<a href="https://pkg.go.dev/github.com/jimeh/undent">
<img src="https://img.shields.io/badge/%E2%80%8B-reference-387b97.svg?logo=go&logoColor=white"
alt="Go Reference">
</a>
<a href="https://github.com/jimeh/undent/releases">
<img src="https://img.shields.io/github/v/tag/jimeh/undent?label=release" alt="GitHub tag (latest SemVer)">
</a>
<a href="https://github.com/jimeh/undent/actions">
<img src="https://img.shields.io/github/workflow/status/jimeh/undent/CI.svg?logo=github" alt="Actions Status">
</a>
<a href="https://codeclimate.com/github/jimeh/undent">
<img src="https://img.shields.io/codeclimate/coverage/jimeh/undent.svg?logo=code%20climate" alt="Coverage">
</a>
<a href="https://github.com/jimeh/undent/issues">
<img src="https://img.shields.io/github/issues-raw/jimeh/undent.svg?style=flat&logo=github&logoColor=white"
alt="GitHub issues">
</a>
<a href="https://github.com/jimeh/undent/pulls">
<img src="https://img.shields.io/github/issues-pr-raw/jimeh/undent.svg?style=flat&logo=github&logoColor=white" alt="GitHub pull requests">
</a>
<a href="https://github.com/jimeh/undent/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/jimeh/undent.svg?style=flat" alt="License Status">
</a>
<a href="https://pkg.go.dev/github.com/jimeh/undent"><img src="https://img.shields.io/badge/%E2%80%8B-reference-387b97.svg?logo=go&logoColor=white" alt="Go Reference"></a>
<a href="https://github.com/jimeh/undent/releases"><img src="https://img.shields.io/github/v/tag/jimeh/undent?label=release" alt="GitHub tag (latest SemVer)"></a>
<a href="https://github.com/jimeh/undent/actions"><img src="https://img.shields.io/github/actions/workflow/status/jimeh/undent/ci.yml?logo=github" alt="Actions Status"></a>
<a href="https://codeclimate.com/github/jimeh/undent"><img src="https://img.shields.io/codeclimate/coverage/jimeh/undent.svg?logo=code%20climate" alt="Coverage"></a>
<a href="https://github.com/jimeh/undent/issues"><img src="https://img.shields.io/github/issues-raw/jimeh/undent.svg?style=flat&logo=github&logoColor=white" alt="GitHub issues"></a>
<a href="https://github.com/jimeh/undent/pulls"><img src="https://img.shields.io/github/issues-pr-raw/jimeh/undent.svg?style=flat&logo=github&logoColor=white" alt="GitHub pull requests"></a>
<a href="https://github.com/jimeh/undent/blob/main/LICENSE"><img src="https://img.shields.io/github/license/jimeh/undent.svg?style=flat" alt="License Status"></a>
</p>
```go

View File

@@ -0,0 +1,14 @@
{
"release-type": "go",
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"packages": {
".": {
"changelog-path": "CHANGELOG.md",
"draft": false,
"prerelease": false,
"extra-files": []
}
},
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
}

View File

@@ -5,6 +5,7 @@ package undent
import (
"fmt"
"io"
"strings"
)
const (
@@ -20,50 +21,37 @@ func Bytes(s string) []byte {
return []byte{}
}
// find line feeds
lfs := []int{}
// find smallest indent relative to each line-feed
min := -1
count := 0
lfs := make([]int, 0, strings.Count(s, "\n"))
if s[0] != lf {
lfs = append(lfs, -1)
}
indent := 0
for i := 0; i < len(s); i++ {
if s[i] == lf {
lfs = append(lfs, i)
}
}
// find smallest indent relative to each line-feed
min := 99999999999
count := 0
for i := 0; i < len(lfs); i++ {
offset := lfs[i]
end := len(s) - 1
if i+1 < len(lfs) {
end = lfs[i+1]
}
if offset+1 >= end {
continue
}
indent := 0
lineSeek:
for n := offset + 1; n < end && indent < min; n++ {
switch s[n] {
indent = 0
} else if indent < min || min == -1 {
switch s[i] {
case spc, tab:
indent++
default:
break lineSeek
if indent > 0 {
count++
}
if indent < min || min == -1 {
min = indent
}
}
}
if indent < min {
min = indent
}
if indent > 0 {
count++
}
}
if min == -1 {
return []byte(s)
}
// extract each line without indentation

View File

@@ -717,7 +717,7 @@ func TestPrint(t *testing.T) {
for _, tt := range stringTestCases {
t.Run(tt.name, func(t *testing.T) {
got, err := fakeio.Stdout().Do(func() {
Print(tt.s, 5, tt.s)
_, _ = Print(tt.s, 5, tt.s)
})
require.NoError(t, err)
@@ -731,7 +731,7 @@ func TestPrintf(t *testing.T) {
for _, tt := range stringfTestCases {
t.Run(tt.name, func(t *testing.T) {
got, err := fakeio.Stdout().Do(func() {
Printf(tt.s, tt.a...)
_, _ = Printf(tt.s, tt.a...)
})
require.NoError(t, err)
@@ -746,7 +746,7 @@ func TestFprint(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
var buf bytes.Buffer
Fprint(&buf, tt.s, 5, tt.s)
_, _ = Fprint(&buf, tt.s, 5, tt.s)
got := buf.String()
assert.IsType(t, "", got)
@@ -760,7 +760,7 @@ func TestFprintf(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
var buf bytes.Buffer
Fprintf(&buf, tt.s, tt.a...)
_, _ = Fprintf(&buf, tt.s, tt.a...)
got := buf.String()
assert.IsType(t, "", got)