SAP Cloud SDK CLI
A nifty command line interface (CLI) for the SAP Cloud SDK for JavaScript to initialize and package your SAP Cloud Platform application.
It is also the launchpad when trying to set up the approuter or getting started with the SAP Cloud SDK for Continuous Delivery.
About the SDK
The SAP Cloud SDK supports you end-to-end when developing applications that communicate with SAP solutions and services such as SAP S/4HANA Cloud, SAP SuccessFactors, and many others.
Using the SDK, you can reduce your effort when developing an application on SAP Cloud Platform by building on best practices delivered by the SDK.
The SDK provides Java libraries, JavaScript libraries, project templates and a continuous delivery toolkit.
Installation
To install the CLI globally, run:
$ npm install -g @sap-cloud-sdk/cli
Update
As long as the CLI version is less than 1.0.0
, run the following to update to the latest version. Please keep in mind, that these updates can have breaking changes as per the semver spec.
$ npm install -g @sap-cloud-sdk/cli@latest
Usage
$ npm install -g @sap-cloud-sdk/cli
$ sap-cloud-sdk COMMAND
running command...
$ sap-cloud-sdk (-v|--version|version)
@sap-cloud-sdk/cli/0.1.4 linux-x64 node-v10.18.0
$ sap-cloud-sdk --help [COMMAND]
USAGE
$ sap-cloud-sdk COMMAND
...
The CLI can initialize an nest-based project or (the more common case) add everything you need to develop for SAP Cloud Platform to an existing project no matter what backend framework you use.
If there are any incompatibilities, please let us know in the issues!
To get started run
$ sap-cloud-sdk init
in the project folder.
It will guide you through the initialization, create the necessary files and add necessary dependencies.
If you run it in an empty folder, it will ask if you want to initialize a project using @nest/cli.
To deploy to and run on Cloud Foundry, you need to
- Make sure that your app listens to port 8080
- Build your app if necessary
- Run
sap-cloud-sdk package
- Push to Cloud Foundry (
cf push
)
For productive use, your app should implement user authentication and authorization.
For SAP Cloud Foundry, this is usually done by using the approuter and xsuaa service.
Start by running sap-cloud-sdk add-approuter
and configure the xsuaa service accordingly.
Commands
sap-cloud-sdk add-approuter [PROJECTDIR]
Setup your Cloud Foundry app to authenticate through the app router
USAGE
$ sap-cloud-sdk add-approuter [PROJECTDIR]
ARGUMENTS
PROJECTDIR Path to the project directory to which the approuter should be added.
OPTIONS
-h, --help Show help for the add-approuter command.
--force Do not fail if a file already exist and overwrite it.
ALIASES
$ sap-cloud-sdk add-app-router
EXAMPLE
$ sap-cloud-sdk add-approuter
See code: src/commands/add-approuter.ts
sap-cloud-sdk add-cds [PROJECTDIR]
Setup your Cloud Foundry app to use a CDS service
USAGE
$ sap-cloud-sdk add-cds [PROJECTDIR]
ARGUMENTS
PROJECTDIR Path to the project directory in which the cds sources should be added.
OPTIONS
-h, --help Show help for the add-cds command.
-v, --verbose Show more detailed output.
--force Do not fail if a file or npm script already exist and overwrite it.
EXAMPLE
$ sap-cloud-sdk add-cds
See code: src/commands/add-cds.ts
sap-cloud-sdk add-cx-server [PROJECTDIR]
Add the scripts to set up a Jenkins master for CI/CD of your project
USAGE
$ sap-cloud-sdk add-cx-server [PROJECTDIR]
ARGUMENTS
PROJECTDIR Path to the project directory to which the cx-server should be added.
OPTIONS
-h, --help Show help for the add-cx-server command.
--force Do not fail if a file already exist and overwrite it.
EXAMPLE
$ sap-cloud-sdk add-cx-server
See code: src/commands/add-cx-server.ts
sap-cloud-sdk autocomplete [SHELL]
display autocomplete installation instructions
USAGE
$ sap-cloud-sdk autocomplete [SHELL]
ARGUMENTS
SHELL shell type
OPTIONS
-r, --refresh-cache Refresh cache (ignores displaying instructions)
EXAMPLES
$ sap-cloud-sdk autocomplete
$ sap-cloud-sdk autocomplete bash
$ sap-cloud-sdk autocomplete zsh
$ sap-cloud-sdk autocomplete --refresh-cache
See code: @oclif/plugin-autocomplete
sap-cloud-sdk generate-odata-client
Generates a OData client from a edmx service file definition. For SAP solutions, you can find these definitions at https://api.sap.com/.
USAGE
$ sap-cloud-sdk generate-odata-client
OPTIONS
-i, --inputDir=inputDir (required) This directory will be recursively searched for
.edmx/.xml files.
-o, --outputDir=outputDir (required) Directory to save the generated code in.
-s, --serviceMapping=serviceMapping Configuration file to ensure consistent names between multiple
generation runs with updated / changed metadata files. Will be
generated if not existent. By default it will be saved to/read
from the input directory as "service-mapping.json".
--aggregatorDirectoryName=aggregatorDirectoryName Hack for cloud-sdk-vdm package
--aggregatorNpmPackageName=aggregatorNpmPackageName When provided, the generator will generate an additional package
with the provided name that has dependencies to all other
generated packages.
--changelogFile=changelogFile Path to file that will be copied into the generated packages
under the filename CHANGELOG.md.
--clearOutputDir When set to true, the generator will delete EVERYTHING in the
specified output directory before generating code. [default:
false].
--forceOverwrite By default, the generator will exit when encountering a file that
already exists. When set to true, it will be overwritten instead.
Please note that compared to the --clearOutputDir option, this
will not delete outdated files. [default: false].
--generateCSN When set to true a CSN file will be generated for each service
definition in the output directory. [default: false].
--[no-]generateJs By default, the generator will also generate transpiled .js,
.js.map, .d.ts and .d.ts.map files. When set to false, the
generator will only generate .ts files. [default: true].
--[no-]generateNpmrc By default, the generator will generate a .npmrc file specifying
a registry for @sap scoped dependencies. When set to false, the
generator will skip the generation of .npmrc. [default: true].
--[no-]generatePackageJson By default, the generator will generate a package.json file,
specifying dependencies and scripts for compiling and generating
documentation. When set to false, the generator will skip the
generation of the package.json. [default: true].
--[no-]generateTypedocJson By default, the generator will generate a typedoc.json file for
each package, used for the corresponding "doc" npm script. When
set to false, the generator will skip the generation of the
typedoc.json. [default: true].
--projectDir=projectDir [default: .] Path to the folder in which the VDM should be
created. The input and output dir are relative to this directory.
--s4hanaCloud When set to true, the description of the generated packages will
be specific to S/4HANA Cloud. [default: false].
--sdkAfterVersionScript When set to true, the package.json of generated services will
have the after-version script to internally keep the versions in
sync. [default: false].
--useSwagger Augment parsed information with information from swagger
definition files. Files are expected to have the same name as the
edmx file, but with .json as suffix. [default: false].
--writeReadme When set to true, the generator will write a README.md file into
the root folder of every package. This option does not make that
much sense without also set useSwagger to "true". [default:
false].
EXAMPLES
$ sap-cloud-sdk generate-odata-client -i directoryWithEdmxFiles -o outputDirectory --forceOverwrite
$ sap-cloud-sdk generate-odata-client --help
See code: src/commands/generate-odata-client.ts
sap-cloud-sdk help [COMMAND]
display help for sap-cloud-sdk
USAGE
$ sap-cloud-sdk help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
sap-cloud-sdk help-page
Display the product page, which contains tutorials and links to all relevant resources
USAGE
$ sap-cloud-sdk help-page
See code: src/commands/help-page.ts
sap-cloud-sdk init [PROJECTDIR]
Initializes your project for the SAP Cloud SDK, SAP Cloud Platform Cloud Foundry and CI/CD using the SAP Cloud SDK toolkit
USAGE
$ sap-cloud-sdk init [PROJECTDIR]
ARGUMENTS
PROJECTDIR Path to the directory in which the project should be created.
OPTIONS
-h, --help Show help for the init command.
-v, --verbose Show more detailed output.
--addCds Add a cds configuration and example data to follow the SAP Cloud Application Promgramming
model.
--force Do not fail if a file or npm script already exist and overwrite it.
--frontendScripts Add frontend-related npm scripts which are executed by our CI/CD toolkit.
--projectDir=projectDir Path to the directory in which the project should be created.
EXAMPLES
$ sap-cloud-sdk init
$ sap-cloud-sdk init --help
See code: src/commands/init.ts
sap-cloud-sdk package [PROJECTDIR]
Copies the specified files to the deployment folder
USAGE
$ sap-cloud-sdk package [PROJECTDIR]
ARGUMENTS
PROJECTDIR Path to the project directory that shall be packaged.
OPTIONS
-e, --exclude=exclude Comma seperated list of files or globs to exclude
-h, --help Show help for the package command.
-i, --include=include [default: package.json,package-lock.json,index.js,dist/**/*] Comma seperated list of files or
globs to include
-o, --output=output [default: deployment] Output and deployment folder
-v, --verbose Show more detailed output.
--skipInstall Skip `npm i --production` during packaging
EXAMPLES
$ sap-cloud-sdk package
$ sap-cloud-sdk package -i="index.html"
$ sap-cloud-sdk package --include="package.json,package-lock.json,index.js,dist/**/*" --exclude="**/*.java"
See code: src/commands/package.ts
Contribute
The CLI is based on oclif and can be extended using plugins.
If you think your plugin should be part of the CLI itself, feel free to open a pull request.
If you have found a bug in our existing functionality, please open an issue.
Package Manager
This repository uses yarn as a package manager.
This is only relevant for the development of the CLI.
Projects that use the CLI are free to use any package manager as long as a package.json
is present.
Release
The easiest way to create a new release is running
$ npx np
This will test the code, run any pre-publish steps, increase the version as selected by the user and create a draft release in github.
Afterwards fill in the release notes and press "Publish release".
This will trigger the github action and a new release will be published on npm
automatically.
License
Copyright (c) 2020 SAP SE or an SAP affiliate company.
All rights reserved.
This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file.
Note: This license does not apply to the SAP Cloud SDK for JavaScript Logo referenced in this README.