/cdt-cloud-blueprint

CDT.cloud Blueprint is a template for building custom web-based C/C++ tools. It is made up of existing open source components and can be easily downloaded and installed on all major operating system platforms.

Primary LanguageTypeScriptOtherNOASSERTION


CDT Cloud Blueprint is a template for building custom web-based C/C++ tools. It is made up of existing open source components and can be easily downloaded and installed on all major operating system platforms.

Visit the CDT Cloud website for more information.

License

What is this?

CDT Cloud Blueprint is a template for building custom web-based C/C++ tools. It is made up of existing open source components and can be easily downloaded and installed on all major operating system platforms.

What is it not?

CDT Cloud Blueprint is not a production-ready product. Therefore, it is also not meant to be a replacement for Visual Studio Code or any other IDE.

Current state

CDT Cloud Blueprint is in an early alpha state and undergoing active development. See this milestone for release 1.0.

Development

CDT Cloud Blueprint is based on Eclipse Theia Blueprint.

Requirements

Please check Theia's prerequisites, and keep node versions aligned between CDT Cloud Blueprint and that of the referenced Theia version.

Documentation

Documentation on how to package Theia as a Desktop Product may be found here

Repository Structure

  • Root level configures mono-repo build with lerna
  • applications groups the different app targets
    • browser contains a browser based version of CDT Cloud Blueprint that may be packaged as a Docker image
    • electron contains app to package, packaging configuration, and E2E tests for the Electron target.
  • theia-extensions groups the various custom theia extensions for CDT Cloud Blueprint
    • theia-blueprint-product contains a Theia extension contributing the product branding (about dialogue and welcome page).
    • theia-blueprint-updater contains a Theia extension contributing the update mechanism and corresponding UI elements (based on the Electron updater).

Build

yarn

Package the Electron Application

yarn electron package

The packaged application is located in applications/electron/dist.

Create a Preview Electron Application (without packaging it)

yarn electron package:preview

The packaged application is located in applications/electron/dist.

Workspace and example files

Running E2E Tests

The E2E tests basic UI tests of the actual application. This is done based on the preview of the packaged application.

yarn electron package:preview
yarn electron test

Docker based development

  1. Install the Remote Dev extension pack in VS Code
  2. Open this repository in VS Code
  3. In the notification that should appear: confirm to open this folder in the remote container instead
  4. Once VS Code is opened in the container and the Configuring Dev Container task is finished, run yarn browser start in the container's terminal to start the CDT Cloud blueprint backend.
  5. Once CDT Cloud blueprint is up, it should be running on 127.0.0.1:3000 and can be accessed from the host.

Now you can make changes to the source code and rebuild with yarn or run yarn watch before the changes. After a browser refresh, your changes should get effective.

Build & run Docker image

To build a fully functioning Docker image run:

docker build -t cdt-cloud-blueprint:latest -f dockerfile/Dockerfile .

To start the created image run:

docker run -it -p 0.0.0.0:3000:3000 -p 0.0.0.0:8080:8080 cdt-cloud-blueprint:latest

Running Browser app

The browser app may be started with

# Download Plugins for browser app
yarn browser download:plugins

# Start browser app
yarn browser start

and connect to http://localhost:3000/

Troubleshooting

Reporting Feature Requests and Bugs

The features in CDT Cloud Blueprint are based on Theia and the included extensions/plugins. For bugs in Theia please consider opening an issue in the Theia project on Github. CDT Cloud Blueprint only packages existing functionality into a product and installers for the product. If you believe there is a mistake in packaging, something needs to be added to the packaging or the installers do not work properly, please open an issue on Github to let us know.