Skip to content

Commit

Permalink
Finish 0.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed Jun 6, 2018
2 parents 019b519 + 1716f66 commit f29fd01
Show file tree
Hide file tree
Showing 38 changed files with 4,530 additions and 1,205 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.xml
*.ospx


coverage/*

.vscode/*
37 changes: 26 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
sudo: required
language: generic

notifications:
email: false
env:
global:
- CHANNEL=dev
- PACKAGE_NAME=configor
matrix:
- OSCRIPT_VERSION=1_0_19
- OSCRIPT_VERSION=1_0_20
- OSCRIPT_VERSION=night-build
matrix:
allow_failures:
- env: OSCRIPT_VERSION=night-build

services:
- docker

addons:
sonarqube: true

jdk:
- oraclejdk8

before_install:
# Load cached docker images
- if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi
Expand All @@ -22,21 +37,21 @@ before_cache:
install:
- docker pull evilbeaver/onescript:1.0.19

script:
- docker version
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
- grep 'Результат прогона тестов <Да>' /tmp/test.log
after_success:
- bash <(curl -s https://codecov.io/bash) -f coverage/coverage.json
- ./sonar-qube.sh

cache:
directories:
- '$HOME/.m2/repository'
- '$HOME/.sonar/cache'
- '$HOME/docker'
jobs:
include:
- stage: Тестирование
script:
- docker version
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
- grep 'Результат прогона тестов <Да>' /tmp/test.log
after_success:
- bash <(curl -s https://codecov.io/bash)

- stage: Сборка и публикация github & hub.oscript.io
script: skip
before_deploy:
Expand All @@ -45,19 +60,19 @@ jobs:
- provider: releases
api_key: "$GITHUB_OAUTH_TOKEN"
file_glob: true
file: configor*.ospx
file: $PACKAGE_NAME*.ospx
skip_cleanup: true
on:
branch: master
tags: true
- provider: script
skip_cleanup: true
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./configor-*.ospx; exit'
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
on:
branch: develop
- provider: script
skip_cleanup: true
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./configor-*.ospx; exit'
script: docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
on:
branch: master
tags: true
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
### 0.5.0

#### Новое
* #7 Реализован конструктор параметров
* Документация по библиотеки
* Добавлены зависимости от `reflector`

#### Исправления
* Исправление замечаний Sonar

#### Изменения API
* Убран модуль `РаботаСПраметрами`

### 0.2.1

#### Новое
* Запуск тестирования на travis-ci
* Увеличение требований к oscript. Минимальная 1.0.19

#### Исправления
* Исправление подключения к библиотеки

### 0.2.0

#### Новое
Разработана основная функиональность.
Классы:
- МенеджерПарамтров
- РаботаСПраметрами

Провайдеры настроек:
- json
- yaml (заглушка)

Возможность задать своего провайдера настроек

п.с. Версия содержит ошибку, не импортируется как библиотека. Используйте версию 0.2.1
107 changes: 63 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,44 @@
[![Открытый чат проекта https://gitter.im/EvilBeaver/oscript-library](https://badges.gitter.im/khorevaa/configor.png)](https://gitter.im/EvilBeaver/oscript-library)

[![Build Status](https://travis-ci.org/khorevaa/configor.svg?branch=master)](https://travis-ci.org/khorevaa/configor)
[![Coverage Status](https://coveralls.io/repos/github/khorevaa/configor/badge.svg?branch=master)](https://coveralls.io/github/khorevaa/configor?branch=master)
[![Coverage Status](https://sonar.silverbulleters.org/api/badges/measure?key=opensource-configor&metric=coverage&blinking=true)](https://coveralls.io/github/khorevaa/configor?branch=master)

# Библиотека для работы с конфигурационными файлами в формате json, yaml

Данная библиотека позволяет работать с конфигурационными файлами с помощью предварительного описания требуемой конфигурации.
А так же без опписания. Получение параметров по ключам вида `Настройки.Глобальные.НастройкиПрокси.Сервер`.
А так же без описания. Получение параметров по ключам вида `Настройки.Глобальные.НастройкиПрокси.Сервер`.
Обеспечивает подстановку значение друг в друга и чтение вложенных файлов настроек

## Мотивация

Сравнительная таблица

Библиотека [ReadParams](https://github.com/Stepa86/ReadParams)
библиотека [Params](https://github.com/artbear/params)

| | *Configor* | ReadParams | Params |
|--------------------------------------------------------------------------------------------------------------------------------------|------------------|------------|--------|
| Чтение файлов в формате json ||||
| Чтение файлов в формате yaml/yml | ✓ (в разработке) | | |
| Чтение файлов в произвольном формате (свой класс чтения) || | |
| Выполнение подстановок при чтении ||||
| Чтение переменных окружения | |||
| Чтение параметров командной строки | |||
| Запись параметров в прочитанный файл | ✓ (в разработке) | | |
| Выгрузка результата чтения в класс параметров || | |
| Поддержка деревовидных структур параметров `Настройки.Глобальные.Пользователь` и `Настройки.Локальные.Пользователь` разные параметры || | |
| Доступ к вложенным параметра в формате `Настройки.Глобальные` || | |
Библиотека от @Stepa86 [ReadParams](https://github.com/Stepa86/ReadParams)

Библиотека от @artbear [Params](https://github.com/artbear/params)


| | *Configor* | ReadParams | Params |
|------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|------------|--------|
| Чтение файлов в формате json ||||
| Чтение файлов в формате yaml/yml || | |
| Чтение файлов в произвольном формате (свой провайдер чтения) || | |
| Выполнение подстановок при чтении ||||
| Чтение переменных окружения | (через произвольный провайдер) |||
| Чтение параметров командной строки | (через произвольный провайдер) | ||
| Запись параметров в прочитанный файл | (в разработке) | | |
| Встроенный конструктор параметров || | |
| Выгрузка результата чтения в класс параметров || | |
| Поддержка деревовидных структур параметров `Настройки.НастройкиПрокси.Пользователь` и `Настройки.НастройкиПрокси.Сервара.0.АдресСервера` || | |
| Доступ к вложенным параметра (в том числе к элементам массива) в формате `ДополнительныеХабы.0.Сервер, ДополнительныеХабы.1.Сервер` || | |
| Авто приоритеты - настройки в коде, в файле, в окруж., ком.строке | ✓ (на уровне приоритетов провайдеров) | ||
| Безопасный доступ к параметрам (возвращает значение по умолчанию или неопределенно) ||||

## Пример работы:

* Чтение параметров из файла
```bsl
// Пример файла настроек
//{
// 'Настройки': {
Expand All @@ -47,10 +52,10 @@
// "Порт": "8080"
// }
// }
//
//
// }
//}
МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.УстановитьФайлПараметров("Путь/К/Файлу");
МенеджерПараметров.Прочитать();
Expand All @@ -61,36 +66,50 @@
```

* Создание объекта через модуль "РаботаСПараметрами"
```bsl
МенеджерПараметров = РаботаСПараметрами.НовыйМенеджерПараметров("config", "./configs/", "json")
МенеджерПараметров.Прочитать();
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер")
* Чтения параметров через конструктор параметров

Сообщить(ПроксиСервер);
Класс "ПараметрыПриложения"
```bsl
Перем мПараметры;
Функция Параметры() Экспорт
Возврат мПараметры;
КонецФункции
Процедура УстановитьПараметры(Знач ВходящиеПараметры) Экспорт
мПараметры = ВходящиеПараметры;
КонецПроцедуры
Процедура ОписаниеПараметров(Знач Конструктор) Экспорт
НастройкиПрокси = Конструктор.НовыеПараметры("ПараметрСоответствиеСтруктуры")
.ПолеСтрока("Сервер")
.ПолеСтрока("Порт")
;
Настройки = Конструктор.НовыеПараметры("Настройки")
.ПолеОбъект("НастройкиПрокси", НастройкиПрокси)
;
Конструктор.ПолеСтрока("Версия version")
.ПолеОбъект("Настройки settings", Настройки)
;
КонецПроцедуры
```

* Выгрузка результата чтения параметров в специальный класс
```bsl
// Класс/модуль <ПараметрыПриложения> реализует следующие методы:
// Обязательные:
// Функция ПолучитьПараметры() - возвращает Структуру
// Процедура УстановитьПараметры(Параметры) - Устанавливает структуру
//
// Необязательные:
// Процедура ПриУстановкиЗначенияПараметра(ПолныйПутьКлюча, ИмяКлюча, Значение, СтандартнаяОбработка)
МенеджерПараметров = РаботаСПараметрами.НовыйМенеджерПараметров("config", "./configs/", "json", ПараметрыПриложения)
МенеджерПараметров = Новы йМенеджерПараметров()
МенеджерПараметров.КонструкторПараметров(ПараметрыПриложения);
МенеджерПараметров.Прочитать();
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер")
ПроксиСерверИзПараметровПриложения = ПараметрыПриложения.ПолучитьПараметры().Настройки.Глобальные.НастройкиПрокси.Сервер;
Сообщить(ПроксиСервер);
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.НастройкиПрокси.Сервер")
ПроксиСерверИзПараметровПриложения = ПараметрыПриложения.Параметры().Настройки.НастройкиПрокси.Сервер;
Сообщить(ПроксиСерверИзПараметровПриложения);
```
Expand Down Expand Up @@ -124,4 +143,4 @@ opm install configor

## Лицензия

Смотри файл `LICENSE`.
Смотри файл `LICENSE`.
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

Loading

0 comments on commit f29fd01

Please sign in to comment.