Skip to content

Commit

Permalink
ci(linter): add linter
Browse files Browse the repository at this point in the history
  • Loading branch information
Halfi committed Aug 15, 2021
1 parent 617fdbf commit a60ea33
Show file tree
Hide file tree
Showing 44 changed files with 428 additions and 581 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Lint

on:
pull_request:
push:
branches:
- main

jobs:
check:
timeout-minutes: 1
runs-on: ubuntu-latest
outputs:
run_job: ${{ steps.check.outputs.run_job }}
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 2

- name: check modified files
id: check
run: |
echo "=============== list modified files ==============="
git diff --name-only HEAD^ HEAD
echo "========== check paths of modified files =========="
git diff --name-only HEAD^ HEAD > files.txt
while IFS= read -r file
do
echo $file
if [[ $file == *.go ]]; then
echo "run job"
echo "::set-output name=run_job::true"
break
fi
done < files.txt
lint:
name: Lint
needs: check
if: needs.check.outputs.run_job == 'true'
runs-on: ubuntu-latest
env:
GO_VERSION: '1.16.7'
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 2

- name: Setup go
id: go
uses: actions/setup-go@v2
with:
go-version: ${{ env.GO_VERSION }}

- name: Cache go
uses: actions/cache@v2.1.6
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Golangci lint
uses: golangci/golangci-lint-action@v2
with:
version: v1.41.1
skip-go-installation: true
skip-pkg-cache: true
skip-build-cache: true
only-new-issues: true
args: -v ./...
46 changes: 46 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This file contains all available configuration options
# with their default values.

# options for analysis running
run:
# timeout for analysis, e.g. 30s, 5m, default is 1m
timeout: 5m

# include test files or not, default is true
tests: false

linters:
disable:
- scopelint
enable:
- errcheck
- goimports
- gofmt
- revive
- exportloopref
- prealloc
- lll
- staticcheck
- govet
- whitespace
- unconvert
- goconst
- gocritic
presets:
- bugs
- unused

linters-settings:
lll:
line-length: 160
revive:
ignore-generated-header: true
rules:
- name: unexported-return
disabled: true

issues:
exclude-rules:
- linters:
- lll
source: "^//go:generate "
28 changes: 28 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Copyright (c) 2016, Actionpay
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the distribution.

* Neither the name of the Actionpay nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# PostmanQ

