Skip to content

Commit

Permalink
Merge branch 'develop' into issues-10
Browse files Browse the repository at this point in the history
  • Loading branch information
thedemoncat committed Mar 15, 2021
2 parents 4fe272d + 2a785b7 commit 9ad66fc
Show file tree
Hide file tree
Showing 13 changed files with 461 additions and 139 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
*.exe
*.gz
*.zip
*.deb
*.tar.gz
oneget

logs
downloads
dist
.idea
*.logs

*.d1c
pack

60 changes: 59 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,77 @@
[![Powered By: GoReleaser](https://img.shields.io/badge/powered%20by-goreleaser-green.svg?style=for-the-badge)](https://github.com/goreleaser)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=for-the-badge)](https://conventionalcommits.org)

### Команда `get`

Использование:

```shell
export ONEC_USERNAME=user
export $ONEC_PASSWORD=password
oneget get --path ./tmp/dist/ --nick platform83 --version 8.3.18.1334 --filter="deb64_.*.tar.gz$"

# or
oneget --user user --pwd password get --path ./tmp/dist/ --nick platform83 --version 8.3.18.1334 --filter="deb64_.*.tar.gz$"

```


## Запуск в докере

```shell
docker run -v $(pwd):/tmp/dist demoncat/oneget \
--user $ONEC_USERNAME \
--pwd $ONEC_PASSWORD \
--path /tmp/dist/
--path /tmp/dist/ \
--nicks platform83 \
--version-filter 8.3.16.1876 \
--distrib-filter 'deb64.tar.gz$'
```

## Настройка логов

### Через файл настройки
Создать рядом с приложением файл `logos.yaml` с содержимым

```yaml
appenders:
console:
- name: CONSOLE
target: stdout
encoder:
console:

rolling_file:
- name: FILE
file_name: ./logs/oneget.log
max_size: 100
encoder:
json:
loggers:
root:
level: info
appender_refs:
- CONSOLE
logger:
- name: "github.com/v8platform/oneget"
appender_refs:
- CONSOLE
- FILE
level: debug

```

### Через переменные окружения
```shell
export LOGOS_CONFIG="appenders.rolling_file.0.name=FILE;
appenders.rolling_file.0.file_name=./logs/oneget.log;
appenders.rolling_file.0.max_size=100;
appenders.rolling_file.0.encoder.json;
loggers.logger.0.level=debug;
loggers.logger.0.name=github.com/v8platform/oneget;
loggers.logger.0.appender_refs.0=CONSOLE;
loggers.logger.0.appender_refs.1=FILE;"
```
#TODO

Идея и часть кода взята из [этого](https://github.com/korableg/Downloader1C) проекта
16 changes: 16 additions & 0 deletions cmd/commands.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cmd

import (
"github.com/urfave/cli/v2"
)

var Commands = []Command{

&getCmd{},
//&listCmd{},

}

type Command interface {
Cmd() *cli.Command
}
115 changes: 115 additions & 0 deletions cmd/get.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package cmd

import (
"github.com/khorevaa/logos"
"time"

"github.com/urfave/cli/v2"
dloader "github.com/v8platform/oneget/downloader"
)

var log = logos.New("github.com/v8platform/oneget").Sugar()

type getCmd struct {
User string
Password string
BaseDir string
StartDate time.Time
Type string
Version string
Filter string
}

func (c *getCmd) run(ctx *cli.Context) error {

c.StartDate = time.Time{}

startDate := ctx.Timestamp("start-date")

if startDate != nil {
c.StartDate = *startDate
}
c.User = ctx.String("user")
c.Password = ctx.String("pwd")

if ctx.Bool("debug") {
logos.SetLevel("github.com/v8platform/oneget", logos.DebugLevel)
}

downloaderConfig := dloader.Config{
Login: c.User,
Password: c.Password,
BasePath: c.BaseDir,
StartDate: c.StartDate,
Nicks: map[string]bool{
c.Type: true,
},
VersionFilter: c.Version,
DistribFilter: c.Filter,
}

downloader := dloader.New(downloaderConfig)

files, err := downloader.Get()
if err != nil {
return err
}
log.Infof("Downloaded <%d> files", len(files))

return nil
}

func (c *getCmd) Cmd() *cli.Command {

cmd := &cli.Command{
Name: "get",
Usage: "Получение релиза сайта релизов 1С",
Flags: c.Flags(),
Action: c.run,
}

return cmd
}

func (c *getCmd) Flags() []cli.Flag {
return []cli.Flag{

&cli.StringFlag{
Destination: &c.Type,
EnvVars: []string{"ONEGET_NICKS"},
Name: "nick",
Usage: `Имена приложений (например \"platform83 или EnterpriseERP20\"),
подсмотреть можно в адресе, ссылки имею вид например https://releases.1c.ru/project/EnterpriseERP20`,
Required: true,
},
&cli.StringFlag{
Destination: &c.Version,
EnvVars: []string{"ONEGET_NICKS_VERSION"},
Name: "version",
Usage: "Фильтр версий по номеру",
Required: true,
},
&cli.TimestampFlag{
DefaultText: time.Now().Format("2006-01-02"),
Layout: "2006-01-02",
EnvVars: []string{"ONEGET_START_DATE"},
Name: "start-date",
Usage: "Фильтр версий по номеру",
},
&cli.StringFlag{
Destination: &c.Filter,
EnvVars: []string{"ONEGET_NICKS_FILTER"},
Aliases: []string{"filter"},
Name: "distrib-filter",
Usage: "Дополнительный фильтр пакетов (регулярное выражение)",
},
&cli.StringFlag{
Destination: &c.BaseDir,
Name: "path",
Aliases: []string{"out"},
Value: "./downloads",
DefaultText: "./downloads",
Usage: "Путь к каталогу выгрузки",
},
}
}
21 changes: 6 additions & 15 deletions common.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package main

import (
"log"
"os"
"strings"
"time"
)
Expand All @@ -12,15 +10,8 @@ func handleError(err error, msg string) {
log.Fatalf("%s: %s", msg, err)
}
}
func LogFile(logPath string) (*os.File, error) {
logFile, err := os.OpenFile(logPath, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0660)
if err != nil {
return nil, err
}
return logFile, err
}

func Nicks(nicksRaw string) (map[string]bool) {
func Nicks(nicksRaw string) map[string]bool {
var nicksM map[string]bool
if len(nicksRaw) > 0 {
nicksS := strings.Split(nicksRaw, ",")
Expand All @@ -34,13 +25,13 @@ func Nicks(nicksRaw string) (map[string]bool) {
return nicksM
}

func StartDate(startDateRaw string) (time.Time) {
func StartDate(startDateRaw string) time.Time {
if startDateRaw == "" {
return time.Unix(0, 0)
}
startTime, err := time.Parse("02.01.2006", startDateRaw)
if err != nil{
startTime, err := time.Parse("02.01.2006", startDateRaw)
if err != nil {
handleError(err, "Ошибка разбора даты начала")
}
return startTime
}
return startTime
}
Loading

0 comments on commit 9ad66fc

Please sign in to comment.