mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-01 15:37:32 +08:00
9b889db565
Selenium tests, JS unit tests, and the tour all speak this language. This schema generation allows TypeScript to understand it as well. This PR migrates UserDeletion.test.js to verify this works and demonstrate how to use this component in typescript.
250 lines
9.9 KiB
Makefile
250 lines
9.9 KiB
Makefile
# Location of virtualenv used for development.
|
|
VENV?=.venv
|
|
# Source virtualenv to execute command (darker, sphinx, twine, etc...)
|
|
IN_VENV=if [ -f "$(VENV)/bin/activate" ]; then . "$(VENV)/bin/activate"; fi;
|
|
RELEASE_CURR:=23.1
|
|
RELEASE_UPSTREAM:=upstream
|
|
CONFIG_MANAGE=$(IN_VENV) python lib/galaxy/config/config_manage.py
|
|
PROJECT_URL?=https://github.com/galaxyproject/galaxy
|
|
DOCS_DIR=doc
|
|
DOC_SOURCE_DIR=$(DOCS_DIR)/source
|
|
SLIDESHOW_DIR=$(DOC_SOURCE_DIR)/slideshow
|
|
OPEN_RESOURCE=bash -c 'open $$0 || xdg-open $$0'
|
|
SLIDESHOW_TO_PDF?=bash -c 'docker run --rm -v `pwd`:/cwd astefanutti/decktape /cwd/$$0 /cwd/`dirname $$0`/`basename -s .html $$0`.pdf'
|
|
YARN := $(shell command -v yarn 2> /dev/null)
|
|
YARN_INSTALL_OPTS=--network-timeout 300000 --check-files
|
|
CWL_TARGETS := test/functional/tools/cwl_tools/v1.0/conformance_tests.yaml \
|
|
test/functional/tools/cwl_tools/v1.1/conformance_tests.yaml \
|
|
test/functional/tools/cwl_tools/v1.2/conformance_tests.yaml \
|
|
lib/galaxy_test/api/cwl/test_cwl_conformance_v1_0.py \
|
|
lib/galaxy_test/api/cwl/test_cwl_conformance_v1_1.py \
|
|
lib/galaxy_test/api/cwl/test_cwl_conformance_v1_2.py
|
|
|
|
all: help
|
|
@echo "This makefile is used for building Galaxy's JS client, documentation, and drive the release process. A sensible all target is not implemented."
|
|
|
|
docs: ## Generate HTML documentation.
|
|
# Run following commands to setup the Python portion of the requirements:
|
|
# $ ./scripts/common_startup.sh
|
|
# $ . .venv/bin/activate
|
|
# $ pip install -r requirements.txt -r lib/galaxy/dependencies/dev-requirements.txt
|
|
$(IN_VENV) $(MAKE) -C doc clean
|
|
$(IN_VENV) $(MAKE) -C doc html
|
|
|
|
docs-develop: ## Fast doc generation and more warnings (for development)
|
|
$(IN_VENV) GALAXY_DOCS_SKIP_VIEW_CODE=1 SPHINXOPTS='-j 4' $(MAKE) -C doc html
|
|
|
|
setup-venv:
|
|
if [ ! -f $(VENV)/bin/activate ]; then bash scripts/common_startup.sh --dev-wheels; fi
|
|
|
|
diff-format: ## Format Python code changes since last commit
|
|
$(IN_VENV) darker .
|
|
|
|
format: ## Format Python code base
|
|
$(IN_VENV) isort .
|
|
$(IN_VENV) black .
|
|
|
|
remove-unused-imports: ## Remove unused imports in Python code base
|
|
$(IN_VENV) autoflake --in-place --remove-all-unused-imports --recursive --verbose lib/ test/
|
|
|
|
docs-slides-ready:
|
|
test -f plantuml.jar || wget http://jaist.dl.sourceforge.net/project/plantuml/plantuml.jar
|
|
java -jar plantuml.jar -c $(DOC_SOURCE_DIR)/slideshow/architecture/images/plantuml_options.txt -tsvg $(SLIDESHOW_DIR)/architecture/images/ *.plantuml.txt
|
|
$(IN_VENV) python scripts/slideshow/build_slideshow.py 'Galaxy Architecture' $(SLIDESHOW_DIR)/architecture/galaxy_architecture.md
|
|
|
|
docs-slides-export: docs-slides-ready
|
|
$(SLIDESHOW_TO_PDF) $(SLIDESHOW_DIR)/galaxy_architecture/galaxy_architecture.html
|
|
|
|
_open-docs:
|
|
$(OPEN_RESOURCE) $(DOCS_DIR)/_build/html/index.html
|
|
|
|
open-docs: docs _open-docs ## generate Sphinx HTML documentation and open in browser
|
|
|
|
open-project: ## open project on github
|
|
$(OPEN_RESOURCE) $(PROJECT_URL)
|
|
|
|
tool-shed-config-validate: ## validate tool shed YAML configuration file
|
|
$(CONFIG_MANAGE) validate tool_shed
|
|
|
|
tool-shed-config-lint: ## lint tool shed YAML configuration file
|
|
$(CONFIG_MANAGE) lint tool_shed
|
|
|
|
tool-shed-config-convert-dry-run: ## convert old style tool shed ini to yaml (dry run)
|
|
$(CONFIG_MANAGE) convert tool_shed --dry-run
|
|
|
|
tool-shed-config-convert: ## convert old style tool shed ini to yaml
|
|
$(CONFIG_MANAGE) convert tool_shed
|
|
|
|
reports-config-validate: ## validate reports YAML configuration file
|
|
$(CONFIG_MANAGE) validate reports
|
|
|
|
reports-config-convert-dry-run: ## convert old style reports ini to yaml (dry run)
|
|
$(CONFIG_MANAGE) convert reports --dry-run
|
|
|
|
reports-config-convert: ## convert old style reports ini to yaml
|
|
$(CONFIG_MANAGE) convert reports
|
|
|
|
reports-config-lint: ## lint reports YAML configuration file
|
|
$(CONFIG_MANAGE) lint reports
|
|
|
|
config-validate: ## validate galaxy YAML configuration file
|
|
$(CONFIG_MANAGE) validate galaxy
|
|
|
|
config-convert-dry-run: ## convert old style galaxy ini to yaml (dry run)
|
|
$(CONFIG_MANAGE) convert galaxy --dry-run
|
|
|
|
config-convert: ## convert old style galaxy ini to yaml
|
|
$(CONFIG_MANAGE) convert galaxy
|
|
|
|
config-rebuild: ## Rebuild all sample YAML and RST files from config schema
|
|
$(CONFIG_MANAGE) build_sample_yaml galaxy --add-comments
|
|
$(CONFIG_MANAGE) build_rst galaxy > doc/source/admin/galaxy_options.rst
|
|
$(CONFIG_MANAGE) build_sample_yaml reports --add-comments
|
|
$(CONFIG_MANAGE) build_rst reports > doc/source/admin/reports_options.rst
|
|
$(CONFIG_MANAGE) build_sample_yaml tool_shed --add-comments
|
|
|
|
config-lint: ## lint galaxy YAML configuration file
|
|
$(CONFIG_MANAGE) lint galaxy
|
|
|
|
release-ensure-upstream: ## Ensure upstream branch for release commands setup
|
|
ifeq (shell git remote -v | grep $(RELEASE_UPSTREAM), )
|
|
git remote add $(RELEASE_UPSTREAM) git@github.com:galaxyproject/galaxy.git
|
|
else
|
|
@echo "Remote $(RELEASE_UPSTREAM) already exists."
|
|
endif
|
|
|
|
release-merge-stable-to-next: release-ensure-upstream ## Merge last release into dev
|
|
git fetch $(RELEASE_UPSTREAM) && git checkout dev && git merge --ff-only $(RELEASE_UPSTREAM)/dev && git merge $(RELEASE_UPSTREAM)/$(RELEASE_PREVIOUS)
|
|
|
|
release-push-dev: release-ensure-upstream # Push local dev branch upstream
|
|
git push $(RELEASE_UPSTREAM) dev
|
|
|
|
release-issue: ## Create release issue on github
|
|
$(IN_VENV) python scripts/bootstrap_history.py --create-release-issue $(RELEASE_CURR)
|
|
|
|
release-check-metadata: ## check github PR metadata for target release
|
|
$(IN_VENV) python scripts/bootstrap_history.py --check-release $(RELEASE_CURR)
|
|
|
|
release-check-blocking-issues: ## Check github for release blocking issues
|
|
$(IN_VENV) python scripts/bootstrap_history.py --check-blocking-issues $(RELEASE_CURR)
|
|
|
|
release-check-blocking-prs: ## Check github for release blocking PRs
|
|
$(IN_VENV) python scripts/bootstrap_history.py --check-blocking-prs $(RELEASE_CURR)
|
|
|
|
release-bootstrap-history: ## bootstrap history for a new release
|
|
$(IN_VENV) python scripts/bootstrap_history.py --release $(RELEASE_CURR)
|
|
|
|
update-lint-requirements:
|
|
./lib/galaxy/dependencies/update_lint_requirements.sh
|
|
|
|
update-dependencies: update-lint-requirements ## update pinned and dev dependencies
|
|
$(IN_VENV) ./lib/galaxy/dependencies/update.sh
|
|
|
|
$(CWL_TARGETS):
|
|
./scripts/update_cwl_conformance_tests.sh
|
|
|
|
generate-cwl-conformance-tests: $(CWL_TARGETS) ## Initialise CWL conformance tests
|
|
|
|
clean-cwl-conformance-tests: ## Clean CWL conformance tests
|
|
for f in $(CWL_TARGETS); do \
|
|
if [ $$(basename "$$f") = conformance_tests.yaml ]; then \
|
|
rm -rf $$(dirname "$$f"); \
|
|
else \
|
|
rm -f "$$f"; \
|
|
fi \
|
|
done
|
|
|
|
update-cwl-conformance-tests: ## update CWL conformance tests
|
|
$(MAKE) clean-cwl-conformance-tests
|
|
$(MAKE) generate-cwl-conformance-tests
|
|
|
|
skip-client: ## Run only the server, skipping the client build.
|
|
GALAXY_SKIP_CLIENT_BUILD=1 sh run.sh
|
|
|
|
node-deps: ## Install NodeJS dependencies.
|
|
ifndef YARN
|
|
@echo "Could not find yarn, which is required to install the Galaxy client.\nTo install yarn, please visit \033[0;34mhttps://yarnpkg.com/en/docs/install\033[0m for instructions, and package information for all platforms.\n"
|
|
false;
|
|
else
|
|
yarn install $(YARN_INSTALL_OPTS)
|
|
endif
|
|
|
|
client-node-deps: ## Install NodeJS dependencies for the client.
|
|
ifndef YARN
|
|
@echo "Could not find yarn, which is required to build the Galaxy client.\nTo install yarn, please visit \033[0;34mhttps://yarnpkg.com/en/docs/install\033[0m for instructions, and package information for all platforms.\n"
|
|
false;
|
|
else
|
|
cd client && yarn install $(YARN_INSTALL_OPTS)
|
|
endif
|
|
|
|
|
|
build-api-schema:
|
|
$(IN_VENV) python scripts/dump_openapi_schema.py _schema.yaml
|
|
|
|
remove-api-schema:
|
|
rm _schema.yaml
|
|
|
|
update-client-api-schema: client-node-deps build-api-schema
|
|
$(IN_VENV) cd client && node openapi_to_schema.mjs ../_schema.yaml > src/schema/schema.ts && npx prettier --write src/schema/schema.ts
|
|
$(MAKE) remove-api-schema
|
|
|
|
lint-api-schema: build-api-schema
|
|
$(IN_VENV) npx --yes @redocly/cli lint _schema.yaml
|
|
$(IN_VENV) codespell -I .ci/ignore-spelling.txt _schema.yaml
|
|
$(MAKE) remove-api-schema
|
|
|
|
update-navigation-schema: client-node-deps
|
|
$(IN_VENV) cd client && node navigation_to_schema.mjs
|
|
|
|
install-client: node-deps ## Install prebuilt client as defined in root package.json
|
|
yarn install && yarn run stage
|
|
|
|
client: client-node-deps ## Rebuild client-side artifacts for local development.
|
|
cd client && yarn run build
|
|
|
|
client-production: client-node-deps ## Rebuild client-side artifacts for a production deployment without sourcemaps.
|
|
cd client && yarn run build-production
|
|
|
|
client-production-maps: client-node-deps ## Rebuild client-side artifacts for a production deployment with sourcemaps.
|
|
cd client && yarn run build-production-maps
|
|
|
|
client-format: client-node-deps ## Reformat client code
|
|
cd client && yarn run format
|
|
|
|
client-dev-server: client-node-deps ## Starts a webpack dev server for client development (HMR enabled)
|
|
cd client && yarn run develop
|
|
|
|
client-test: client-node-deps ## Run JS unit tests
|
|
cd client && yarn run test
|
|
|
|
client-eslint-precommit: client-node-deps # Client linting for pre-commit hook; skips glob input and takes specific paths
|
|
cd client && yarn run eslint-precommit
|
|
|
|
client-eslint: client-node-deps # Run client linting
|
|
cd client && yarn run eslint
|
|
|
|
client-format-check: client-node-deps # Run client formatting check
|
|
cd client && yarn run format-check
|
|
|
|
client-lint: client-eslint client-format-check ## ES lint and check format of client
|
|
|
|
client-test-watch: client ## Watch and run all client unit tests on changes
|
|
cd client && yarn run jest-watch
|
|
|
|
serve-selenium-notebooks: ## Serve testing notebooks for Jupyter
|
|
cd lib && export PYTHONPATH=`pwd`; jupyter notebook --notebook-dir=galaxy_test/selenium/jupyter
|
|
|
|
# Release Targets
|
|
release-create-rc: ## Create a release-candidate branch or new release-candidate version
|
|
$(IN_VENV) ./scripts/release.sh -c
|
|
|
|
release-create: ## Create a release branch
|
|
$(IN_VENV) ./scripts/release.sh
|
|
|
|
release-create-point: release-create ## Create a point release
|
|
|
|
.PHONY: help
|
|
|
|
help:
|
|
@egrep '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|