You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.3 KiB
230 lines
6.3 KiB
.DEFAULT_GOAL := help |
|
|
|
ifndef TAG |
|
TAG=alpine |
|
endif |
|
|
|
PORT ?= 8080 |
|
|
|
ifdef NO_DOCKER |
|
PHP = $(shell which php) |
|
else |
|
PHP = docker run \ |
|
--rm \ |
|
--volume $(shell pwd):/var/www/FreshRSS:z \ |
|
--env FRESHRSS_ENV=development \ |
|
--name freshrss-php-cli \ |
|
freshrss/freshrss:$(TAG) \ |
|
php |
|
endif |
|
|
|
ifeq ($(findstring alpine,$(TAG)),alpine) |
|
DOCKERFILE=Dockerfile-Alpine |
|
else ifeq ($(findstring arm,$(TAG)),arm) |
|
DOCKERFILE=Dockerfile-QEMU-ARM |
|
else |
|
DOCKERFILE=Dockerfile |
|
endif |
|
|
|
############ |
|
## Docker ## |
|
############ |
|
.PHONY: build |
|
build: ## Build a Docker image |
|
docker build \ |
|
--pull \ |
|
--tag freshrss/freshrss:$(TAG) \ |
|
--file Docker/$(DOCKERFILE) . |
|
|
|
.PHONY: start |
|
start: ## Start the development environment (use Docker) |
|
$(foreach extension,$(extensions),$(eval volumes=$(volumes) --volume $(extension):/var/www/FreshRSS/extensions/$(notdir $(extension)):z)) |
|
docker run \ |
|
--rm \ |
|
--volume $(shell pwd):/var/www/FreshRSS:z \ |
|
$(volumes) \ |
|
--publish $(PORT):80 \ |
|
--env FRESHRSS_ENV=development \ |
|
--name freshrss-dev \ |
|
freshrss/freshrss:$(TAG) |
|
|
|
.PHONY: stop |
|
stop: ## Stop FreshRSS container if any |
|
docker stop freshrss-dev |
|
|
|
###################### |
|
## Tests and linter ## |
|
###################### |
|
.PHONY: test |
|
test: bin/phpunit ## Run the test suite |
|
$(PHP) ./bin/phpunit --bootstrap ./tests/bootstrap.php ./tests |
|
|
|
.PHONY: lint |
|
lint: bin/phpcs ## Run the linter on the PHP files |
|
$(PHP) ./bin/phpcs . -p -s |
|
|
|
.PHONY: lint-fix |
|
lint-fix: bin/phpcbf ## Fix the errors detected by the linter |
|
$(PHP) ./bin/phpcbf . -p -s |
|
|
|
bin/composer: |
|
mkdir -p bin/ |
|
wget 'https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer' -O - -q | php -- --quiet --install-dir='./bin/' --filename='composer' |
|
|
|
bin/phpunit: |
|
mkdir -p bin/ |
|
wget -O bin/phpunit 'https://phar.phpunit.de/phpunit-9.5.20.phar' |
|
echo '6becad2da5c37f5ad101cc665ef05a2f1a6a45d2427c8edcc74f72c92fb1e05a bin/phpunit' | sha256sum -c - || rm bin/phpunit |
|
|
|
bin/phpcs: |
|
mkdir -p bin/ |
|
wget -O bin/phpcs 'https://github.com/squizlabs/PHP_CodeSniffer/releases/download/3.7.1/phpcs.phar' |
|
echo '7a14323a14af9f58302d15442492ee1076a8cd72c018a816cb44965bf3a9b015 bin/phpcs' | sha256sum -c - || rm bin/phpcs |
|
|
|
bin/phpcbf: |
|
mkdir -p bin/ |
|
wget -O bin/phpcbf 'https://github.com/squizlabs/PHP_CodeSniffer/releases/download/3.7.1/phpcbf.phar' |
|
echo 'c93c0e83cbda21c21f849ccf0f4b42979d20004a5a6172ed0ea270eca7ae6fa8 bin/phpcbf' | sha256sum -c - || rm bin/phpcbf |
|
|
|
bin/typos: |
|
mkdir -p bin/ |
|
cd bin ; \ |
|
wget -q 'https://github.com/crate-ci/typos/releases/download/v1.10.1/typos-v1.10.1-x86_64-unknown-linux-musl.tar.gz' && \ |
|
tar -xvf *.tar.gz './typos' && \ |
|
chmod +x typos && \ |
|
rm *.tar.gz ; \ |
|
cd .. |
|
|
|
node_modules/.bin/eslint: |
|
npm install |
|
|
|
vendor/bin/phpstan: bin/composer |
|
bin/composer install --prefer-dist --no-progress |
|
|
|
########## |
|
## I18N ## |
|
########## |
|
.PHONY: i18n-format |
|
i18n-format: ## Format I18N files |
|
@$(PHP) ./cli/manipulate.translation.php -a format |
|
@echo Files formatted. |
|
|
|
.PHONY: i18n-add-language |
|
i18n-add-language: ## Add a new supported language |
|
ifndef lang |
|
$(error To add a new language, you need to provide one in the "lang" variable) |
|
endif |
|
$(PHP) ./cli/manipulate.translation.php -a add -l $(lang) -o $(ref) |
|
@echo Language added. |
|
|
|
.PHONY: i18n-add-key |
|
i18n-add-key: ## Add a translation key to all supported languages |
|
ifndef key |
|
$(error To add a key, you need to provide one in the "key" variable) |
|
endif |
|
ifndef value |
|
$(error To add a key, you need to provide its value in the "value" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a add -k $(key) -v "$(value)" |
|
@echo Key added. |
|
|
|
.PHONY: i18n-remove-key |
|
i18n-remove-key: ## Remove a translation key from all supported languages |
|
ifndef key |
|
$(error To remove a key, you need to provide one in the "key" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a delete -k $(key) |
|
@echo Key removed. |
|
|
|
.PHONY: i18n-update-key |
|
i18n-update-key: ## Update a translation key in all supported languages |
|
ifndef key |
|
$(error To update a key, you need to provide one in the "key" variable) |
|
endif |
|
ifndef value |
|
$(error To update a key, you need to provide its value in the "value" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a add -k $(key) -v "$(value)" -l en |
|
@echo Key updated. |
|
|
|
.PHONY: i18n-ignore-key |
|
i18n-ignore-key: ## Ignore a translation key for the selected language |
|
ifndef lang |
|
$(error To ignore a key, you need to provide a language in the "lang" variable) |
|
endif |
|
ifndef key |
|
$(error To ignore a key, you need to provide one in the "key" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a ignore -k $(key) -l $(lang) |
|
@echo Key ignored. |
|
|
|
.PHONY: i18n-ignore-unmodified-keys |
|
i18n-ignore-unmodified-keys: ## Ignore all unmodified translation keys for the selected language |
|
ifndef lang |
|
$(error To ignore unmodified keys, you need to provide a language in the "lang" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a ignore_unmodified -l $(lang) |
|
@echo Unmodified keys ignored. |
|
|
|
.PHONY: i18n-key-exists |
|
i18n-key-exists: ## Check if a translation key exists |
|
ifndef key |
|
$(error To check if a key exists, you need to provide one in the "key" variable) |
|
endif |
|
@$(PHP) ./cli/manipulate.translation.php -a exist -k $(key) |
|
|
|
########### |
|
## TOOLS ## |
|
########### |
|
.PHONY: rtl |
|
rtl: ## Generate RTL CSS files |
|
rtlcss -d p/themes/ && find p/themes/ -type f -name '*.rtl.rtl.css' -delete |
|
|
|
.PHONY: pot |
|
pot: ## Generate POT templates for docs |
|
cd docs && ../cli/translation-update.sh |
|
|
|
.PHONY: refresh |
|
refresh: ## Refresh feeds by fetching new messages |
|
@$(PHP) ./app/actualize_script.php |
|
|
|
############################### |
|
## New commands aligned on CI # |
|
## Work in progress # |
|
############################### |
|
|
|
# TODO: Add composer install |
|
.PHONY: composer-test |
|
composer-test: vendor/bin/phpstan |
|
bin/composer run-script test |
|
|
|
.PHONY: composer-fix |
|
composer-fix: |
|
bin/composer run-script fix |
|
|
|
.PHONY: npm-test |
|
npm-test: node_modules/.bin/eslint |
|
npm test |
|
|
|
.PHONY: npm-fix |
|
npm-fix: node_modules/.bin/eslint |
|
npm run fix |
|
|
|
.PHONY: typos-test |
|
typos-test: bin/typos |
|
bin/typos |
|
|
|
# TODO: Add shellcheck, shfmt, hadolint |
|
.PHONY: test-all |
|
test-all: composer-test npm-test typos-test |
|
|
|
.PHONY: fix-all |
|
fix-all: composer-fix npm-fix |
|
|
|
|
|
########## |
|
## HELP ## |
|
########## |
|
.PHONY: help |
|
help: |
|
@grep --extended-regexp '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
|