Skip to content

Commit

Permalink
Merge pull request #15 from audetv/dev-2
Browse files Browse the repository at this point in the history
Dev 2
  • Loading branch information
audetv authored Apr 8, 2023
2 parents a452db3 + 69e4a2d commit 66d2e1b
Show file tree
Hide file tree
Showing 12 changed files with 335 additions and 32 deletions.
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
docker
.github
38 changes: 32 additions & 6 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,52 @@

name: Go

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
on: push
# push:
# branches: [ "main" ]
# pull_request:
# branches: [ "main" ]

env:
REGISTRY: ghcr.io/audetv
REGISTRY_HOST: ghcr.io
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

jobs:

build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Docker Login
uses: azure/docker-login@v1
with:
login-server: ${{ env.REGISTRY_HOST }}
username: audetv
password: ${{ github.token }}

- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.18
go-version: 1.20.3

- name: Build
run: go build -v ./...

- name: Test
run: go test -v ./...

- name: Inject branch slug
uses: rlespinasse/github-slug-action@v3.x

- name: Set image tag
run: echo "::set-env name=IMAGE_TAG::${{ env.GITHUB_REF_SLUG }}-${GITHUB_RUN_NUMBER}"

- name: Build
run: make docker-build

- name: Push
run: make push
if: ${{ github.ref == 'refs/heads/main' }}
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ build:
GOOS=windows GOARCH=386 go build -o ./dist/fct-parser.exe
GOOS=linux GOARCH=amd64 go build -o ./dist/fct-parser.linux.amd64

docker-build:
docker --log-level=debug build --pull --file=docker/Dockerfile --tag=${REGISTRY}/fct-search-parser:${IMAGE_TAG} .

push:
docker push ${REGISTRY}/fct-search-parser:${IMAGE_TAG}
30 changes: 22 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,33 @@ https://фкт-алтай.рф/qa/question/view-41574
----------------------

```
-a, --all сохранение всего списка обсуждений событий с начала СВОДД в отдельные файлы
-c, --current вывод в консоль адреса ссылки текущего активного обсуждения событий с начала СВОДД
-h, --html-tags вывод с сохранением html тегов в тексте
-j, --json вывод в формате json (по умолчанию "csv")
-i, --json-indent форматированный вывод json с отступами и переносами строк
-l, --list вывод в консоль списка адресов страниц с обсуждениями событий с начала СВОДД
-o, --output string путь сохранения файлов (default "./")
-u, --update загрузить конфиг файл для использования локально
-a, --all сохранение всего списка обсуждений событий с начала СВОДД в отдельные файлы
-c, --current вывод в консоль адреса ссылки текущего активного обсуждения событий с начала СВОДД
-e, --early сохранение предыдущей темы обсуждения
-h, --html-tags вывод с сохранение с html тегов
-j, --json вывод в формате json (по умолчанию "csv")
-i, --json-indent форматированный вывод json с отступами и переносами строк
-l, --list вывод в консоль списка адресов страниц с обсуждениями событий с начала СВОДД
-o, --output string путь сохранения файлов (default "./parsed-files")
-p, --page-count string разобрать указанное кол-во страниц с вопросами https://фкт-алтай.рф/qa/question?page=p (default "0")
-u, --update загрузить конфиг файл
```

### Примеры

Разбор предыдущей темы обсуждения в формат json с сохранением html тегов и сохранением полученного файла в папку ./site

```
./fct-parser -e -j -h ./site
```

Разбор указанного количества страниц вопросов со страницы «Список вопросов» в формате json с сохранением html тегов и сохранением полученных файлов в папку ./site

```
./fct-parser -p 2 -j -h -o ./site
```

Получение данных темы форума по-заданному url в формате csv с сохранением в файл qa-question-view-44707.csv

```
Expand Down
6 changes: 5 additions & 1 deletion config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,14 @@ func ReadConfig() Config {

func (c *Config) IsValidConfig() {
if len(c.List) == 0 {
log.Fatalf("%v", "неправильный формат конфиг файла, исправьте или удалите файл, для загрузки конфиг файла используйте опцию fct-parcer -u")
log.Fatalf("%v", "неправильный формат конфиг файла, исправьте или удалите файл, для загрузки конфиг файла используйте опцию fct-parser -u")
}
}

func (c *Config) PreviousDiscussion() Item {
return c.List[len(c.List)-2]
}

func (c *Config) CurrentDiscussion() Item {
return c.List[len(c.List)-1]
}
Expand Down
2 changes: 2 additions & 0 deletions dist/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
9 changes: 9 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "3.9"
services:
fct-parser:
image: ${REGISTRY}/fct-search-parser:${IMAGE_TAG}
container_name: fct-parser
volumes:
- parsed-files:/app/parsed-files
volumes:
parsed-files:
33 changes: 33 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM golang:latest AS build

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-w -extldflags "-static"' -o ./fct-parser .


# 2

FROM scratch

LABEL org.opencontainers.image.source = https://github.com/audetv/fct-parser

WORKDIR /app

COPY --from=build /app/fct-parser /app/fct-parser
COPY --from=build /app/parsed-files /app/parsed-files
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Europe/Moscow

EXPOSE 8080

# Create a volume for data storage
VOLUME /app/parsed-files

CMD ["./fct-parser", "-j", "-h"]
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ module github.com/audetv/fct-parser
go 1.19

require (
github.com/avast/retry-go v3.0.0+incompatible
github.com/gosimple/slug v1.13.1
github.com/spf13/pflag v1.0.5
golang.org/x/net v0.1.0
)

require (
github.com/gosimple/slug v1.13.1 // indirect
github.com/gosimple/unidecode v1.0.1 // indirect
github.com/stretchr/testify v1.8.2 // indirect
)
18 changes: 18 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0=
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gosimple/slug v1.13.1 h1:bQ+kpX9Qa6tHRaK+fZR0A0M2Kd7Pa5eHPPsb1JpHD+Q=
github.com/gosimple/slug v1.13.1/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading

0 comments on commit 66d2e1b

Please sign in to comment.