[![license](https://img.shields.io/github/license/halfi/postmanq?style=flat-square)](https://github.com/Halfi/postmanq/blob/main/LICENSE)
[![go version](https://img.shields.io/github/go-mod/go-version/Halfi/postmanq?style=flat-square)](https://github.com/Halfi/postmanq/)
[![go version](https://goreportcard.com/badge/github.com/Halfi/postmanq?style=flat-square)](https://goreportcard.com/report/github.com/Halfi/postmanq)

---

PostmanQ - это высокопроизводительный почтовый сервер(MTA).
На сервере под управлением Ubuntu 12.04 с 8-ми ядерным процессором и 32ГБ оперативной памяти
PostmanQ рассылает более 300 писем в секунду.
Expand Down
8 changes: 4 additions & 4 deletions analyser/aggregate.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package analyser

// автор таблиц, агрегирующий отчеты по ключу, например по коду ошибки
// KeyAggregateTableWriter автор таблиц, агрегирующий отчеты по ключу, например по коду ошибки
type KeyAggregateTableWriter struct {
*AbstractTableWriter
}
Expand All @@ -12,7 +12,7 @@ func newKeyAggregateTableWriter(fields []interface{}) TableWriter {
}
}

// записывает данные в таблицу
// Show записывает данные в таблицу
func (t *KeyAggregateTableWriter) Show() {
t.Clean()
for key, ids := range t.ids {
Expand All @@ -21,7 +21,7 @@ func (t *KeyAggregateTableWriter) Show() {
t.Print()
}

// автор таблиц, агрегирующий данные
// AggregateTableWriter автор таблиц, агрегирующий данные
type AggregateTableWriter struct {
*AbstractTableWriter
}
Expand All @@ -33,7 +33,7 @@ func newAggregateTableWriter(fields []interface{}) TableWriter {
}
}

// записывает данные в таблицу
// Show записывает данные в таблицу
func (a *AggregateTableWriter) Show() {
a.Clean()
for _, row := range a.rows {
Expand Down
3 changes: 2 additions & 1 deletion analyser/detail.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ package analyser

import (
"fmt"
"github.com/Halfi/postmanq/common"
"regexp"
"strings"

"github.com/Halfi/postmanq/common"
)

// автор таблиц, выводящий детализированные отчеты об ошибке
Expand Down
23 changes: 12 additions & 11 deletions analyser/rows.go
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
package analyser

import (
"github.com/byorty/clitable"
"regexp"
"time"

"github.com/byorty/clitable"
)

// отчет об ошибке
// Report отчет об ошибке
type Report struct {
// идентификатор
// Id идентификатор
Id int

// отправитель
// Envelope отправитель
Envelope string

// получатель
// Recipient получатель
Recipient string

// код ошибки
// Code код ошибки
Code int

// сообщение об ошибке
// Message сообщение об ошибке
Message string

// даты отправок
// CreatedDates даты отправок
CreatedDates []time.Time
}

// записывает отчет в таблицу
// Write записывает отчет в таблицу
func (r Report) Write(table *clitable.Table, valueRegex *regexp.Regexp) {
if valueRegex == nil ||
(valueRegex != nil &&
Expand All @@ -44,10 +45,10 @@ func (r Report) Write(table *clitable.Table, valueRegex *regexp.Regexp) {
}
}

// агрегированная строка
// AggregateRow агрегированная строка
type AggregateRow []int

// записывает строку в таблицу
// Write записывает строку в таблицу
func (a AggregateRow) Write(table *clitable.Table, valueRegex *regexp.Regexp) {
table.AddRow(a[0], a[1], a[2], a[3])
}
3 changes: 2 additions & 1 deletion analyser/writer.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package analyser

import (
"github.com/byorty/clitable"
"regexp"
"sort"

"github.com/byorty/clitable"
)

// автор таблиц
Expand Down
26 changes: 13 additions & 13 deletions application/abstract.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ var (
}
)

// базовое приложение
// Abstract базовое приложение
type Abstract struct {
// путь до конфигурационного файла
configFilename string
Expand All @@ -49,7 +49,7 @@ type Abstract struct {
CommonTimeout common.Timeout `yaml:"timeouts"`
}

// проверяет валидность пути к файлу с настройками
// IsValidConfigFilename проверяет валидность пути к файлу с настройками
func (a *Abstract) IsValidConfigFilename(filename string) bool {
return len(filename) > 0 && filename != common.ExampleConfigYaml
}
Expand Down Expand Up @@ -84,12 +84,12 @@ func (a Abstract) GetConfigFilename() string {
return a.configFilename
}

// устанавливает путь к файлу с настройками
// SetConfigFilename устанавливает путь к файлу с настройками
func (a *Abstract) SetConfigFilename(configFilename string) {
a.configFilename = configFilename
}

// устанавливает канал событий приложения
// SetEvents устанавливает канал событий приложения
func (a *Abstract) SetEvents(events chan *common.ApplicationEvent) {
a.events = events
}
Expand Down Expand Up @@ -125,7 +125,7 @@ func (a *Abstract) SendEvents(ev *common.ApplicationEvent) bool {
return true
}

// возвращает канал завершения приложения
// Done возвращает канал завершения приложения
func (a *Abstract) Done() <-chan bool {
return a.done
}
Expand All @@ -137,33 +137,33 @@ func (a *Abstract) Close() {
}
}

// возвращает сервисы, используемые приложением
// Services возвращает сервисы, используемые приложением
func (a *Abstract) Services() []interface{} {
return a.services
}

// инициализирует сервисы
// FireInit инициализирует сервисы
func (a *Abstract) FireInit(event *common.ApplicationEvent, abstractService interface{}) {
service := abstractService.(common.Service)
service.OnInit(event)
}

// инициализирует приложение
// Init инициализирует приложение
func (a *Abstract) Init(event *common.ApplicationEvent) {}

// запускает приложение
// Run запускает приложение
func (a *Abstract) Run() {}

// запускает приложение с аргументами
// RunWithArgs запускает приложение с аргументами
func (a *Abstract) RunWithArgs(args ...interface{}) {}

// запускает сервисы приложения
// FireRun запускает сервисы приложения
func (a *Abstract) FireRun(event *common.ApplicationEvent, abstractService interface{}) {}

// останавливает сервисы приложения
// FireFinish останавливает сервисы приложения
func (a *Abstract) FireFinish(event *common.ApplicationEvent, abstractService interface{}) {}

// возвращает таймауты приложения
// Timeout возвращает таймауты приложения
func (a *Abstract) Timeout() common.Timeout {
return a.CommonTimeout
}
Expand Down
8 changes: 4 additions & 4 deletions application/grep.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import (
"github.com/Halfi/postmanq/grep"
)

// приложение, ищущее логи по адресату или получателю
// Grep приложение, ищущее логи по адресату или получателю
type Grep struct {
Abstract
}

// создает новое приложение
// NewGrep создает новое приложение
func NewGrep() common.Application {
return new(Grep)
}

// запускает приложение с аргументами
// RunWithArgs запускает приложение с аргументами
func (g *Grep) RunWithArgs(args ...interface{}) {
common.App = g
g.services = []interface{}{
Expand All @@ -31,7 +31,7 @@ func (g *Grep) RunWithArgs(args ...interface{}) {
g.run(g, event)
}

// запускает сервисы приложения
// FireRun запускает сервисы приложения
func (g *Grep) FireRun(event *common.ApplicationEvent, abstractService interface{}) {
service := abstractService.(common.GrepService)
go service.OnGrep(event)
Expand Down
Loading

0 comments on commit a60ea33

Please sign in to comment.