diff --git a/README.md b/README.md index 32ea6d6..db96a4a 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,34 @@ Visualization and analysis of your git repository data ([demo](https://assayo.on - forecast of rework time; - forecast cost; +### Table of contents + +- [How to quickly view the number of commits?](#link-1) +- [How to concat authors?](#link-2) +- [How to export data from git?](#link-3) + - [For online viewing](#link-4) + - [For offline viewing](#link-5) +- [How to view the report?](#link-6) + - [Online](#headers) + - [Offline](#headers) +- [How to rebuild the report build?](#link-) +- [How to view a report on a group of microservices?](#link-) +- [How to brand the interface?](#link-) +- [How to sign commits?](#link-) +- [How to add checking for commit message?](#link-) + - [Use file commit-msg](#link-) + - [Use package pre-commit](#link-) +- [How to automate data collection?](#link-) + - [With backend](#link-) + - [Without backend](#link-) +- [DevOps (CI/CD)](#link-) + - [Public server](#link-) + - [Private server](#link-) + - [How to update the Docker image?](#link-) +- [How to add or edit a translation?](#link-) +- [RoadMap](#link-) +- [Contacts](#link-) + ### How to quickly view the number of commits? In the root directory of your project, run: @@ -68,12 +96,13 @@ This file contains data for show a report. The difference between the online and offline format is the presence of a wrapper for strings. The offline format will be pulled up like a `js` file if you just opened `/build/index.html ` -### How to view the report online? +### How to view the report? +#### Online - go to the [website](https://assayo.online/); - click the “[Demo](https://assayo.online/demo)” button; - drag the `log.txt` file into the browser window; -### How to view the report offline? +#### Offline - download this repository; - drag the `log.txt` file to the `/build` folder; - run `/build/index.html`; @@ -109,8 +138,40 @@ JIRA-1234 feat(profile): Added avatar for user - feature `(profile - new page on site or new function, use one (two) short wordor an abbreviation)` - what problem were solved `(Added avatar for user)` +### How to add checking for commit message? + +#### Use file `commit-msg` + +1. Create file `commit-msg` in folder `.git/hooks/` +2. Add this text in file: +``` +#!/usr/bin/env bash + +if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then + echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2 + exit 1 +fi +``` +#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit) + +1. Add in file `package.json` property `commit-msg`: +``` + ... + "commit-msg": { + "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})", + "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages" + }, + ... +``` +2. Run command `npm install pre-commit` + + ### How to automate data collection? +#### With backend + +- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler); + #### Without backend - create a clone of the repository you need; - copy the `build` folder to the root; diff --git a/documents/RU.md b/documents/RU.md index 77abb12..cf4ce55 100644 --- a/documents/RU.md +++ b/documents/RU.md @@ -32,12 +32,42 @@ - прогноз времени доработок; - прогноз стоимости; +### Содержание + +- [Как быстро посмотреть количество коммитов?](#link-1) +- [Как объединить авторов?](#link-2) +- [Как выгрузить данные из git?](#link-3) + - [Для онлайн просмотра](#link-4) + - [Для офлайн просмотра](#link-5) +- [Как посмотреть отчёт?](#link-6) + - [Онлайн](#headers) + - [Офлайн](#headers) +- [Как пересобрать билд отчёта?](#headers) +- [Как посмотреть отчёт по группе микросервисов?](#headers) +- [Как брендировать интерфейс?](#headers) +- [Как подписывать коммиты?](#headers) +- [Как добавить проверку текста коммита?](#headers) + - [Используя файл commit-msg](#headers) + - [Используя пакет pre-commit](#headers) +- [Как автоматизировать сбор данных?](#headers) + - [С бекендом](#headers) + - [Без бекенда](#headers) +- [DevOps (CI/CD)](#headers) + - [Публичный сервер](#headers) + - [Приватный сервер](#headers) + - [Обновление Docker-образа](#headers) +- [Как добавить или отредактировать перевод?](#headers) +- [Дорожная карта](#headers) +- [Пожелания, предложения, замечания](#headers) + + ### Как быстро посмотреть количество коммитов? В корневой директории вашего проекта выполнить: ``` git shortlog -s -n -e ``` + ### Как объединить авторов? В корневой директории вашего проекта нужно создать файл `.mailmap`. Пример содержания файла: @@ -49,13 +79,16 @@ Alex B ``` Подробнее про формат этого файла можно прочитать [тут](https://git-scm.com/docs/gitmailmap). + ### Как выгрузить данные из git? + #### Для онлайн просмотра В корневой директории вашего проекта выполнить: ``` git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt ``` + #### Для офлайн просмотра ``` @@ -66,13 +99,14 @@ Git создаст файл `log.txt`. Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как `js` файл если вы просто открыли `/build/index.html` -### Как посмотреть отчёт онлайн? +### Как посмотреть отчёт? +#### Онлайн - Перейти на [сайт](https://assayo.online/) - Нажать кнопку «[Демо](https://assayo.online/demo)» - Перетащить файл `log.txt` в окно браузера -### Как посмотреть отчёт офлайн? +#### Офлайн - Скачать этот репозиторий - Перетащить файл `log.txt` в папку `/build` - Запустить `/build/index.html` @@ -108,8 +142,39 @@ JIRA-1234 feat(profile): Added avatar for user - фича `(profile - раздел сайта, страница или новый функционал, одним словом)` - какую проблему решали `(Added avatar for user)` +### Как добавить проверку текста коммита? + +#### Используя файл `commit-msg` + +1. Создайте файл `commit-msg` в папке `.git/hooks/` +2. Добавьте в файл следующий текст: +``` +#!/usr/bin/env bash + +if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then + echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2 + exit 1 +fi +``` +#### Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit) + +1. Добавьте в файл `package.json` блок `commit-msg`: +``` + ... + "commit-msg": { + "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})", + "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages" + }, + ... +``` +2. Выполните команду `npm install pre-commit` + ### Как автоматизировать сбор данных? +#### С бекендом + +- используйте модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler); + #### Без бекенда - создайте клон нужного вам репозитория; - скопируйте в корень папку `build`; diff --git a/src/ts/helpers/i18n.ts b/src/ts/helpers/i18n.ts index b0d3baa..4aaf299 100644 --- a/src/ts/helpers/i18n.ts +++ b/src/ts/helpers/i18n.ts @@ -33,22 +33,29 @@ function getTranslationWrapper(translation: string) { }; } -export default function initializationI18n(defaultLanguage?: string) { +const translations = { + de: getTranslationWrapper(de), + en: getTranslationWrapper(en), + es: getTranslationWrapper(es), + fr: getTranslationWrapper(fr), + ja: getTranslationWrapper(ja), + pt: getTranslationWrapper(pt), + ru: getTranslationWrapper(ru), + zh: getTranslationWrapper(zh), +}; + +const defaultLanguage = navigator.languages + .filter((language) => language.length === 2 && translations[language]) + .shift() || 'en'; + +export default function initializationI18n(userLanguage?: string) { i18next.use(initReactI18next).init({ - lng: defaultLanguage || 'ru', // if you're using a language detector, do not define the lng option + lng: userLanguage || defaultLanguage || 'ru', // if you're using a language detector, do not define the lng option debug: false, - resources: { - de: getTranslationWrapper(de), - en: getTranslationWrapper(en), - es: getTranslationWrapper(es), - fr: getTranslationWrapper(fr), - ja: getTranslationWrapper(ja), - pt: getTranslationWrapper(pt), - ru: getTranslationWrapper(ru), - zh: getTranslationWrapper(zh), - }, + resources: translations, // if you see an error like: "Argument of type 'DefaultTFuncReturn' is not assignable to parameter of type xyz" // set returnNull to false (and also in the i18next.d.ts options) // returnNull: false, }); } + diff --git a/src/ts/pages/Settings/helpers/getEmptySettings.ts b/src/ts/pages/Settings/helpers/getEmptySettings.ts index 4672f3c..e46ab0e 100644 --- a/src/ts/pages/Settings/helpers/getEmptySettings.ts +++ b/src/ts/pages/Settings/helpers/getEmptySettings.ts @@ -37,7 +37,6 @@ export function getNewEmployeesSettings( ], }; } - export default function getEmptySettings(): IUserSetting { return { version: 1,