-
Notifications
You must be signed in to change notification settings - Fork 18
Functions
The following functions are already implemented:
- installDevonfwIde
- restoreDevonfwIde
- restoreWorkspace
- changeWorkspace
- installCobiGen
- cobiGenJava
- createDevon4jProject
- buildJava
- createFile
- changeFile
- createFolder
- cloneRepository
- runServerJava
- buildNg
- npmInstall
- dockerCompose
- downloadFile
- nextKatacodaStep
- adaptTemplatesCobiGen
- createDevon4ngProject
- The tools you want to install within the devonfw ide: string array
- Optional: The version of the ide to install
installDevonfwIde(["java","mvn"], "2020.08.001")
- The tools you want to install within the devonfw ide: string array
- Optional: The version of the ide to install
restoreDevonfwIde(["java","mvn"], "2020.08.001")
In the Katacoda environment the installation of the devonfw IDE is executed in a startup script.
- (Optional):
- Name of the workspace repository {"workspace": string} (Default is the playbook-name)
- local workspace {"local": boolean} (Default is false)
User(Optional) flag: --user value: GitHub-username (Default is 'devonfw-tutorials')
You can use a forked workspace-repository, if you add the username as argument. If the runner cannot find the workspace repository in the your repositories, it will use devonfw-tutorials instead.
Branch(Optional) flag: --branch value: the working branch (Default is its default-branch)
You can use a different branch, if you add the working branch as argument. If the runner cannot find the branch in the cloned repository, it will use the default branch instead.
buildRun.sh --user [username] --branch [branch]
restoreWorkspace() will clone "https://github.com/devonfw-tutorials/[playbook-name]" into the workspace directory.
restoreWorkspace({"workspace": [name]}) will clone "https://github.com/devonfw-tutorials/[name]" into the workspace directory.
buildRun.sh --user [GitHub-name] --branch [branch] restoreWorkspace() will run "git clone https://github.com/[GitHub-name]/[playbook-name]" and checkout in branch [branch]
workspace The default name of the workspace repository is a concatenation of "workspace-" and the name of your playbook-folder. If you want to use another repository as workspace, you can specify the ending with {"workspace": [name]}. example "workspace-devon4ng" -> {"workspace" : "devon4ng"}
local You can use a local repository as workspace in your tutorial. Clone the forked repository next to the tutorial-compiler folder and set the "local"-parameter to true {"local": true}
|--tutorial-compiler
|--tutorials
|--workspace-devon4ng
- path to a new workspace (relative to working directory)
changeWorkspace("devonfw/workspaces/project") will set the workspace directory to "[working directory]/devonfw/workspaces/project"
Learn more about the workspace directory and working direktory on Structure
- No parameters
installCobiGen()
- The path to the java file you want to generate code for: string
- The numbers that represent the templates that CobiGen uses to generate code: int array
cobiGenJava("path/to/java/file/MyEntity.java",[1,3,5,6,8])
Number | Description |
---|---|
1 | CRUD logic: Generates the logic layer and implementations for some use cases. |
3 | CRUD REST services: Generates the service layer with CRUD operations for using in REST services. |
5 | TO's: Generates the related Transfer Objects. |
6 | Entity infrastructure: Creates the entity main interface and edits (by a merge) the current entity to extend the newly generated classes. |
8 | CRUD SpringData Repository: Generates the entity repository (that contains the CRUD operations) in the data access layer. |
- The project name
createDevon4jProject("cobigenexample")
- The project directory
- (Optional) Indicator whether tests should be run. Default is false.
buildJava("cobigenexample", true)
- Path of the file to be created (relative path to the workspace directory)
- (Optional) Path of the file to get the content from. Relative to the playbook directory
createFile("cobigenexample/core/src/main/java/com/example/application/cobigenexample/customermanagement/dataaccess/api/CustomerEntity.java", "files/CustomerEntity.java")
- Path of the file to be changed (relative path to the workspace directory)
- Path of the file to get the content from or a string, that should be inserted.
- (Optional) Name of a placeholder
changeFile("cobigenexample/core/src/main/java/com/example/application/cobigenexample/customermanagement/dataaccess/api/CustomerEntity.java", { "file": "files/Placeholder.java", "placeholder": "private static final long serialVersionUID = 1L;" })
If you want to add content from a file: {"file": "[path]"} If you want to add a string to a file: {"content": "[string]"} If you want to add different contents for the katacoda and console runner, then use the properties "fileConsole" and "fileKatacoda" or "contentConsole" and "contentKatacoda": {"fileConsole": "[pathToConsoleFile]", "fileKatacoda": "[pathToKatacodaFile]"}
If you want to insert content into your code between two existing lines, take the previous line as your placeholder. Add your placeholder into the new file or string, otherwise it will be replaced entirely.
example:{...,"placeholder": "private int age;"}
Before | Content or File | After |
---|---|---|
private int age; |
private int age; |
private int age; |
A placeholder is optional. If you do not define a placeholder, the content in the existing file will be simply replaced by the new content.
Please try not to use custom placeholders. Keep in mind that you might want to build the project before changing them. Custom placeholders with a comment-syntax (e.g. "//PLACEHOLDER") will be removed by the console-environment and others might cause errors.
- Path of the folder to be created, relative to the workspace directory. Subdirectories are also created.
createFolder("directoryPath/subDirectory")
- Path into which the repository is to be cloned, relative to workspace.
- Git repository URL
cloneRepository("", "https://github.com/devonfw-forge/tutorial-compiler.git") Repository will be cloned directly into the workspace directory.
cloneRepository("devonfw-forge", "https://github.com/devonfw-forge/tutorial-compiler.git") Repository will be cloned into a newly created subdirectory devonfw-forge.
- Path to the server directory within the java project.
- Assertion information. Only needed for the console runner to check if the server was started properly.
runServerJava("devonfw/workspaces/main/jump-the-queue/java/jtqj/server", { "startupTime": 40, "port": 8081, "path": "jumpthequeue" })
startupTime = Time in seconds to wait before checking if the server is running port: Port on which the server is running path: The URL path on which is checked if the server is running
If the tutorial should be tested on the console environment, you have to specify a port.
- Path to the project where the dependencies from the package.json file are to be installed.
- Json-object: Name of a package, global or local installation, or array of npm arguments
- (Optional) name of a package {"name": string }
- (Optional) global or local installation. Default is local, therefore false {"global" : boolean }
- (Optional) array of npm arguments {"args": string[]}
npmInstall("jump-the-queue/angular", {"name": "@angular/cli", "global": true, "args": ["--save-dev"]}) will run 'npm install -g --save-dev @angular/cli' in the directory 'jump-the-queue/angular'.
npmInstall("my-thai-star/angular") will run 'npm install' in the directory 'my-thai-star/angular'
- Path to the directory where the docker-compose.yml file is located, relative to workspace.
- Assertion information. Only needed for the console runner to check if the server was started properly.
dockerCompose("my-thai-star", { "startupTime": 600, "port": 8081, "path": "" })
startupTime = Time in seconds to wait before checking if the server is running port: Port on which the server is running path: The URL path on which is checked if the server is running
If the tutorial should be tested on the console environment, you have to specify a port.
- URL of the file to be downloaded.
- Name of file.
- (Optional) Downloads file to a given directory relative to workspace. Directory is created, if its not existing.
downloadFile("https://bit.ly/2BCkFa9", "file", "downloads")
- Path to the angular project relative to workspace
- (Optional) Custom output directory.
buildNg("exampleAngularProject") Will build the angular project to default output directory defined in angular.json outputPath key, normally set to dist/.
buildNg("exampleAngularProject", "testOutput") Will build the angular project to output directory testOutput.
- Path to the angular project from which the frontend server is to be started.
- Assertion information. Only needed for the console runner to check if the server was started properly.
runClientNg("jump-the-queue/angular", { "startupTime": 200, "port": 4200, "path": "" })
startupTime = Time in seconds to wait before checking if the server is running port: Port on which the server is running path: The URL path on which is checked if the server is running
If the tutorial should be tested on the console environment, you have to specify a port.
- The title of the step.
- An array of json objects with files, content, or images to be rendered within the katacoda step.
- (Optional) Path to the current directory where the user is located (relative to the workspace directory). Only needed if the directory is changed within this step.
nextKatacodaStep("Step title", [{ "file": "files/description.md" }, { "content": "This is just plain content." }, { "image": "files/image.png" }])
Available attributes in the json objects:
file: Path to a file whose content is to be displayed in the katacoda step (e.g. .md or .txt file). content: Plain text to be displayed in the katacoda step. image: Path to an image to be displayed in the katacoda step.
- No parameters
adaptTemplatesCobiGen()
- Name of the Project.
- Path to where the Project should be created (relative to workspace). Folder should exist.
- (Optional) String array of parameters, according to https://angular.io/cli/new.
createDevon4ngProject("exampleAngularProject", "") Will create the angular project to the current workspace with the name exampleAngularProject.
createDevon4ngProject("exampleAngularProject", "projects", ["--verbose"]) Will create the angular project to the directory projects within the current workspace and adds more details to output logging.
This command also works if the devonfw IDE is not installed, but then you have to make sure that the Angular cli is installed.