diff --git a/.gitignore b/.gitignore index 1e48c997b8..0e8fb5c60f 100644 --- a/.gitignore +++ b/.gitignore @@ -157,10 +157,10 @@ use_dev_supervisor.txt *.unison.tmp *.# /awx/ui/.ui-built +/awx/ui_next/.ui-built /Dockerfile /_build/ /_build_kube_dev/ /Dockerfile.kube-dev awx/ui_next/src -awx/ui_next/build diff --git a/awx/ui_next/Makefile b/awx/ui_next/Makefile index 368f8a795e..490dbeaa61 100644 --- a/awx/ui_next/Makefile +++ b/awx/ui_next/Makefile @@ -1,12 +1,21 @@ +## UI_NEXT_MKFILE_PATH: Path to this Makefile UI_NEXT_MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) -UI_NEXT_MKFILE_DIR := $(dir $(UI_NEXT_MKFILE_PATH)) -UI_NEXT_DIR := $(subst $(CURDIR)/,, $(UI_NEXT_MKFILE_DIR)) -# NOTE: UI_NEXT_DIR swallowed the / because we want to be able to run `make src` from the ui_next dir -UI_NEXT_SRC_DIR := $(UI_NEXT_DIR)src -UI_NEXT_BUILD_DIR := $(UI_NEXT_DIR)build +## UI_NEXT_DIR_ABS: Absolute path to the directory containing this Makefile +UI_NEXT_DIR_ABS := $(dir $(UI_NEXT_MKFILE_PATH)) -# Path to your local clone of the UI_NEXT repo +## UI_NEXT_REL_DIR: Relative path to the directory containing this Makefile +# NOTE: UI_NEXT_REL_DIR swallowed the / because we want to be able to run `make src` from the ui_next dir +UI_NEXT_REL_DIR := $(subst $(CURDIR)/,, $(UI_NEXT_DIR_ABS)) + +## UI_NEXT_SRC_DIR: Path to the ui_next src directory +UI_NEXT_SRC_DIR := $(UI_NEXT_REL_DIR)src + +## UI_NEXT_BUILD_DIR: Path to the ui_next build directory +UI_NEXT_BUILD_DIR := $(UI_NEXT_REL_DIR)build + +## Path to your local clone of the UI_NEXT repo +# NOTE: This does not work with docker-compose development environment UI_NEXT_LOCAL ?= # Git repo and branch to the UI_NEXT repo @@ -18,14 +27,14 @@ UI_NEXT_GIT_BRANCH ?= main # therefore we have to commit the build directory to source control # so that make docker-compose will be able to start up uwsgi # UI_NEXT_BUILT_FILE is here so that we can use it as the non-phony build target -UI_NEXT_BUILT_FILE = $(UI_NEXT_DIR).ui-built +UI_NEXT_BUILT_FILE = $(UI_NEXT_REL_DIR).ui-built .PHONY: ui_next/clone-https ## Shallow clone the ui_next repo via https skip if UI_NEXT_GIT_REPO_HTTPS is undefined ui_next/clone-https: @if [ -z "$(UI_NEXT_GIT_REPO_HTTPS)" ]; then \ echo "SKIP: ui_next/clone-https. UI_NEXT_GIT_REPO_HTTPS is not set."; \ - elif [ -d "$(UI_NEXT_SRC_DIR)" ]; then \ + elif [ -d $(UI_NEXT_SRC_DIR) ]; then \ echo "SKIP: ui_next/clone-https. $(UI_NEXT_SRC_DIR) already exists."; \ else \ git clone --depth 1 --branch $(UI_NEXT_GIT_BRANCH) $(UI_NEXT_GIT_REPO_HTTPS) $(UI_NEXT_SRC_DIR) || true; \ @@ -36,18 +45,18 @@ ui_next/clone-https: ui_next/clone-ssh: @if [ -z "$(UI_NEXT_GIT_REPO_SSH)" ]; then \ echo "SKIP: ui_next/clone-ssh. UI_NEXT_GIT_REPO_SSH is not set."; \ - elif [ -d "$(UI_NEXT_SRC_DIR)" ]; then \ + elif [ -d $(UI_NEXT_SRC_DIR) ]; then \ echo "SKIP: ui_next/clone-ssh. $(UI_NEXT_SRC_DIR) already exists."; \ else \ git clone --depth 1 --branch $(UI_NEXT_GIT_BRANCH) $(UI_NEXT_GIT_REPO_SSH) $(UI_NEXT_SRC_DIR) || true; \ fi .PHONY: ui_next/link-local -## Link to a existing local clone of ui_next repo. +## Link to a existing local clone of ui_next repo. If method will not be able to build inside docker-compose environment ui_next/link-local: @if [ -z "$(UI_NEXT_LOCAL)" ]; then \ echo "SKIP: ui_next/link-local. UI_NEXT_LOCAL is not set."; \ - elif [ -d "$(UI_NEXT_SRC_DIR)" ]; then \ + elif [ -d $(UI_NEXT_SRC_DIR) ]; then \ echo "SKIP: ui_next/link-local. $(UI_NEXT_SRC_DIR) already exists."; \ else \ ln -s $(UI_NEXT_LOCAL) $(UI_NEXT_SRC_DIR); \ @@ -56,30 +65,44 @@ ui_next/link-local: .PHONY: ui_next/src ## Try to link to a local clone of ui_next repo if it exist otherwise clone via ssh than https. ui_next/src: - @if [ -d "$(UI_NEXT_SRC_DIR)" ]; then \ + @if [ -d $(UI_NEXT_SRC_DIR) ]; then \ echo "SKIP: ui_next. $(UI_NEXT_SRC_DIR) already exists."; \ else \ $(MAKE) ui_next/link-local ui_next/clone-ssh ui_next/clone-https; \ fi -## Alias for ui_next, will not run if ui_next already exist +## Alias for ui_next, will not run if ui_next/src already exist $(UI_NEXT_SRC_DIR): $(MAKE) ui_next/src +$(UI_NEXT_SRC_DIR)/build: + $(MAKE) ui_next/src/build + .PHONY: ui_next/build ## Build ui_next from source -ui_next/src/build: ui_next/src - cd $(UI_NEXT_SRC_DIR) && \ - npm install webpack && \ - npm run build:awx +ui_next/src/build: $(UI_NEXT_SRC_DIR) $(UI_NEXT_SRC_DIR)/node_modules/webpack + @cd $(UI_NEXT_SRC_DIR) && npm run build:awx + + +## Install webpack if does not exist. +ui_next/src/node_modules/webpack: $(UI_NEXT_SRC_DIR) + @if [ -d $(UI_NEXT_SRC_DIR)/node_modules/webpack ]; then \ + echo "SKIP: ui_next/src/node_modules/webpack. $(UI_NEXT_SRC_DIR)/node_modules/webpack already exists."; \ + else \ + cd $(UI_NEXT_SRC_DIR) && npm install webpack; \ + fi + +## Alias for ui_next/src/node_modules/webpack. will not run if webpack already exist +$(UI_NEXT_SRC_DIR)/node_modules/webpack: + $(MAKE) ui_next/src/node_modules/webpack .PHONY: ui_next/build ## Copy ui_next/src/build to ui_next/build -ui_next/build: ui_next/src/build - cp -r $(UI_NEXT_SRC_DIR)/build $(UI_NEXT_BUILD_DIR) +ui_next/build: $(UI_NEXT_SRC_DIR)/build + @cp -r $(UI_NEXT_SRC_DIR)/build $(UI_NEXT_DIR_ABS) &&\ touch $(UI_NEXT_BUILT_FILE) -## non PHONY target for ui_next/build. Will not run if build already exist +## Alias for ui_next/build. Will not run if .ui-built file already exist $(UI_NEXT_BUILT_FILE): $(MAKE) ui_next/build @@ -88,8 +111,9 @@ $(UI_NEXT_BUILT_FILE): $(UI_NEXT_BUILD_DIR): $(MAKE) ui_next/build -## Alias for ui_next/clean -$(UI_NEXT_DIR)clean: +.PHONY: $(UI_NEXT_REL_DIR)clean +## Alias for ui_next/clean. +$(UI_NEXT_REL_DIR)clean: rm -rf $(UI_NEXT_SRC_DIR) rm -rf $(UI_NEXT_BUILD_DIR)