Files
gh-secondsky-sap-skills-ski…/references/development-environment.md
2025-11-30 08:55:22 +08:00

288 lines
6.1 KiB
Markdown

# SAP HANA CLI - Development Environment Reference
**Source**: [https://github.com/SAP-samples/hana-developer-cli-tool-example](https://github.com/SAP-samples/hana-developer-cli-tool-example)
Configuration for development environments, testing, and multi-database support.
---
## DevContainer Setup
The repository includes VS Code DevContainer configuration for consistent development environments.
### Container Base
```dockerfile
# Base image: Node.js 22 on Debian Buster
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-22-buster
```
### System Packages Installed
```dockerfile
# Cloud Foundry CLI
apt-get install cf8-cli
# Utilities
apt-get install git jq
```
### Global npm Packages
```bash
npm install -g @ui5/cli
npm install -g @sap/cds-dk
npm install -g yo
npm install -g @sap/generator-hdb-project
npm install -g @sap/generator-fiori
npm install -g typescript
```
### VS Code Extensions (21 total)
| Category | Extensions |
|----------|------------|
| **SAP Tools** | CDS Language Support, Fiori Tools, SAP UX Pack, HANA Driver, XML Toolkit |
| **Development** | ESLint, Beautify, IntelliCode, REST Client |
| **Productivity** | GitLens, Bracket Pair Colorizer, Path IntelliSense |
| **Other** | Yeoman UI, Version Lens, VS Code Icons |
### Port Forwarding
```json
"forwardPorts": [4004, 3010]
```
- **4004**: CAP default server port
- **3010**: hana-cli UI default port
### Post-Creation Setup
```bash
bash -i install-btp.sh
```
Installs BTP CLI from SAP GitHub repository.
---
## Multi-Database Support
The hana-cli supports multiple database backends through abstraction.
### Database Adapters
| File | Database | Purpose |
|------|----------|---------|
| `hanaCDS.js` | SAP HANA | CDS-based connection via CAP |
| `hanaDirect.js` | SAP HANA | Direct connection via hdb |
| `postgres.js` | PostgreSQL | PostgreSQL backend |
| `sqlite.js` | SQLite | SQLite backend |
### Backend Selection
Database backend is selected based on:
1. Connection configuration
2. CDS profile settings
3. Command-specific requirements
### Database-Specific Commands
| Command | Purpose |
|---------|---------|
| `tablesPG` | List tables (PostgreSQL) |
| `tablesSQLite` | List tables (SQLite) |
| `tables` | List tables (HANA default) |
---
## XS API Support (On-Premise)
For on-premise XSA environments, additional utilities are available.
### XS Configuration Functions
| Function | Purpose |
|----------|---------|
| `getCFConfig()` | Read ~/.xsconfig |
| `getCFOrg()` | Get target organization |
| `getCFSpace()` | Get target space |
| `getCFTarget()` | Get API endpoint |
### XS Service Discovery
| Function | Purpose |
|----------|---------|
| `getServices()` | List all services |
| `getServiceGUID(service)` | Get service GUID |
| `getServicePlans(guid)` | Get service plans |
| `getHANAInstances()` | List HANA instances |
| `getHDIInstances()` | List HDI instances |
---
## SQL Injection Prevention
The tool includes built-in SQL injection protection.
### Validation Functions
| Function | Purpose |
|----------|---------|
| `isAcceptableParameter(value, maxToken)` | Validate SQL parameter |
| `isAcceptableQuotedParameter(value)` | Validate quoted strings |
| `escapeDoubleQuotes(value)` | Escape " characters |
| `escapeSingleQuotes(value)` | Escape ' characters |
### Security Features
- Comment detection (`--` and `/* */`)
- Quote nesting tracking
- Token counting
- Separator boundary enforcement
---
## Testing Configuration
### Test Framework
- **Framework**: Mocha
- **Reporter**: Mochawesome (HTML reports)
- **Timeout**: 10 seconds
- **Parallel**: Enabled
### Configuration (.mocharc.json)
```json
{
"timeout": "10s",
"parallel": true,
"reporter": "mochawesome",
"require": ["./tests/helper.js", "mochawesome/register"]
}
```
### Test Files
| Test | Purpose |
|------|---------|
| `SystemInfo.Test.js` | System info commands |
| `btpInfo.Test.js` | BTP info commands |
| `btpSubs.Test.js` | BTP subscriptions |
| `callProcedure.Test.js` | Procedure execution |
| `status.Test.js` | Connection status |
| `version.Test.js` | Version info |
---
## Fiori LaunchPad Configuration
### Tile Groups
**List Objects** (9 tiles):
- Containers, Data Types, Functions, Indexes
- Schemas, Tables, Table Inspection
- Views, View Inspection
**Admin** (3 tiles):
- Features, Feature Usage, SQL Query
**CF/XS** (5 tiles):
- HDI, SBSS, Schema, SecureStore, UPS instances
### Applications
| App | Path | Purpose |
|-----|------|---------|
| systemInfo | /systemInfo | System dashboard |
| readMe | /readMe | Documentation |
| changeLog | /changeLog | Version history |
| massConvert | /massConvert | Batch conversion |
---
## Version Checking
### Node.js Version Validation
```javascript
// Reads engines.node from package.json
// Current requirement: ≥20.19.0
```
### Update Notifications
The CLI includes update notification via `update-notifier` package.
---
## UI5 Configuration
### ui5.yaml Settings
```yaml
specVersion: "1.0"
type: application
metadata:
name: test1
server:
customMiddleware:
- name: fiori-tools-proxy
configuration:
backend:
- path: /sap/opu/odata
url: [http://localhost](http://localhost)
ui5:
path:
- /resources
- /test-resources
url: [https://ui5.sap.com](https://ui5.sap.com)
```
### Theme Support
- Light: `sap_horizon`
- Dark: `sap_horizon_dark`
- Legacy: `sap_fiori_3_dark`
---
## Building from Source
### Prerequisites
```bash
# Node.js 20.19.0 or higher
node --version
# Remove SAP registry if set
npm config delete @sap:registry
```
### Installation
```bash
# Clone repository
git clone [https://github.com/SAP-samples/hana-developer-cli-tool-example](https://github.com/SAP-samples/hana-developer-cli-tool-example)
# Install dependencies
cd hana-developer-cli-tool-example
npm install
# Link globally
npm link
```
### Using DevContainer
1. Open in VS Code with Remote-Containers extension
2. Select "Reopen in Container"
3. Wait for container build
4. Run `npm install && npm link`
---
*Reference: [https://github.com/SAP-samples/hana-developer-cli-tool-example*](https://github.com/SAP-samples/hana-developer-cli-tool-example*)