diff --git a/.devcontainer/.gitignore b/.devcontainer/.gitignore new file mode 100644 index 0000000000..4c49bd78f1 --- /dev/null +++ b/.devcontainer/.gitignore @@ -0,0 +1 @@ +.env diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml similarity index 74% rename from applications/dev-environment/devcontainer/template/.devcontainer/docker-compose.yml rename to .devcontainer/docker-compose.yml index 290534c157..7dd6ee095b 100644 --- a/applications/dev-environment/devcontainer/template/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -6,7 +6,7 @@ volumes: services: mqtt-server: - image: ghcr.io/everest/everest-dev-environment/mosquitto:docker-images-v0.2.0 + build: ../applications/containers/mosquitto ports: - 1883:1883 - 9001:9001 @@ -31,7 +31,7 @@ services: - all - ocpp steve: - image: ghcr.io/everest/everest-dev-environment/steve:docker-images-v0.2.0 + build: ../applications/containers/steve ports: - 8180:8180 - 8443:8443 @@ -41,7 +41,7 @@ services: - all - ocpp mqtt-explorer: - image: ghcr.io/everest/everest-dev-environment/mqtt-explorer:docker-images-v0.2.0 + build: ../applications/containers/mqtt-explorer depends_on: - mqtt-server ports: @@ -50,12 +50,11 @@ services: - all - sil nodered: - image: ghcr.io/everest/everest-dev-environment/nodered:docker-images-v0.2.0 + build: ../applications/containers/nodered ports: - 1880:1880 volumes: - node-red-data:/data - - ./nodered-settings.js:/data/settings.js environment: - NODE_RED_ENABLE_PROJECTS=false - MQTT_BROKER=mqtt-server diff --git a/.devcontainer/general-devcontainer/Dockerfile b/.devcontainer/general-devcontainer/Dockerfile new file mode 100644 index 0000000000..7228a8f8ca --- /dev/null +++ b/.devcontainer/general-devcontainer/Dockerfile @@ -0,0 +1,83 @@ +# syntax=docker/dockerfile:1 +FROM ghcr.io/everest/everest-ci/dev-env-base:v1.5.4 + +# Build arguments for customization +# User and group configuration i.e. to match host user inside the container +ARG USERNAME=docker +ARG USER_UID=1000 +ARG USER_GID=1000 +# Configuration for everest-dev-tool's default git settings, can be overridden when working i.e. in a fork +ARG EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION_ARG=EVerest +ARG EVEREST_DEV_TOOL_DEFAULT_GIT_HOST_ARG=github.com +ARG EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER_ARG=git + +################################################################## +# Should be moved to everest-dev-base at some point + +# Update the package list and install dependencies (run as root) +USER root +RUN apt-get update && apt-get install -y \ + protobuf-compiler \ + libsystemd-dev \ + tmux \ + chrpath \ + cpio \ + diffstat \ + gawk \ + wget \ + zstd \ + liblz4-tool \ + file \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y locales \ + && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ + && dpkg-reconfigure --frontend=noninteractive locales \ + && update-locale LANG=en_US.UTF-8 + +ENV LANG en_US.UTF-8 + + + +# EVerest Development Tool - Dependencies +RUN pip install --break-system-packages \ + nanopb + +# EVerest Development Tool + +COPY --from=everest_dev_tool_src . /tmp/everest_dev_tool +RUN ls -al /tmp/everest_dev_tool \ + && python3 -m pip install \ + --break-system-packages \ + /tmp/everest_dev_tool/ \ + && rm -rf /tmp/everest_dev_tool + +################################################################## + +# Modify the existing docker user and group to match the host's USER_UID and USER_GID +RUN groupmod --gid ${USER_GID} ${USERNAME} && \ + usermod --uid ${USER_UID} --gid ${USER_GID} ${USERNAME} && \ + usermod -aG dialout ${USERNAME} + +# Switch to the docker user +USER ${USERNAME} +WORKDIR /workspace + +# Add known hosts for git repositories +RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan ${EVEREST_DEV_TOOL_DEFAULT_GIT_HOST_ARG} >> ~/.ssh/known_hosts + +# Set environment variables +ENV EVEREST_DEV_TOOL_DEFAULT_GIT_METHOD=ssh +ENV EVEREST_DEV_TOOL_DEFAULT_GIT_HOST=${EVEREST_DEV_TOOL_DEFAULT_GIT_HOST_ARG} +ENV EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER=${EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER_ARG} +ENV EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION=${EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION_ARG} + +# Enable command line completion for devrd script by default +RUN echo "" >> ${HOME}/.bashrc && \ + echo "# Enable devrd command completion if available" >> ${HOME}/.bashrc && \ + echo "if [ -f /workspace/applications/devrd/devrd-completion.bash ]; then" >> ${HOME}/.bashrc && \ + echo " source /workspace/applications/devrd/devrd-completion.bash" >> ${HOME}/.bashrc && \ + echo "fi" >> ${HOME}/.bashrc + +# Set up welcome message +RUN echo "echo \"πŸ”οΈ 🚘 Welcome to the EVerest development environment!\"" >> ${HOME}/.bashrc && \ + echo "echo \"Since you are working with the everest-core monorepo, you have all you need to get started here. πŸŽ‰πŸŽ‰πŸŽ‰\"" >> ${HOME}/.bashrc && \ + echo "echo \"You can find the devrd tool in applications/devrd/devrd\"" >> ${HOME}/.bashrc diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/devcontainer.json b/.devcontainer/general-devcontainer/devcontainer.json similarity index 58% rename from applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/devcontainer.json rename to .devcontainer/general-devcontainer/devcontainer.json index 4b73359371..ca38b603f1 100644 --- a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/devcontainer.json +++ b/.devcontainer/general-devcontainer/devcontainer.json @@ -1,10 +1,25 @@ { "name": "EVerest - ${localWorkspaceFolderBasename}", - "dockerComposeFile": ["../docker-compose.yml", "./docker-compose.devcontainer.yml"], + + // Compose configuration + "dockerComposeFile": [ + "../docker-compose.yml", + "./docker-compose.devcontainer.yml" + ], "service": "devcontainer", + "runServices": [ "mqtt-server", "ocpp-db", "steve", "mqtt-explorer" ], - "remoteUser": "docker", + // Workspace inside the container "workspaceFolder": "/workspace", + + "initializeCommand": "./applications/devrd/devrd env", + + // Prevent generation of broken override compose files + "overrideFeatureInstallCommand": false, + "updateRemoteUserUID": false, + + // Networking / forwarded ports + "remoteUser": "docker", "forwardPorts": [ "mqtt-explorer:4000", "steve:8180" @@ -22,7 +37,12 @@ "protocol": "http", "requireLocalPort": false }, + + // VS Code customizations "customizations": { + + // Be aware that anything set here will not apply to the devcontainer + // when used without VS Code (e.g., plain Docker Compose). "vscode": { "settings": { "terminal.integrated.profiles.linux": { @@ -36,27 +56,26 @@ "python.pythonPath": "/usr/bin/python3", "python.defaultInterpreterPath": "/usr/bin/python3", "editor.rulers": [79, 120], - // RST/Sphinx language server - "esbonio.sphinx.buildDir": "${workspaceFolder}/everest/docs/_build", - "esbonio.sphinx.confDir": "${workspaceFolder}/everest/docs", + // RST "restructuredtext.preview.scrollEditorWithPreview": false, - "restructuredtext.pythonRecommendation.disabled": true, - "liveServer.settings.root": "/everest/docs/_build/html" + "restructuredtext.pythonRecommendation.disabled": true }, + "extensions": [ // language support CPP "ms-vscode.cpptools", + // language support cmake "twxs.cmake", "ms-vscode.cmake-tools", - // language support python - "ms-python.python", - // language support restructured text - "lextudio.restructuredtext", - "trond-snekvik.simple-rst", - // doc live server - "ritwickdey.liveserver" + + // language support python + "ms-python.python", + + // language support reStructuredText + "lextudio.restructuredtext", + "trond-snekvik.simple-rst" ] } } diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/docker-compose.devcontainer.yml b/.devcontainer/general-devcontainer/docker-compose.devcontainer.yml similarity index 79% rename from applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/docker-compose.devcontainer.yml rename to .devcontainer/general-devcontainer/docker-compose.devcontainer.yml index 813e63ce49..071eceab83 100644 --- a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/docker-compose.devcontainer.yml +++ b/.devcontainer/general-devcontainer/docker-compose.devcontainer.yml @@ -8,7 +8,6 @@ volumes: services: - docker-proxy: image: tecnativa/docker-socket-proxy:latest volumes: @@ -34,15 +33,16 @@ services: env_file: - .env build: - context: ./general-devcontainer dockerfile: Dockerfile + context: ./general-devcontainer + additional_contexts: + everest_dev_tool_src: ../applications/everest_dev_tool args: USER_UID: ${UID:-1000} USER_GID: ${GID:-1000} - ORGANIZATION_ARG: ${ORGANIZATION_ARG:-EVerest} - REPOSITORY_HOST: ${REPOSITORY_HOST:-github.com} - REPOSITORY_USER: ${REPOSITORY_USER:-git} - EVEREST_TOOL_BRANCH: ${EVEREST_TOOL_BRANCH:-main} + EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION_ARG: ${EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION:-EVerest} + EVEREST_DEV_TOOL_DEFAULT_GIT_HOST_ARG: ${EVEREST_DEV_TOOL_DEFAULT_GIT_HOST:-github.com} + EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER_ARG: ${EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER:-git} volumes: - type: bind source: ${HOST_WORKSPACE_FOLDER:-..} diff --git a/.gitignore b/.gitignore index 35d4aefae8..479ae299c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *build *build-cross +*dist .cache/ workspace.yaml .vscode/ diff --git a/applications/dev-environment/.prospector.yaml b/.prospector.yaml similarity index 100% rename from applications/dev-environment/.prospector.yaml rename to .prospector.yaml diff --git a/CMakeLists.txt b/CMakeLists.txt index ced1496f09..c01df25581 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,7 +146,7 @@ if(NOT DISABLE_EDM) set(THIRD_PARTY_APP_DST "${CMAKE_INSTALL_LIBEXECDIR}/everest/3rd_party") # edm - add_subdirectory(applications/dev-environment) + add_subdirectory(applications/) evc_setup_edm() @@ -195,7 +195,7 @@ add_subdirectory(config) add_subdirectory(doc) if(EVEREST_BUILD_APPLICATIONS) - add_subdirectory(applications) +# add_subdirectory(applications) endif() ev_install_project() diff --git a/applications/CMakeLists.txt b/applications/CMakeLists.txt index 1396988c36..2a1c09c3b2 100644 --- a/applications/CMakeLists.txt +++ b/applications/CMakeLists.txt @@ -1 +1,25 @@ +ev_setup_cmake_variables_python_wheel() + +ev_add_pip_package( + NAME edm + SOURCE_DIRECTORY dependency_manager +) + +ev_is_python_venv_active( + RESULT_VAR IS_PYTHON_VENV_ACTIVE +) + +if(NOT ${IS_PYTHON_VENV_ACTIVE}) + message(WARNING "Python venv is not active. Please ensure that edm is available in your environment.") +else() + get_target_property(SOURCE_DIRECTORY ev_pip_package_edm SOURCE_DIRECTORY) + message(STATUS "Installing edm from: ${SOURCE_DIRECTORY}") + ev_pip_install_local( + PACKAGE_NAME "edm" + PACKAGE_SOURCE_DIRECTORY "${SOURCE_DIRECTORY}" + ) + unset(EVEREST_DEPENDENCY_MANAGER CACHE) + find_program(EVEREST_DEPENDENCY_MANAGER edm HINTS ${EV_ACTIVATE_PYTHON_VENV_PATH_TO_VENV}/bin REQUIRED) + message(STATUS "Using edm from: ${EDM}") +endif() add_subdirectory(pionix_chargebridge) diff --git a/applications/README.md b/applications/README.md index 11f1b9cfd0..5ea3a1a1fc 100644 --- a/applications/README.md +++ b/applications/README.md @@ -3,5 +3,29 @@ This directory will contain applications that are used during the EVerest build process, deployed to the target hardware and useful scripts for development. -_utils contains ev-cli and everest-testing as well as additional code integrated from everest-utils. +## containers/ + +containers/ contains multiple useful Dockerfile based containers that can be used for development. + +* `mosquittto` : An mqtt broker +* `mqtt-explorer` : Tool to inspect messages on mqtt topics +* `nodered` : NodeRED application to run i.e. sil flows +* `steve` : OCPP backend + +## dependency_manager + +Contains the EDM (EVerest Dependency Manager) tool which is a cli to +manage an EVerest workspace and external dependencies during building. + +## everest_dev_tool + +A CLI designed to provide helpful commands/aliases for developing. + +## utils/ + +utils/ contains ev-cli and everest-testing as well as additional code integrated from everest-utils. This might get broken up further in the future. + +## devrd + +Script to manage devcontainer + containerized services in the development environment diff --git a/applications/dev-environment/docker/images/mosquitto/Dockerfile b/applications/containers/mosquitto/Dockerfile similarity index 100% rename from applications/dev-environment/docker/images/mosquitto/Dockerfile rename to applications/containers/mosquitto/Dockerfile diff --git a/applications/dev-environment/docker/images/mosquitto/entrypoint_wrapper.sh b/applications/containers/mosquitto/entrypoint_wrapper.sh similarity index 100% rename from applications/dev-environment/docker/images/mosquitto/entrypoint_wrapper.sh rename to applications/containers/mosquitto/entrypoint_wrapper.sh diff --git a/applications/dev-environment/docker/images/mosquitto/mosquitto.conf b/applications/containers/mosquitto/mosquitto.conf similarity index 100% rename from applications/dev-environment/docker/images/mosquitto/mosquitto.conf rename to applications/containers/mosquitto/mosquitto.conf diff --git a/applications/dev-environment/docker/images/mqtt-explorer/Dockerfile b/applications/containers/mqtt-explorer/Dockerfile similarity index 100% rename from applications/dev-environment/docker/images/mqtt-explorer/Dockerfile rename to applications/containers/mqtt-explorer/Dockerfile diff --git a/applications/dev-environment/docker/images/mqtt-explorer/entrypoint_wrapper.sh b/applications/containers/mqtt-explorer/entrypoint_wrapper.sh similarity index 100% rename from applications/dev-environment/docker/images/mqtt-explorer/entrypoint_wrapper.sh rename to applications/containers/mqtt-explorer/entrypoint_wrapper.sh diff --git a/applications/dev-environment/docker/images/mqtt-explorer/settings.json b/applications/containers/mqtt-explorer/settings.json similarity index 100% rename from applications/dev-environment/docker/images/mqtt-explorer/settings.json rename to applications/containers/mqtt-explorer/settings.json diff --git a/applications/dev-environment/docker/images/nodered/Dockerfile b/applications/containers/nodered/Dockerfile similarity index 92% rename from applications/dev-environment/docker/images/nodered/Dockerfile rename to applications/containers/nodered/Dockerfile index be2405a2d6..50d53fec02 100644 --- a/applications/dev-environment/docker/images/nodered/Dockerfile +++ b/applications/containers/nodered/Dockerfile @@ -4,6 +4,8 @@ RUN npm install node-red-contrib-ui-actions@0.1.8 RUN npm install node-red-node-ui-table@0.4.5 RUN npm install node-red-contrib-ui-level@0.1.46 +COPY nodered-settings.js /data/settings.js + USER root COPY entrypoint.sh /entrypoint.sh ARG TARGETARCH diff --git a/applications/dev-environment/docker/images/nodered/entrypoint.sh b/applications/containers/nodered/entrypoint.sh similarity index 100% rename from applications/dev-environment/docker/images/nodered/entrypoint.sh rename to applications/containers/nodered/entrypoint.sh diff --git a/applications/dev-environment/docker/images/nodered/entrypoint_wrapper.sh b/applications/containers/nodered/entrypoint_wrapper.sh similarity index 100% rename from applications/dev-environment/docker/images/nodered/entrypoint_wrapper.sh rename to applications/containers/nodered/entrypoint_wrapper.sh diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/nodered-settings.js b/applications/containers/nodered/nodered-settings.js similarity index 100% rename from applications/dev-environment/devcontainer/template/.devcontainer/nodered-settings.js rename to applications/containers/nodered/nodered-settings.js diff --git a/applications/dev-environment/docker/images/steve/Dockerfile b/applications/containers/steve/Dockerfile similarity index 100% rename from applications/dev-environment/docker/images/steve/Dockerfile rename to applications/containers/steve/Dockerfile diff --git a/applications/dev-environment/docker/images/steve/entrypoint_wrapper.sh b/applications/containers/steve/entrypoint_wrapper.sh similarity index 100% rename from applications/dev-environment/docker/images/steve/entrypoint_wrapper.sh rename to applications/containers/steve/entrypoint_wrapper.sh diff --git a/applications/dev-environment/docker/images/steve/init.sh b/applications/containers/steve/init.sh similarity index 100% rename from applications/dev-environment/docker/images/steve/init.sh rename to applications/containers/steve/init.sh diff --git a/applications/dev-environment/docker/images/steve/keystore.jks b/applications/containers/steve/keystore.jks similarity index 100% rename from applications/dev-environment/docker/images/steve/keystore.jks rename to applications/containers/steve/keystore.jks diff --git a/applications/dev-environment/docker/images/steve/main.properties b/applications/containers/steve/main.properties similarity index 100% rename from applications/dev-environment/docker/images/steve/main.properties rename to applications/containers/steve/main.properties diff --git a/applications/dev-environment/dependency_manager/.gitignore b/applications/dependency_manager/.gitignore similarity index 100% rename from applications/dev-environment/dependency_manager/.gitignore rename to applications/dependency_manager/.gitignore diff --git a/applications/dev-environment/LICENSE b/applications/dependency_manager/LICENSE similarity index 100% rename from applications/dev-environment/LICENSE rename to applications/dependency_manager/LICENSE diff --git a/applications/dev-environment/dependency_manager/README.md b/applications/dependency_manager/README.md similarity index 100% rename from applications/dev-environment/dependency_manager/README.md rename to applications/dependency_manager/README.md diff --git a/applications/dev-environment/dependency_manager/generate_bash_completion.sh b/applications/dependency_manager/generate_bash_completion.sh similarity index 100% rename from applications/dev-environment/dependency_manager/generate_bash_completion.sh rename to applications/dependency_manager/generate_bash_completion.sh diff --git a/applications/dev-environment/dependency_manager/pyproject.toml b/applications/dependency_manager/pyproject.toml similarity index 100% rename from applications/dev-environment/dependency_manager/pyproject.toml rename to applications/dependency_manager/pyproject.toml diff --git a/applications/dev-environment/dependency_manager/requirements.txt b/applications/dependency_manager/requirements.txt similarity index 100% rename from applications/dev-environment/dependency_manager/requirements.txt rename to applications/dependency_manager/requirements.txt diff --git a/applications/dev-environment/dependency_manager/setup.cfg b/applications/dependency_manager/setup.cfg similarity index 100% rename from applications/dev-environment/dependency_manager/setup.cfg rename to applications/dependency_manager/setup.cfg diff --git a/applications/dev-environment/dependency_manager/setup.py b/applications/dependency_manager/setup.py similarity index 100% rename from applications/dev-environment/dependency_manager/setup.py rename to applications/dependency_manager/setup.py diff --git a/applications/dev-environment/dependency_manager/src/edm_tool/__init__.py b/applications/dependency_manager/src/edm_tool/__init__.py similarity index 100% rename from applications/dev-environment/dependency_manager/src/edm_tool/__init__.py rename to applications/dependency_manager/src/edm_tool/__init__.py diff --git a/applications/dev-environment/dependency_manager/src/edm_tool/bazel.py b/applications/dependency_manager/src/edm_tool/bazel.py similarity index 100% rename from applications/dev-environment/dependency_manager/src/edm_tool/bazel.py rename to applications/dependency_manager/src/edm_tool/bazel.py diff --git a/applications/dev-environment/dependency_manager/src/edm_tool/edm-completion.bash b/applications/dependency_manager/src/edm_tool/edm-completion.bash similarity index 100% rename from applications/dev-environment/dependency_manager/src/edm_tool/edm-completion.bash rename to applications/dependency_manager/src/edm_tool/edm-completion.bash diff --git a/applications/dev-environment/dependency_manager/src/edm_tool/edm.py b/applications/dependency_manager/src/edm_tool/edm.py similarity index 99% rename from applications/dev-environment/dependency_manager/src/edm_tool/edm.py rename to applications/dependency_manager/src/edm_tool/edm.py index 4f44d339a2..3946acd9d2 100755 --- a/applications/dev-environment/dependency_manager/src/edm_tool/edm.py +++ b/applications/dependency_manager/src/edm_tool/edm.py @@ -1337,7 +1337,7 @@ def release_handler(args): metadata_yaml = {} metadata_file = os.environ.get('EVEREST_METADATA_FILE', None) - metadata_url = "https://raw.githubusercontent.com/EVerest/everest-dev-environment/main/everest-metadata.yaml" + metadata_url = "https://raw.githubusercontent.com/EVerest/everest-core/main/everest-metadata.yaml" if not metadata_file: metadata_path = build_path / "everest-metadata.yaml" diff --git a/applications/dev-environment/dependency_manager/src/edm_tool/templates/cpm.jinja b/applications/dependency_manager/src/edm_tool/templates/cpm.jinja similarity index 100% rename from applications/dev-environment/dependency_manager/src/edm_tool/templates/cpm.jinja rename to applications/dependency_manager/src/edm_tool/templates/cpm.jinja diff --git a/applications/dev-environment/.clang-format b/applications/dev-environment/.clang-format deleted file mode 100644 index 42df3fa662..0000000000 --- a/applications/dev-environment/.clang-format +++ /dev/null @@ -1,138 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: LLVM -AccessModifierOffset: -4 -AlignAfterOpenBracket: Align -AlignConsecutiveMacros: true -AlignConsecutiveAssignments: false -AlignConsecutiveDeclarations: false -AlignEscapedNewlines: Right -AlignOperands: true -AlignTrailingComments: true -AllowAllArgumentsOnNextLine: true -AllowAllConstructorInitializersOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine: Never -AllowShortCaseLabelsOnASingleLine: false -AllowShortEnumsOnASingleLine: false -AllowShortFunctionsOnASingleLine: None -AllowShortLambdasOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Never -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: MultiLine -BinPackArguments: true -BinPackParameters: true -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: false - AfterEnum: false - AfterFunction: false - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakBeforeBinaryOperators: None -BreakBeforeBraces: Attach -BreakBeforeInheritanceComma: false -BreakInheritanceList: BeforeColon -BreakBeforeTernaryOperators: true -BreakConstructorInitializersBeforeComma: false -BreakConstructorInitializers: AfterColon -BreakAfterJavaFieldAnnotations: false -BreakStringLiterals: true -ColumnLimit: 120 -CommentPragmas: '^ IWYU pragma:' -CompactNamespaces: false -ConstructorInitializerAllOnOneLineOrOnePerLine: true -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: true -DeriveLineEnding: true -DerivePointerAlignment: false -DisableFormat: false -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: true -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - SortPriority: 0 - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - - Regex: '.*' - Priority: 1 - SortPriority: 0 -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentCaseLabels: false -IndentGotoLabels: true -IndentPPDirectives: None -IndentWidth: 4 -IndentWrappedFunctionNames: false -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 2 -ObjCSpaceAfterProperty: false -ObjCSpaceBeforeProtocolList: true -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Left -ReflowComments: true -SortIncludes: true -SortUsingDeclarations: true -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -SpaceBeforeCpp11BracedList: false -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: true -SpaceInEmptyBlock: false -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: false -SpacesInConditionalStatement: false -SpacesInContainerLiterals: true -SpacesInCStyleCastParentheses: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -SpaceBeforeSquareBrackets: false -Standard: Latest -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 8 -UseCRLF: false -UseTab: Never -... - diff --git a/applications/dev-environment/.eslintrc.json b/applications/dev-environment/.eslintrc.json deleted file mode 100644 index 35bee0fa0a..0000000000 --- a/applications/dev-environment/.eslintrc.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "es2021": true - }, - "extends": [ - "airbnb-base" - ], - "parserOptions": { - "ecmaVersion": 12 - }, - "rules": { - "camelcase": "off", - "eqeqeq": [ - "error", - "smart" - ], - "comma-dangle": [ - "warn", - { - "objects": "always-multiline", - "arrays": "always-multiline", - "functions": "never" - } - ], - "import/no-unresolved": [ - 2, - { - "ignore": [ - "everestjs" - ] - } - ], - "max-len": [ - "warn", - { - "code": 120, - "tabWidth": 2 - } - ] - } -} \ No newline at end of file diff --git a/applications/dev-environment/.gitignore b/applications/dev-environment/.gitignore deleted file mode 100644 index 88fc2531f0..0000000000 --- a/applications/dev-environment/.gitignore +++ /dev/null @@ -1 +0,0 @@ -workspace.yaml diff --git a/applications/dev-environment/CMakeLists.txt b/applications/dev-environment/CMakeLists.txt deleted file mode 100644 index dc413dba1e..0000000000 --- a/applications/dev-environment/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -ev_setup_cmake_variables_python_wheel() - -ev_add_pip_package( - NAME edm - SOURCE_DIRECTORY dependency_manager -) - -ev_is_python_venv_active( - RESULT_VAR IS_PYTHON_VENV_ACTIVE -) - -if(NOT ${IS_PYTHON_VENV_ACTIVE}) - message(WARNING "Python venv is not active. Please ensure that edm is available in your environment.") -else() - get_target_property(SOURCE_DIRECTORY ev_pip_package_edm SOURCE_DIRECTORY) - message(STATUS "Installing edm from: ${SOURCE_DIRECTORY}") - ev_pip_install_local( - PACKAGE_NAME "edm" - PACKAGE_SOURCE_DIRECTORY "${SOURCE_DIRECTORY}" - ) - unset(EVEREST_DEPENDENCY_MANAGER CACHE) - find_program(EVEREST_DEPENDENCY_MANAGER edm HINTS ${EV_ACTIVATE_PYTHON_VENV_PATH_TO_VENV}/bin REQUIRED) - message(STATUS "Using edm from: ${EDM}") -endif() diff --git a/applications/dev-environment/README.md b/applications/dev-environment/README.md deleted file mode 100644 index 132733fd17..0000000000 --- a/applications/dev-environment/README.md +++ /dev/null @@ -1,442 +0,0 @@ -# EVerest Development - -This repository contains the steps required to build EVerest using either a container-based solution or bare metal. - -- [EVerest Container Based Development](#everest-container-based-development) - - [Prerequisites](#prerequisites) - - [Quick Start (using VS Code Development - full automation)](#quick-start-using-vs-code-development---full-automation) - - [Manual Docker Setup](#manual-docker-setup) - - [Available Services and Docker Compose Profiles](#available-services-and-docker-compose-profiles) - - [Environment Variables](#environment-variables) - - [Working with Multiple Repositories](#working-with-multiple-repositories) - - [Shell Completion (Optional)](#shell-completion-optional) - - [SIL Simulation](#sil-simulation) - - [Building EVerest](#building-everest) - - [Available Node-RED UI Simulations](#available-node-red-ui-simulations) - - [Troubleshooting](#troubleshooting) -- [Everest Bare Metal Development](#everest-bare-metal-development) - - [Python Prerequisites](#python-prerequisites) - - [EDM Prerequisites](#edm-prerequisites) - - [Building with Tests](#building-with-tests) - - [Cross-Compilation](#cross-compilation) - -## EVerest Container Based Development - -### Prerequisites - -To install the prerequisites, please check your operating system or distribution online documentation: - -- VS Code with Docker extension -- Docker installed (check documentation here: ) -- Docker compose installed version V2 (not working with V1). Tested with Linux, specifically with Ubuntu 22.04 and 24.04. - -### Quick Start (using VS Code Development - full automation) - -The easiest way to develop is using VS Code with the development container: - -1. Follow the steps below -2. VS Code will automatically build the container with your repository settings -3. All development happens inside the container with the correct environment variables - -The contents of your folder where the code resides (e.g., `my-workspace`) are mapped inside the container in the folder called `/workspace`. -You can exit VS Code at any time, re-running it will cause VS Code to ask you again to reopen in container. -Here are the steps required: - -1. **Create a folder for your project** - Create a new directory and navigate into it. This directory will be your new workspace or use an existing one. - - ```bash - mkdir my-workspace - cd my-workspace - ``` - -2. **Install DevContainer template:** - You can use the following command to download and install the devcontainer template: - - **One-liner:** - - ```bash - curl -s https://raw.githubusercontent.com/EVerest/everest-core/refs/heads/main/applications/dev-environment/devcontainer/setup-container > setup-container && chmod +x setup-container && ./setup-container - ``` - - **Manual clone (if curl fails):** - - ```bash - git clone git@github.com:EVerest/everest-core.git - cp everest-core/applications/dev-environment/devcontainer/setup-container setup-container - chmod +x setup-container - ./setup-container - # you can delete the everest-core folder, it is not needed anymore - rm -rf everest-core - ``` - - The script will ask you for: - 1. **Workspace directory**: Press Enter to use current directory (recommended) - 2. **Version**: Press Enter to use 'main' (recommended) - 3. **Continue if directory not empty**: Type 'y' and press Enter (since you downloaded the setup-container script) - -3. **Open in VS Code:** - Then open the workspace in Visual Studio Code: - - ```bash - code . - ``` - - Or press Ctrl+O to open the current folder in VSCode. - - Choose **Reopen in container** when prompted by VS Code. - -### Manual Docker Setup - -If you prefer to run the container outside VS Code, the `./devrd` script provides comprehensive control: - -```bash -# Quick start (generate .env and start all services) -./devrd start - -# Step-by-step workflow: -./devrd build # Build container (generates .env if missing) -./devrd start # Start all services (generates .env if missing) -./devrd stop # Stop all services -./devrd purge # Remove all containers, images, and volumes - -# Container access: -./devrd prompt # Get interactive shell in container -./devrd exec # Execute single command in container - -# Node-RED SIL Simulation: -./devrd flows # List available simulation flows -./devrd flow # Switch to specific flow file - -# Custom environment configuration: -./devrd env -w /path/to/workspace # Set workspace directory mapping -``` - -#### Available Services and Docker Compose Profiles - -Services are organized into logical profiles for easier management: - -| Profile | Service | Container Name | URL | Purpose | -| --------------- | ----------------- | --------------------------------------- | -------------------------- | ------------------------- | -| `mqtt/ocpp/sil` | **MQTT Server** | `_devcontainer-mqtt-server-1` | localhost:1883 | Basic MQTT broker | -| `ocpp` | **OCPP DB** | `_devcontainer-ocpp-db-1` | Internal | OCPP database | -| `ocpp` | **Steve (HTTP)** | `_devcontainer-steve-1` | | OCPP backend management | -| `sil` | **Node-RED UI** | `_devcontainer-nodered-1` | | SIL simulation interface | -| `sil` | **MQTT Explorer** | `_devcontainer-mqtt-explorer-1` | | MQTT topic browser | -| `ocpp/sil` | **Dev Container** | `_devcontainer-devcontainer-1` | Command line | The development container | -| `ocpp/sil` | **Docker Proxy** | `_devcontainer-docker-proxy-1` | Internal | Secure Docker API access | - -**Note:** The `all` profile is a synthetic profile that includes all services. Use `./devrd start all` or `./devrd start` (default) to start all services. - -Where `` is the Docker Compose project name (check below). - -**Usage Examples:** - -```bash -# Start profiles -./devrd start # Start all services (generates .env if missing) -./devrd start all # Start all services (same as above) -./devrd start sil # Start SIL simulation tools -./devrd start ocpp # Start OCPP backend -./devrd start mqtt # Start only MQTT server - -# Stop services -./devrd stop # Stop all services -./devrd stop all # Stop all services (same as above) -./devrd stop sil # Stop SIL profile only -./devrd stop ev-ws # Stop all containers matching pattern 'ev-ws' -``` - -The Docker Compose project name determines how containers are named and grouped. -By default, it uses the **current folder name with _devcontainer suffix** (consistent with VSC behavior), but can be customized: - -| Behavior | Description | -| ------------ | -------------------------------------------------------------------------------------------- | -| **Default** | Uses current folder name + `_devcontainer` (e.g., `ev-ws_devcontainer` for `/path/to/ev-ws`) | -| **Override** | Set `DOCKER_COMPOSE_PROJECT_NAME` environment variable | -| **Example** | `DOCKER_COMPOSE_PROJECT_NAME="my-project" ./devrd start` | - -**Container naming pattern:** `{project-name}-{service}-1` - -- Default: `ev-ws_devcontainer-nodered-1`, `ev-ws_devcontainer-steve-1` -- Custom: `my-project-nodered-1`, `my-project-steve-1` - -#### Environment Variables - - You can generate an .env file with auto-detected values using this command: - - ```bash - ./devrd env # Generate .env file with auto-detected values - ``` - - This will create a `.devcontainer/.env` file with the following content: - - ```bash - # Auto-generated by setup script - ORGANIZATION_ARG=EVerest - REPOSITORY_HOST=gitlab.com - REPOSITORY_USER=git - COMMIT_HASH=<..> - EVEREST_TOOL_BRANCH=main - UID=<..> - GID=<..> - HOST_WORKSPACE_FOLDER=/home/fmihut/checkout/ev-ws - ``` - -These variables are automatically mapped in the container to the following environment variables: - -- `ORGANIZATION_ARG`: Maps to `EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION` -- `REPOSITORY_HOST`: Maps to `EVEREST_DEV_TOOL_DEFAULT_GIT_HOST` -- `REPOSITORY_USER`: Maps to `EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER` -- `EVEREST_TOOL_BRANCH`: Maps to `EVEREST_TOOL_BRANCH` -- `HOST_WORKSPACE_FOLDER`: The directory mapped to `/workspace` inside the container - -Use this mechanism if you have a different organization or git host or user. -This is useful if you have forked and you are hosting your development outside github. - -**Workspace Folder Mapping:** - -The `/workspace` directory inside the container can be mapped to any folder on your host system. The workspace folder is determined in the following priority order: - -1. **Command line option**: `-w` or `--workspace` flag -2. **Environment variable**: `HOST_WORKSPACE_FOLDER` environment variable -3. **`.env` file**: `HOST_WORKSPACE_FOLDER` value in `.devcontainer/.env` -4. **Current directory**: Falls back to the current working directory - -The `.devcontainer` directory (containing `.env` and Docker Compose files) is always located relative to where the `devrd` script is installed. This allows you to: - -- Run `devrd` from any directory in your workspace -- Use a single `devrd` installation to manage multiple workspaces by changing `HOST_WORKSPACE_FOLDER` in the `.env` file - -```bash -# Set workspace mapping via command line -./devrd env -w /path/to/workspace # Map to any directory -./devrd start - -# Or edit .devcontainer/.env directly and set HOST_WORKSPACE_FOLDER -# Then run from anywhere: -cd /path/to/workspace/subfolder -../devrd start # Works correctly, uses workspace from .env file -``` - -#### Working with Multiple Repositories - -To work with multiple everest repositories: - -1. **Follow the [Quick Start](#quick-start-using-vs-code-development---full-automation) setup** to create your workspace and install the devcontainer template -2. **Start VS Code** or run the container manually -3. **Clone additional repositories:** - -```bash -# Follow the Quick Start setup first and -# Build and start the environment -./devrd build # generates .env if missing and builds the container -code . # if you use VSCode -./devrd start # not using VSCode (generates .env if missing) -./devrd prompt # not using VSCode - -# inside the container -cd /workspace -everest clone everest-core # or use the git command to clone -everest clone everest-framework # or use the git command to clone -cd everest-core -# Build the project (see Building EVerest section for details) -cmake -S . -B build -G Ninja -ninja -C build install -# this is building everest-core and it will use the everest-framework cloned locally -# the rest of the dependencies will be automatically downloaded by edm -# you can manually clone any of the dependencies locally if you want to -``` - -#### Shell Completion (Optional) - -Command line completion for the `devrd` script is **enabled by default** in the container. The completion file is automatically sourced when you start a shell session. - -If you want to enable completion on your host system (outside the container): - -**For Bash:** - -```bash -# Add to your ~/.bashrc -source .devcontainer/devrd-completion.bash -``` - -**For Zsh:** - -```bash -# Add to your ~/.zshrc -autoload -U compinit && compinit -source .devcontainer/devrd-completion.zsh -``` - -**Available completions:** - -- **Commands**: `env`, `build`, `start`, `stop`, `prompt`, `purge`, `exec`, `flows`, `flow` -- **Options**: `-v`, `--version`, `-w`, `--workspace`, `--help` -- **Node-RED flows**: dynamically detected from container (full file paths) -- **Directories**: for workspace option -- **Common commands**: for exec option - -**Example usage:** - -```bash -./devrd # Shows all commands -./devrd start # Shows available profiles to start -``` - -### SIL Simulation - -#### Building EVerest - -```bash -# 1. Start environment (HOST) -./devrd start - -# 2. Build project (CONTAINER) -./devrd prompt -cd /workspace -cmake -B build -S . -GNinja && ninja -C build install/strip - -# 3. Switch to simulation (HOST) -./devrd flow everest-core/config/nodered/config-sil-dc-flow.json - -# 4. Open UI -# Visit: http://localhost:1880/ui -``` - -**Note:** You can use `make` instead of `ninja` by removing `-G Ninja`. - -#### Available Node-RED UI Simulations - -| Flow File | Description | -| -------------------------------------------------------------------- | -------------------- | -| `everest-core/config/nodered/config-sil-dc-flow.json` | Single DC charging | -| `everest-core/config/nodered/config-sil-dc-bpt-flow.json` | DC charging with BPT | -| `everest-core/config/nodered/config-sil-energy-management-flow.json` | Energy management | -| `everest-core/config/nodered/config-sil-two-evse-flow.json` | Two EVSE simulation | -| `everest-core/config/nodered/config-sil-flow.json` | Basic SIL simulation | - -#### Troubleshooting - -**Port conflicts:** - -Each instance uses the same ports (1883, 1880, 4000, etc.). Please note that only one instance can run at a time. -If another process is using the port you need here is how to detect it and make it available: - -```bash -sudo lsof -ti:1880 \| xargs sudo kill -9 -./devrd start -``` - -**Regenerate environment configuration:** - -```bash -./devrd env # Generate new .env file with auto-detection -``` - -**Customize environment variables:** - -```bash -# Use specific branch for everest-dev-environment -./devrd env -v release/1.0 -``` - -**Important:** If you manually edit the `.env` file and change `EVEREST_TOOL_BRANCH` or other build arguments, you must rebuild the container for changes to take effect: - -```bash -# Option 1: Force rebuild (recommended) -./devrd env # Regenerate .env if you edited it manually -./devrd build # Rebuild with new environment variables - -# Option 2: Clean rebuild (if rebuild doesn't work) -./devrd stop # Stop all containers, images, and volumes -./devrd purge # Remove all containers, images, and volumes -./devrd build # Rebuild from scratch -``` - -**Purge and rebuild:** - -```bash -./devrd purge # Remove all resources for current folder -./devrd build # Will generate .env if missing -``` - -**Volume conflicts:** - -Docker volumes are shared. Use `./devrd purge` before switching instances. - -**SSH keys:** - -Ensure your SSH agent has the necessary keys for all repositories. - -**Container naming:** - -Docker containers are named based on the workspace directory to avoid conflicts. - -**Environment configuration issues:** - -If you're having issues with environment variables or configuration, see the [Environment Variables](#environment-variables) section above. - -**Container build issues:** - -If containers fail to build or start, see the [Manual Docker Setup](#manual-docker-setup) section for basic commands. - -**Switching between instances:** - -```bash -# Stop current instance -./devrd stop - -# Purge if switching to different branch/project -./devrd purge - -# Start new instance -cd ~/different-everest-directory -./devrd start -``` - -## Everest Bare Metal Development - -### Python Prerequisites - -For development outside containers, install: - -```bash -python3 -m pip install protobuf grpcio-tools nanopb==0.4.8 -``` - -### EDM Prerequisites - -To be able to compile using Forgejo, you need to have edm tool at least with version 0.8.0: - -```bash -edm --version -edm 0.8.0 -``` - -### Building with Tests - -```bash -cmake -Bbuild -S. -GNinja -DBUILD_TESTING=ON -DEVEREST_EXCLUDE_MODULES="Linux_Systemd_Rauc" -ninja -C build -ninja -C build test -``` - -### Cross-Compilation - -Install the SDK as provided by Yocto (or similar). -Activate the environment (typically by sourcing a script). - -```bash -cd {...}/everest-core -cmake -S . -B build-cross -GNinja - -DCMAKE_INSTALL_PREFIX=/var/everest - -DEVC_ENABLE_CCACHE=1 - -DCMAKE_EXPORT_COMPILE_COMMANDS=1 - -DEVEREST_ENABLE_JS_SUPPORT=OFF - -DEVEREST_ENABLE_PY_SUPPORT=OFF - -Deverest-cmake_DIR= - -DESTDIR=dist ninja -C build-cross install/strip && \ - rsync -av build-cross/dist/var/everest root@:/var -``` diff --git a/applications/dev-environment/THIRD_PARTY.md b/applications/dev-environment/THIRD_PARTY.md deleted file mode 100644 index 920c29f40c..0000000000 --- a/applications/dev-environment/THIRD_PARTY.md +++ /dev/null @@ -1 +0,0 @@ -_Use this file to list out any third-party dependencies used by this project. You may choose to point to a Gemfile or other language specific packaging file for details._ diff --git a/applications/dev-environment/devcontainer/setup-container b/applications/dev-environment/devcontainer/setup-container deleted file mode 100755 index 951c7776ea..0000000000 --- a/applications/dev-environment/devcontainer/setup-container +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash - -set -e - -# Function to install devcontainer template -install_devcontainer() { - echo "πŸš€ Installing EVerest DevContainer Template" - echo "==========================================" - - read -p "Enter the workspace directory (default is the current directory): " WORKSPACE_DIR - if [ -z "$WORKSPACE_DIR" ]; then - WORKSPACE_DIR="./" - fi - WORKSPACE_DIR=$(realpath -m "$WORKSPACE_DIR") - - read -p "Enter the version of the everest-dev-environment (default is 'main'): " VERSION - if [ -z "$VERSION" ]; then - VERSION="main" - fi - - echo "Create the workspace directory '$WORKSPACE_DIR' if it does not exist" - mkdir -p $WORKSPACE_DIR - - # Check if workspace directory has files other than everest-dev-environment - WORKSPACE_CONTENTS=$(ls -A $WORKSPACE_DIR 2>/dev/null | grep -v "^everest-dev-environment$" || true) - if [ -n "$WORKSPACE_CONTENTS" ]; then - # The workspace directory is not empty (excluding everest-dev-environment), warning do you want to continue? - read -p "The workspace directory is not empty, do you want to continue? (y/N): " -r - case "$REPLY" in - [Nn]|"") - echo "Exiting.." - exit 1 - ;; - [Yy]) - ;; - *) - echo "Invalid input. Exiting.." - exit 1 - ;; - esac - fi - - # Check if everest-dev-environment exists locally - if [ -d "everest-dev-environment" ]; then - echo "Found local everest-dev-environment directory, using it instead of cloning..." - SOURCE_DIR="everest-dev-environment" - else - echo "No local everest-dev-environment found, cloning from GitHub..." - TMP_DIR=$(mktemp --directory) - git clone --quiet --depth 1 --single-branch --branch "$VERSION" https://github.com/EVerest/everest-dev-environment.git "$TMP_DIR" - SOURCE_DIR="$TMP_DIR" - fi - - echo "Copy the template devcontainer configuration files to the workspace directory" - cp -n -r $SOURCE_DIR/devcontainer/template/. $WORKSPACE_DIR/ - - # Ensure devrd script is executable - if [ -f "$WORKSPACE_DIR/devrd" ]; then - chmod +x "$WORKSPACE_DIR/devrd" - echo "βœ“ DevRD script installed and made executable" - else - echo "βœ– Warning: DevRD script not found after installation" - fi - - # Only remove temporary directory if we cloned it - if [ "$SOURCE_DIR" != "everest-dev-environment" ]; then - echo "Remove the temporary everest-dev-environment repository" - rm -rf "$SOURCE_DIR" - fi - - echo "DevContainer template installation complete!" - echo "Files installed to: $WORKSPACE_DIR" - echo "" - echo "Installed components:" - echo " βœ“ Dev Yard script (./devrd)" - echo " βœ“ DevContainer configuration (.devcontainer/)" - echo " βœ“ Shell completion (devrd-completion.bash/.zsh)" - echo "" - echo "Next steps:" - echo " cd $WORKSPACE_DIR" - echo " ./devrd env" - echo " ./devrd build" - echo " ./devrd start" - echo " ./devrd prompt" - echo "" - echo "Optional - Enable command completion:" - echo " Add to your shell configuration file:" - echo " β€’ For bash: Add 'source .devcontainer/devrd-completion.bash' to ~/.bashrc" - echo " β€’ For zsh: Add 'source .devcontainer/devrd-completion.zsh' to ~/.zshrc" - echo " β€’ For zsh: Also ensure completion is enabled: 'autoload -U compinit && compinit'" -} - -# Function to display help -show_help() { - echo "Usage: $0 [OPTIONS]" - echo "" - echo "This script installs the EVerest DevContainer template to a workspace." - echo "" - echo "Installed components:" - echo " β€’ DevRD script (./devrd) - Main development environment manager" - echo " β€’ DevContainer configuration (.devcontainer/) - VS Code container config" - echo " β€’ Shell completion (devrd-completion.bash/.zsh) - Command completion for bash/zsh" - echo "" - echo "After installation:" - echo " 1. cd to your workspace directory" - echo " 2. Run './devrd env' to generate .env file" - echo " 3. Run './devrd build' to build containers" - echo " 4. Run './devrd start' to start services" - echo " 5. Run './devrd prompt' to get shell access" - echo "" - echo "Optional - Enable command completion:" - echo " Add to your shell configuration file:" - echo " β€’ For bash: Add 'source .devcontainer/devrd-completion.bash' to ~/.bashrc" - echo " β€’ For zsh: Add 'source .devcontainer/devrd-completion.zsh' to ~/.zshrc" - echo " β€’ For zsh: Also ensure completion is enabled: 'autoload -U compinit && compinit'" - echo "" - echo "Options:" - echo " --help Display this help message" - echo "" - echo "Examples:" - echo " $0 # Install DevContainer template to workspace" - echo "" - echo "After installation, use './devrd' to manage the development environment." - exit 0 -} - -# Parse command line arguments -while [ $# -gt 0 ]; do - case $1 in - --help) - show_help - ;; - *) - echo "Unknown option: $1" - show_help - ;; - esac -done - -# Execute the installation -install_devcontainer \ No newline at end of file diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/Dockerfile b/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/Dockerfile deleted file mode 100644 index e669862873..0000000000 --- a/applications/dev-environment/devcontainer/template/.devcontainer/general-devcontainer/Dockerfile +++ /dev/null @@ -1,75 +0,0 @@ -# syntax=docker/dockerfile:1 -FROM ghcr.io/everest/everest-ci/dev-env-base:v1.5.4 - -# Build arguments for customization -ARG USERNAME=docker -ARG USER_UID=1000 -ARG USER_GID=1000 -ARG EVEREST_TOOL_BRANCH=main -ARG ORGANIZATION_ARG=EVerest -ARG REPOSITORY_HOST=github.com -ARG REPOSITORY_USER=git - -# Update the package list and install dependencies (run as root) -USER root -RUN apt-get update && apt-get install -y \ - protobuf-compiler \ - libsystemd-dev \ - tmux \ - chrpath \ - cpio \ - diffstat \ - gawk \ - wget \ - zstd \ - liblz4-tool \ - file \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y locales \ - && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ - && dpkg-reconfigure --frontend=noninteractive locales \ - && update-locale LANG=en_US.UTF-8 \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -ENV LANG en_US.UTF-8 - - -# Modify the existing docker user and group to match the host's USER_UID and USER_GID -RUN groupmod --gid ${USER_GID} ${USERNAME} && \ - usermod --uid ${USER_UID} --gid ${USER_GID} ${USERNAME} && \ - usermod -aG dialout ${USERNAME} - -# Switch to the docker user -USER ${USERNAME} -WORKDIR /home/${USERNAME} - -# Add known hosts for git repositories -RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan ${REPOSITORY_HOST} >> ~/.ssh/known_hosts - -# EVerest Development Tool - Dependencies -RUN pip install --break-system-packages \ - nanopb - -# EVerest Development Tool with cache busting based on commit hash -RUN python3 -m pip install --break-system-packages \ - git+https://github.com/EVerest/everest-dev-environment@${EVEREST_TOOL_BRANCH}#subdirectory=everest_dev_tool - -# Set environment variables -ENV EVEREST_DEV_TOOL_DEFAULT_GIT_METHOD=ssh -ENV EVEREST_DEV_TOOL_DEFAULT_GIT_HOST=${REPOSITORY_HOST} -ENV EVEREST_DEV_TOOL_DEFAULT_GIT_SSH_USER=${REPOSITORY_USER} -ENV EVEREST_DEV_TOOL_DEFAULT_GIT_ORGANIZATION=${ORGANIZATION_ARG} -ENV LD_LIBRARY_PATH=/usr/local/lib - -# Set up welcome message -RUN echo "echo \"πŸ”οΈ 🚘 Welcome to the EVerest development environment!\"" >> ${HOME}/.bashrc && \ - echo "echo \"To initialize the EVerest core repository everest-core in your workspace please run the following command:\"" >> ${HOME}/.bashrc && \ - echo "echo \"everest clone everest-core\"" >> ${HOME}/.bashrc && \ - echo "cd /workspace" >> ${HOME}/.bashrc - -# Enable command line completion for devrd script by default -RUN echo "" >> ${HOME}/.bashrc && \ - echo "# Enable devrd command completion if available" >> ${HOME}/.bashrc && \ - echo "if [ -f /workspace/.devcontainer/devrd-completion.bash ]; then" >> ${HOME}/.bashrc && \ - echo " source /workspace/.devcontainer/devrd-completion.bash" >> ${HOME}/.bashrc && \ - echo "fi" >> ${HOME}/.bashrc \ No newline at end of file diff --git a/applications/dev-environment/doc/REQUIREMENTS.md b/applications/dev-environment/doc/REQUIREMENTS.md deleted file mode 100644 index 69c30403bd..0000000000 --- a/applications/dev-environment/doc/REQUIREMENTS.md +++ /dev/null @@ -1,264 +0,0 @@ -# Docker-Based Workspace & Tooling β€” Requirements Specification - -Provide a lightweight, Docker-based workspace that runs both inside and outside Visual Studio Code (VS Code), orchestrates a set of containers (MQTT Explorer, OCPP/steve, Dev/Build, Node-RED), and includes a small setup tool to build, run, stop, purge, and interact with the environment. The dev container MUST support mounting a host folder as the workspace and allow building EVerest and running SIL. - ---- - -## Scope - -A minimal-dependency environment for development and simulation that: - -- Works **with** VS Code (Dev Containers) and **without** VS Code (CLI). -- Runs the following containers: **MQTT Explorer**, **OCPP (steve + deps)**, **Dev/Build container**, **Node-RED for simulation**. -- Provides a **setup tool** to manage lifecycle and developer workflows. -- Supports **EVerest build** and **SIL execution** inside the dev container. - ---- - -## Definitions - -- **Dev container**: Linux container used for building/running code (incl. EVerest + SIL). -- **Setup tool**: a small CLI (Bash or Python stdlib) wrapping `docker compose` and other commands. -- **SIL**: Software-in-the-Loop execution of EVerest components. -- **Profiles**: `docker compose` profiles enabling/disabling groups of services. - ---- - -## Target Platforms - -- **MUST**: Linux x86_64 -- **SHOULD**: Windows 11 (WSL2) and macOS (Apple Silicon) - ---- - -## Functional Requirements - -### F1. Minimal Dependencies - -- **MUST** require only: - 1. Docker Engine (or Docker Desktop) - 2. Docker Compose V2 -- **Optional** (editor integration): VS Code + β€œDev Containers” extension. -- **MUST NOT** require global host package managers (Node, Python, Java, etc.). - -**Acceptance:** On a clean host with only Docker/Compose, the setup tool builds and launches all profiles. - ---- - -### F2. VS Code Integration - -- Include `.devcontainer/` config enabling β€œReopen in Container”. -- Dev container **MUST** expose project as `/workspace` (see F6). -- System **MUST** be usable without VS Code (see F3). - -**Acceptance:** Opening the repo in VS Code and selecting β€œReopen in Container” starts the dev container with mounted workspace. - ---- - -### F3. CLI Operation (Outside VS Code) - -- All features **MUST** be accessible via the setup tool without VS Code. - -**Acceptance:** Every operation in F4/F5 is executable from a terminal with no editor running. - ---- - -### F4. Supported Containers - -Provide Compose services (each with its own profile): - -- **mqtt-explorer** β€” MQTT Explorer UI container -- **ocpp-steve** β€” OCPP server (steve) + dependencies (e.g., DB) -- **dev** β€” Build/dev container (toolchain for EVerest + SIL) -- **nodered** β€” Node-RED for simulation -- **Zellij or TMUX** β€” Possibility to see the logs of the other containers (low prio for now) - -**Acceptance:** `docker compose --profile up` starts the corresponding service(s). - ---- - -### F5. Setup Tool Capabilities - -Two separate CLI tools **MUST** be provided: - -**a) Installation Tool (`setup`)** - -- Runs installation directly when executed (no command needed) - -**b) Development Yard Tool (`devrd`)** - -**Start/Stop** - -- `start [mqtt|ocpp|dev|nodered|all]` -- `stop [mqtt|ocpp|dev|nodered|all]` - -**Build/Purge** - -- `build` builds images. -- `purge` removes containers/networks and optionally images/volumes. - -**Exec/Shell in Dev Container** - -- `exec ""` runs a shell command in the **running** dev container. -- `prompt` attaches an interactive shell to the dev container. - -**Select Node-RED Flow** - -- `flows` displays the available flows for the Node-RED container -- `set-flow ` selects the flow for the Node-RED container via bind-mount or env switch. -- Selection **MUST** persist across restarts (volume or config). - -**Version checking** - -- version check - the script should check the version of the docker tools it is using (docker compose). In case of major difference shall display an warning message. - -**Acceptance:** Each subcommand functions as specified and returns non-zero on error. - ---- - -### F6. Dev Container Workspace Mount - -- **MUST** mount a host folder as `/workspace` (read-write). -- Host path **MUST** be configurable (default: current folder). -- File changes **MUST** be reflected both ways. - -**Acceptance:** Creating a file on the host appears in `/workspace` and vice versa. - ---- - -### F7. EVerest Build & SIL - -- Dev container **MUST** include prerequisites to build EVerest. -- Dev container **COULD** include prerequisites to build an yocto image containing EVerest. - -**Acceptance:** On a fresh checkout, a build of EVerest completes successfully (network access assumed for deps). - ---- - -## Non-Functional Requirements - -### N1. Simplicity - -Repository **SHOULD** contain: - -- `.devcontainer/docker-compose.yml` (main compose file) -- `.devcontainer/general-devcontainer/` (devcontainer configuration) -- `setup` (≀ ~100 LOC, installation only) -- `devrd` (≀ ~600 LOC, development yard management) -- `README.md` (quickstart, troubleshooting) -- Documentation files in `doc/` directory - -Both tools **SHOULD NOT** depend on non-standard Python packages; if Python is used, restrict to the standard library and standard scripting. If Bash, rely only on POSIX tools. - ---- - -### N2. Isolation & Persistence - -- Use a dedicated Docker network; services **MUST** be reachable by service name. -- Persist appropriate data via named volumes (e.g., Node-RED data, steve DB). -- `devrd purge` **MUST** delete persisted data. -- Docker Compose project naming uses current folder name with `_devcontainer` suffix for consistency with VS Code. - ---- - -### N3. Configuration - -- All tunables (ports, flow path, workspace path) **MUST** be configurable via `.devcontainer/.env` and overridable via env vars/CLI flags. -- Environment configuration is auto-generated by `devrd env` command with sensible defaults. -- Workspace mapping is configurable via `devrd env -w ` option. - ---- - -### N4. Observability - -- `devrd start` **SHOULD** show per-service state, mapped ports, and container names. -- `devrd flows` **SHOULD** show Node-RED container status and list available flows. -- Container services summary displays actual port mappings and service URLs. - ---- - -### N5. Security Baseline - -- Containers **MUST NOT** run as root unless required; prefer an unprivileged user for dev. -- Avoid `--privileged` unless strictly necessary. -- Default ports **SHOULD** bind to localhost unless cross-host access is intended. -- SSH agent integration for Git operations with proper key management. - ---- - -## Suggested Compose Structure (High-Level) - -- **Profiles** - - `mqtt` β†’ MQTT Server - - `ocpp` β†’ MQTT Server, OCPP DB, Steve - - `sil` β†’ MQTT Server, Node-RED, MQTT Explorer - -- **Volumes** - - `nodered_data`, `steve_db` - -- **Network** - - Default Docker network (services reachable by name) - -- **Project Naming** - - `{workspace-folder-name}_devcontainer` (consistent with VS Code) - ---- - -## CLI Sketch - -```bash -# Installation (one-time setup) -./setup - -# Development environment management -./devrd start [dev|mqtt|ocpp|nodered|all] -./devrd stop [dev|mqtt|ocpp|nodered|all] -./devrd build [--all|service] -./devrd purge [service|all] [--with-images] [--with-volumes] -./devrd exec "" -./devrd shell -./devrd set-flow ./flows/sim_fast.flow.json -./devrd status -./devrd logs [service] [--follow] -./devrd build-everest -./devrd run-sil [args...] -``` - ---- - -## Defaults (Editable via `.devcontainer/.env`) - -``` -ORGANIZATION_ARG=EVerest -REPOSITORY_HOST=github.com -REPOSITORY_USER=git -COMMIT_HASH= -EVEREST_TOOL_BRANCH=main -UID= -GID= -HOST_WORKSPACE_FOLDER= -``` - ---- - -## Out-of-the-Box User Journeys - -1. **Run everything in VS Code** - `./setup` β†’ Open repo β†’ Reopen in Container β†’ `./devrd start all` β†’ open Node-RED/MQTT Explorer in browser. - -2. **Run headless (no VS Code)** - `./setup` β†’ `./devrd start dev` β†’ `./devrd build-everest` β†’ `./devrd run-sil --scenario basic` - -3. **Switch Node-RED flow** - `./devrd set-flow ./flows/ac_slow.flow.json` β†’ `./devrd stop nodered && ./devrd start nodered` - ---- - -*If you want, I can turn this into a ready-to-use `docker-compose.yml`, `.devcontainer/devcontainer.json`, and a tiny `tool.sh` next.* - -**Decision**: -The implementation will be having 3 parts: - -- a bash script `setup` for the installation of the dev container -- a pure bash script `devrd` (development yard) that will handle the instrumentation of the containers (build, start, stop, prompt, etc) -- a Python script for the convenience additional command and aliases (INSIDE the devcontainer) diff --git a/applications/dev-environment/docker/docker-compose.yml b/applications/dev-environment/docker/docker-compose.yml deleted file mode 100644 index 3c694cea32..0000000000 --- a/applications/dev-environment/docker/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: "3.6" - -volumes: - ocpp-db-data: - external: false - node-red-data: - external: false - -networks: - default: - external: true - name: infranet_network - -services: - mqtt-server: - build: images/mosquitto - ports: - - 1883:1883 - - 9001:9001 - - ocpp-db: - image: mariadb:10.4.30 # pinned to patch-version because https://github.com/steve-community/steve/pull/1213 - volumes: - - ocpp-db-data:/var/lib/mysql - ports: - - 13306:3306 - environment: - MYSQL_RANDOM_ROOT_PASSWORD: "yes" - MYSQL_DATABASE: ocpp-db - MYSQL_USER: ocpp - MYSQL_PASSWORD: ocpp - - steve: - build: images/steve - ports: - - 8180:8180 - - 8443:8443 - depends_on: - - ocpp-db - - nodered: - build: images/nodered - volumes: - - node-red-data:/data - depends_on: - - mqtt-server - ports: - - 1880:1880 diff --git a/applications/dev-environment/everest-complete-readonly.yaml b/applications/dev-environment/everest-complete-readonly.yaml deleted file mode 100644 index 6c5be79331..0000000000 --- a/applications/dev-environment/everest-complete-readonly.yaml +++ /dev/null @@ -1,60 +0,0 @@ -RISE-V2G: - git: https://github.com/EVerest/ext-RISE-V2G.git - git_tag: master - options: - - THIRD_PARTY_APP_DST rise_v2g -Josev: - git: https://github.com/EVerest/ext-switchev-iso15118.git - git_tag: everest - options: - - THIRD_PARTY_APP_DST josev -everest-cmake: - git: https://github.com/EVerest/everest-cmake.git - git_tag: main -everest-core: - git: https://github.com/EVerest/everest-core.git - git_tag: main -everest-dev-environment: - git: https://github.com/EVerest/everest-dev-environment.git - git_tag: main -everest-framework: - git: https://github.com/EVerest/everest-framework.git - git_tag: main -everest-utils: - git: https://github.com/EVerest/everest-utils.git - git_tag: main -libfsm: - git: https://github.com/EVerest/libfsm.git - git_tag: main -liblog: - git: https://github.com/EVerest/liblog.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libmodbus: - git: https://github.com/EVerest/libmodbus.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libocpp: - git: https://github.com/EVerest/libocpp.git - git_tag: main -libslac: - git: https://github.com/EVerest/libslac.git - git_tag: main -libsunspec: - git: https://github.com/EVerest/libsunspec.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libtimer: - git: https://github.com/EVerest/libtimer.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -ext-mbedtls: - git: https://github.com/EVerest/ext-mbedtls.git - git_tag: mbedtls-2.28.0-trustedCAKey -ext-openv2g: - git: https://github.com/EVerest/ext-openv2g.git - git_tag: everest diff --git a/applications/dev-environment/everest-complete.yaml b/applications/dev-environment/everest-complete.yaml deleted file mode 100644 index fc4be6d426..0000000000 --- a/applications/dev-environment/everest-complete.yaml +++ /dev/null @@ -1,60 +0,0 @@ -RISE-V2G: - git: git@github.com:EVerest/ext-RISE-V2G.git - git_tag: master - options: - - THIRD_PARTY_APP_DST rise_v2g -Josev: - git: git@github.com:EVerest/ext-switchev-iso15118.git - git_tag: everest - options: - - THIRD_PARTY_APP_DST josev -everest-cmake: - git: git@github.com:EVerest/everest-cmake.git - git_tag: main -everest-core: - git: git@github.com:EVerest/everest-core.git - git_tag: main -everest-dev-environment: - git: git@github.com:EVerest/everest-dev-environment.git - git_tag: main -everest-framework: - git: git@github.com:EVerest/everest-framework.git - git_tag: main -everest-utils: - git: git@github.com:EVerest/everest-utils.git - git_tag: main -libfsm: - git: git@github.com:EVerest/libfsm.git - git_tag: main -liblog: - git: git@github.com:EVerest/liblog.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libmodbus: - git: git@github.com:EVerest/libmodbus.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libocpp: - git: git@github.com:EVerest/libocpp.git - git_tag: main -libslac: - git: git@github.com:EVerest/libslac.git - git_tag: main -libsunspec: - git: git@github.com:EVerest/libsunspec.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -libtimer: - git: git@github.com:EVerest/libtimer.git - git_tag: main - options: - - BUILD_EXAMPLES OFF -ext-mbedtls: - git: git@github.com:EVerest/ext-mbedtls.git - git_tag: mbedtls-2.28.0-trustedCAKey -ext-openv2g: - git: git@github.com:EVerest/ext-openv2g.git - git_tag: everest diff --git a/applications/dev-environment/everest_dev_tool/LICENSE b/applications/dev-environment/everest_dev_tool/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/applications/dev-environment/everest_dev_tool/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/applications/dev-environment/devcontainer/devrd b/applications/devrd/devrd similarity index 99% rename from applications/dev-environment/devcontainer/devrd rename to applications/devrd/devrd index 01574e7d7f..7f77f1ec22 100755 --- a/applications/dev-environment/devcontainer/devrd +++ b/applications/devrd/devrd @@ -7,7 +7,7 @@ EVEREST_TOOL_BRANCH="main" # Script directory - where devrd is located SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # .devcontainer directory is always relative to the script location -DEVCONTAINER_DIR="${SCRIPT_DIR}/.devcontainer" +DEVCONTAINER_DIR="${SCRIPT_DIR}/../../.devcontainer" # .env file is always in the .devcontainer directory (relative to script) ENV_FILE="${DEVCONTAINER_DIR}/.env" @@ -250,8 +250,7 @@ start_compose_profile() { fi # Display workspace mapping - local workspace_folder=$(load_workspace_from_env "$(pwd)") - echo "Workspace mapping: $workspace_folder β†’ /workspace" + echo "Workspace mapping: $HOST_WORKSPACE_FOLDER β†’ /workspace" echo "" # Display container links diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/devrd-completion.bash b/applications/devrd/devrd-completion.bash similarity index 100% rename from applications/dev-environment/devcontainer/template/.devcontainer/devrd-completion.bash rename to applications/devrd/devrd-completion.bash diff --git a/applications/dev-environment/devcontainer/template/.devcontainer/devrd-completion.zsh b/applications/devrd/devrd-completion.zsh similarity index 100% rename from applications/dev-environment/devcontainer/template/.devcontainer/devrd-completion.zsh rename to applications/devrd/devrd-completion.zsh diff --git a/applications/dev-environment/everest_dev_tool/.gitignore b/applications/everest_dev_tool/.gitignore similarity index 100% rename from applications/dev-environment/everest_dev_tool/.gitignore rename to applications/everest_dev_tool/.gitignore diff --git a/applications/dev-environment/dependency_manager/LICENSE b/applications/everest_dev_tool/LICENSE similarity index 100% rename from applications/dev-environment/dependency_manager/LICENSE rename to applications/everest_dev_tool/LICENSE diff --git a/applications/dev-environment/everest_dev_tool/pyproject.toml b/applications/everest_dev_tool/pyproject.toml similarity index 100% rename from applications/dev-environment/everest_dev_tool/pyproject.toml rename to applications/everest_dev_tool/pyproject.toml diff --git a/applications/dev-environment/everest_dev_tool/src/everest_dev_tool/__init__.py b/applications/everest_dev_tool/src/everest_dev_tool/__init__.py similarity index 100% rename from applications/dev-environment/everest_dev_tool/src/everest_dev_tool/__init__.py rename to applications/everest_dev_tool/src/everest_dev_tool/__init__.py diff --git a/applications/dev-environment/everest_dev_tool/src/everest_dev_tool/git_handlers.py b/applications/everest_dev_tool/src/everest_dev_tool/git_handlers.py similarity index 100% rename from applications/dev-environment/everest_dev_tool/src/everest_dev_tool/git_handlers.py rename to applications/everest_dev_tool/src/everest_dev_tool/git_handlers.py diff --git a/applications/dev-environment/everest_dev_tool/src/everest_dev_tool/parser.py b/applications/everest_dev_tool/src/everest_dev_tool/parser.py similarity index 100% rename from applications/dev-environment/everest_dev_tool/src/everest_dev_tool/parser.py rename to applications/everest_dev_tool/src/everest_dev_tool/parser.py diff --git a/applications/dev-environment/everest-metadata.yaml b/everest-metadata.yaml similarity index 100% rename from applications/dev-environment/everest-metadata.yaml rename to everest-metadata.yaml