diff --git a/docker-compose.yml b/docker-compose.yml index e141880555..98f285fd36 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -860,6 +860,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-account' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-account" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@1.x' networks: default: aliases: @@ -875,6 +877,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-profile' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-profile" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@~2.0.0' networks: default: aliases: @@ -890,6 +894,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-authn' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-authn" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -905,6 +911,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-course-authoring' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-course-authoring" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -935,6 +943,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-ora-grading' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-ora-grading" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -950,6 +960,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-learner-dashboard' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learner-dashboard" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -965,6 +977,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-learner-record' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learner-record" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@~2.0.0' networks: default: aliases: @@ -980,6 +994,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-learning' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-learning" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -995,6 +1011,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-library-authoring' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-library-authoring" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: @@ -1011,6 +1029,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-payment' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-payment" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@^2.0.6' networks: default: aliases: @@ -1026,6 +1046,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-program-console' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-program-console" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@1.x' networks: default: aliases: @@ -1042,6 +1064,8 @@ services: service: microfrontend working_dir: '/edx/app/frontend-app-publisher' container_name: "edx.${COMPOSE_PROJECT_NAME:-devstack}.frontend-app-publisher" + environment: + PARAGON_BRAND_PACKAGE: '@edx/brand-edx.org@2.x' networks: default: aliases: diff --git a/microfrontend.yml b/microfrontend.yml index 184944a55b..cd3c889db4 100644 --- a/microfrontend.yml +++ b/microfrontend.yml @@ -16,7 +16,18 @@ services: # # Fail fast if package install fails to avoid mysterious # errors later. - command: bash -c 'npm ci || exit 1; while true; do npm start; sleep 2; done' + command: + - bash + - -c + - | + npm ci || exit 1 + if [ -n "$(printenv PARAGON_BRAND_PACKAGE)" ]; then + npx paragon install-theme "$(printenv PARAGON_BRAND_PACKAGE)" || exit 1 + fi + while true; do + npm start + sleep 2 + done stdin_open: true tty: true image: node:18 diff --git a/provision-lms.sh b/provision-lms.sh index de257f2004..df81742802 100755 --- a/provision-lms.sh +++ b/provision-lms.sh @@ -77,6 +77,9 @@ done # Fix missing vendor file by clearing the cache # docker compose exec -T lms bash -e -c 'rm /edx/app/edxapp/edx-platform/.prereqs_cache/Node_prereqs.sha1' +# Set edX theme in LMS and CMS. +./provision-set-edx-theme.sh + # Create static assets for both LMS and CMS for app in "${apps[@]}"; do make "dev.static.$app" diff --git a/provision-set-edx-theme.sh b/provision-set-edx-theme.sh new file mode 100755 index 0000000000..44b22f3976 --- /dev/null +++ b/provision-set-edx-theme.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# This script sets up the edX theme in LMS and CMS. + +REPO_URL="https://github.com/edx/edx-themes" +THEME_DIR="/edx/src/edx-themes/edx-platform" +DEVSTACK_FILE="../edx-platform/lms/envs/devstack.py" + +# Clone the edx-themes repository into the src directory +cd ../src +if [ ! -d "edx-themes" ]; then + git clone "$REPO_URL" +else + echo "Directory 'edx-themes' already exists. Skipping clone." +fi +cd ../devstack + +# Uncomment relevant lines in the devstack.py file +sed -i '' "s|^# from .common import _make_mako_template_dirs|from .common import _make_mako_template_dirs|" "$DEVSTACK_FILE" +sed -i '' "s|^# ENABLE_COMPREHENSIVE_THEMING = True|ENABLE_COMPREHENSIVE_THEMING = True|" "$DEVSTACK_FILE" +sed -i '' "s|^# COMPREHENSIVE_THEME_DIRS = \[|COMPREHENSIVE_THEME_DIRS = \[|" "$DEVSTACK_FILE" +sed -i '' "s|^# \"/edx/app/edxapp/edx-platform/themes/\"| \"/edx/app/edxapp/edx-platform/themes/\",|" "$DEVSTACK_FILE" +sed -i '' "/COMPREHENSIVE_THEME_DIRS = \[/a\\ +\"$THEME_DIR\", +" "$DEVSTACK_FILE" +sed -i '' "s|^# \]|]|" "$DEVSTACK_FILE" +sed -i '' "s|^# TEMPLATES\[1\]\[\"DIRS\"\] = _make_mako_template_dirs|TEMPLATES[1][\"DIRS\"] = _make_mako_template_dirs|" "$DEVSTACK_FILE" +sed -i '' "s|^# derive_settings(__name__)|derive_settings(__name__)|" "$DEVSTACK_FILE" + + +# Add the theme directory to COMPREHENSIVE_THEME_DIRS if not already present +if ! grep -qF "$THEME_DIR" "$DEVSTACK_FILE"; then + sed -i '' "/COMPREHENSIVE_THEME_DIRS = \[/a\\ + \"$THEME_DIR\", + " "$DEVSTACK_FILE" +fi + +# Set the theme site-wide +SERVICE_NAME="mysql80" +DATABASE="edxapp" +THEME_NAME="edx.org-next" +SITE_ID=1 + +docker compose exec -T "$SERVICE_NAME" mysql -e " +USE $DATABASE; +INSERT INTO theming_sitetheme (theme_dir_name, site_id) VALUES ('$THEME_NAME', $SITE_ID); +"