Improve Makefile: color output, clean commands, dependency checks (#2672)
* feat: Add Gemma 2 to Groq model list (#2586) Add gemma2 to groq_constants.py * Improve Makefile: color output, clean commands, dependency checks - Add colored output to 'make help' for various shells. - Add 'clean_all', 'clean_python_cache', and 'clean_npm_cache' commands. - Check for installed tools: 'poetry', 'docker', 'pipx', and 'npm'. * Added success message at the end of the check_tools target to indicate all required tools are installed.
This commit is contained in:
parent
5ef84f7911
commit
e56a1c1e10
2 changed files with 42 additions and 61 deletions
101
Makefile
101
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
.PHONY: all init format lint build build_frontend install_frontend run_frontend run_backend dev help tests coverage
|
||||
.PHONY: all init format lint build build_frontend install_frontend run_frontend run_backend dev help tests coverage clean_python_cache clean_npm_cache clean_all
|
||||
|
||||
all: help
|
||||
# Configurations
|
||||
VERSION=$(shell grep "^version" pyproject.toml | sed 's/.*\"\(.*\)\"$$/\1/')
|
||||
DOCKERFILE=docker/build_and_push.Dockerfile
|
||||
DOCKERFILE_BACKEND=docker/build_and_push_backend.Dockerfile
|
||||
|
|
@ -15,21 +15,37 @@ open_browser ?= true
|
|||
path = src/backend/base/langflow/frontend
|
||||
workers ?= 1
|
||||
|
||||
all: help
|
||||
|
||||
clean_python_cache:
|
||||
@echo 'Cleaning Python cache...'
|
||||
find . -type d -name '__pycache__' -exec rm -r {} +
|
||||
find . -type f -name '*.py[cod]' -exec rm -f {} +
|
||||
find . -type f -name '*~' -exec rm -f {} +
|
||||
find . -type f -name '.*~' -exec rm -f {} +
|
||||
@echo 'Python cache cleaned.'
|
||||
|
||||
clean_npm_cache:
|
||||
@echo 'Cleaning npm cache...'
|
||||
cd src/frontend && npm cache clean --force
|
||||
rm -rf src/frontend/node_modules
|
||||
rm -f src/frontend/package-lock.json
|
||||
@echo 'NPM cache cleaned.'
|
||||
|
||||
clean_all: clean_python_cache clean_npm_cache
|
||||
@echo 'All caches cleaned.'
|
||||
|
||||
codespell:
|
||||
@poetry install --with spelling
|
||||
poetry run codespell --toml pyproject.toml
|
||||
|
||||
|
||||
fix_codespell:
|
||||
@poetry install --with spelling
|
||||
poetry run codespell --toml pyproject.toml --write
|
||||
|
||||
|
||||
setup_poetry:
|
||||
pipx install poetry
|
||||
|
||||
|
||||
add:
|
||||
@echo 'Adding dependencies'
|
||||
ifdef devel
|
||||
|
|
@ -44,19 +60,16 @@ ifdef base
|
|||
cd src/backend/base && poetry add $(base)
|
||||
endif
|
||||
|
||||
|
||||
init:
|
||||
init: check_tools ## initialize the project
|
||||
@echo 'Installing backend dependencies'
|
||||
make install_backend
|
||||
@echo 'Installing frontend dependencies'
|
||||
make install_frontend
|
||||
|
||||
|
||||
coverage: ## run the tests and generate a coverage report
|
||||
@poetry run coverage run
|
||||
@poetry run coverage erase
|
||||
|
||||
|
||||
# allow passing arguments to pytest
|
||||
unit_tests:
|
||||
poetry run pytest \
|
||||
|
|
@ -64,7 +77,6 @@ unit_tests:
|
|||
--instafail -ra -n auto -m "not api_key_required" \
|
||||
$(args)
|
||||
|
||||
|
||||
integration_tests:
|
||||
poetry run pytest tests/integration \
|
||||
--instafail -ra -n auto \
|
||||
|
|
@ -75,36 +87,29 @@ format: ## run code formatters
|
|||
poetry run ruff format .
|
||||
cd src/frontend && npm run format
|
||||
|
||||
|
||||
lint: ## run linters
|
||||
poetry run mypy --namespace-packages -p "langflow"
|
||||
|
||||
|
||||
install_frontend: ## install the frontend dependencies
|
||||
cd src/frontend && npm install
|
||||
|
||||
|
||||
install_frontendci:
|
||||
cd src/frontend && npm ci
|
||||
|
||||
|
||||
install_frontendc:
|
||||
cd src/frontend && rm -rf node_modules package-lock.json && npm install
|
||||
|
||||
|
||||
run_frontend:
|
||||
@-kill -9 `lsof -t -i:3000`
|
||||
cd src/frontend && npm start
|
||||
|
||||
|
||||
tests_frontend:
|
||||
ifeq ($(UI), true)
|
||||
cd src/frontend && npx playwright test --ui --project=chromium
|
||||
cd src/frontend && npx playwright test --ui --project=chromium
|
||||
else
|
||||
cd src/frontend && npx playwright test --project=chromium
|
||||
cd src/frontend && npx playwright test --project=chromium
|
||||
endif
|
||||
|
||||
|
||||
run_cli:
|
||||
@echo 'Running the CLI'
|
||||
@make install_frontend > /dev/null
|
||||
|
|
@ -118,7 +123,6 @@ else
|
|||
@make start host=$(host) port=$(port) log_level=$(log_level)
|
||||
endif
|
||||
|
||||
|
||||
run_cli_debug:
|
||||
@echo 'Running the CLI in debug mode'
|
||||
@make install_frontend > /dev/null
|
||||
|
|
@ -132,7 +136,6 @@ else
|
|||
@make start host=$(host) port=$(port) log_level=debug
|
||||
endif
|
||||
|
||||
|
||||
start:
|
||||
@echo 'Running the CLI'
|
||||
|
||||
|
|
@ -153,34 +156,28 @@ else
|
|||
--env-file $(env)
|
||||
endif
|
||||
|
||||
|
||||
setup_devcontainer:
|
||||
make init
|
||||
make build_frontend
|
||||
poetry run langflow --path src/frontend/build
|
||||
|
||||
|
||||
setup_env:
|
||||
@sh ./scripts/setup/update_poetry.sh 1.8.2
|
||||
@sh ./scripts/setup/setup_env.sh
|
||||
|
||||
|
||||
frontend: ## run the frontend in development mode
|
||||
make install_frontend
|
||||
make run_frontend
|
||||
|
||||
|
||||
frontendc:
|
||||
make install_frontendc
|
||||
make run_frontend
|
||||
|
||||
|
||||
install_backend:
|
||||
@echo 'Installing backend dependencies'
|
||||
@poetry install
|
||||
@poetry run pre-commit install
|
||||
|
||||
|
||||
backend: ## run the backend in development mode
|
||||
@echo 'Setting up the environment'
|
||||
@make setup_env
|
||||
|
|
@ -208,7 +205,6 @@ else
|
|||
--workers $(workers)
|
||||
endif
|
||||
|
||||
|
||||
build_and_run:
|
||||
@echo 'Removing dist folder'
|
||||
@make setup_env
|
||||
|
|
@ -218,20 +214,17 @@ build_and_run:
|
|||
poetry run pip install dist/*.tar.gz
|
||||
poetry run langflow run
|
||||
|
||||
|
||||
build_and_install:
|
||||
@echo 'Removing dist folder'
|
||||
rm -rf dist
|
||||
rm -rf src/backend/base/dist
|
||||
make build && poetry run pip install dist/*.whl && pip install src/backend/base/dist/*.whl --force-reinstall
|
||||
|
||||
|
||||
build_frontend: ## build the frontend static files
|
||||
cd src/frontend && CI='' npm run build
|
||||
rm -rf src/backend/base/langflow/frontend
|
||||
cp -r src/frontend/build src/backend/base/langflow/frontend
|
||||
|
||||
|
||||
build: ## build the frontend static files and package the project
|
||||
@echo 'Building the project'
|
||||
@make setup_env
|
||||
|
|
@ -245,16 +238,13 @@ ifdef main
|
|||
make build_langflow
|
||||
endif
|
||||
|
||||
|
||||
build_langflow_base:
|
||||
cd src/backend/base && poetry build
|
||||
rm -rf src/backend/base/langflow/frontend
|
||||
|
||||
|
||||
build_langflow_backup:
|
||||
poetry lock && poetry build
|
||||
|
||||
|
||||
build_langflow:
|
||||
cd ./scripts && poetry run python update_dependencies.py
|
||||
poetry lock
|
||||
|
|
@ -264,49 +254,41 @@ ifdef restore
|
|||
mv poetry.lock.bak poetry.lock
|
||||
endif
|
||||
|
||||
|
||||
dev: ## run the project in development mode with docker compose
|
||||
make install_frontend
|
||||
ifeq ($(build),1)
|
||||
@echo 'Running docker compose up with build'
|
||||
docker compose $(if $(debug),-f docker-compose.debug.yml) up --build
|
||||
@echo 'Running docker compose up with build'
|
||||
docker compose $(if $(debug),-f docker-compose.debug.yml) up --build
|
||||
else
|
||||
@echo 'Running docker compose up without build'
|
||||
docker compose $(if $(debug),-f docker-compose.debug.yml) up
|
||||
@echo 'Running docker compose up without build'
|
||||
docker compose $(if $(debug),-f docker-compose.debug.yml) up
|
||||
endif
|
||||
|
||||
|
||||
docker_build: dockerfile_build clear_dockerimage ## build DockerFile
|
||||
|
||||
|
||||
docker_build_backend: dockerfile_build_be clear_dockerimage ## build Backend DockerFile
|
||||
|
||||
|
||||
docker_build_frontend: dockerfile_build_fe clear_dockerimage ## build Frontend Dockerfile
|
||||
|
||||
|
||||
dockerfile_build:
|
||||
@echo 'BUILDING DOCKER IMAGE: ${DOCKERFILE}'
|
||||
@docker build --rm \
|
||||
-f ${DOCKERFILE} \
|
||||
-t langflow:${VERSION} .
|
||||
|
||||
|
||||
dockerfile_build_be: dockerfile_build
|
||||
@echo 'BUILDING DOCKER IMAGE BACKEND: ${DOCKERFILE_BACKEND}'
|
||||
@docker build --rm \
|
||||
--build-arg LANGFLOW_IMAGE=langflow:${VERSION} \
|
||||
-f ${DOCKERFILE_BACKEND} \
|
||||
-t langflow_backend:${VERSION} .
|
||||
|
||||
-f ${DOCKERFILE_BACKEND} \
|
||||
-t langflow_backend:${VERSION} .
|
||||
|
||||
dockerfile_build_fe: dockerfile_build
|
||||
@echo 'BUILDING DOCKER IMAGE FRONTEND: ${DOCKERFILE_FRONTEND}'
|
||||
@docker build --rm \
|
||||
--build-arg LANGFLOW_IMAGE=langflow:${VERSION} \
|
||||
-f ${DOCKERFILE_FRONTEND} \
|
||||
-t langflow_frontend:${VERSION} .
|
||||
|
||||
-f ${DOCKERFILE_FRONTEND} \
|
||||
-t langflow_frontend:${VERSION} .
|
||||
|
||||
clear_dockerimage:
|
||||
@echo 'Clearing the docker build'
|
||||
|
|
@ -314,24 +296,20 @@ clear_dockerimage:
|
|||
docker rmi $$(docker images -f "dangling=true" -q); \
|
||||
fi
|
||||
|
||||
|
||||
docker_compose_up: docker_build docker_compose_down
|
||||
@echo 'Running docker compose up'
|
||||
docker compose -f $(DOCKER_COMPOSE) up --remove-orphans
|
||||
|
||||
|
||||
docker_compose_down:
|
||||
@echo 'Running docker compose down'
|
||||
docker compose -f $(DOCKER_COMPOSE) down || true
|
||||
|
||||
|
||||
lock_base:
|
||||
cd src/backend/base && poetry lock
|
||||
|
||||
lock_langflow:
|
||||
poetry lock
|
||||
|
||||
|
||||
lock:
|
||||
# Run both in parallel
|
||||
@echo 'Locking dependencies'
|
||||
|
|
@ -346,11 +324,9 @@ update:
|
|||
publish_base:
|
||||
cd src/backend/base && poetry publish
|
||||
|
||||
|
||||
publish_langflow:
|
||||
poetry publish
|
||||
|
||||
|
||||
publish: ## build the frontend static files and package the project and publish it to PyPI
|
||||
@echo 'Publishing the project'
|
||||
ifdef base
|
||||
|
|
@ -361,11 +337,16 @@ ifdef main
|
|||
make publish_langflow
|
||||
endif
|
||||
|
||||
check_tools: ## check for required tools
|
||||
@command -v poetry >/dev/null 2>&1 || { echo >&2 "Poetry is not installed. Aborting."; exit 1; }
|
||||
@command -v npm >/dev/null 2>&1 || { echo >&2 "NPM is not installed. Aborting."; exit 1; }
|
||||
@command -v docker >/dev/null 2>&1 || { echo >&2 "Docker is not installed. Aborting."; exit 1; }
|
||||
@command -v pipx >/dev/null 2>&1 || { echo >&2 "pipx is not installed. Aborting."; exit 1; }
|
||||
@echo "All required tools are installed."
|
||||
|
||||
help: ## show this help message
|
||||
@echo '----'
|
||||
@echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | \
|
||||
sed -e 's/:.*##\s*/:/' \
|
||||
-e 's/^\(.\+\):\(.*\)/\\x1b[36mmake \1\\x1b[m:\2/' | \
|
||||
column -c2 -t -s :']]')"
|
||||
@grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | \
|
||||
awk -F ':.*##' '{printf "\033[36mmake %s\033[0m: %s\n", $$1, $$2}' | \
|
||||
column -c2 -t -s :
|
||||
@echo '----'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
MODEL_NAMES = ["llama3-8b-8192", "llama3-70b-8192", "mixtral-8x7b-32768", "gemma-7b-it"]
|
||||
MODEL_NAMES = ["llama3-8b-8192", "llama3-70b-8192", "mixtral-8x7b-32768", "gemma-7b-it", "gemma2-9b-it"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue