npm package: @nexstem/pipeline-cli
Description: CLI tool for managing and publishing pipelines to the Pipeline Registry
Author: Nexstem
Latest version: 1.0.4
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Pipeline CLI

A Node.js CLI tool for managing and publishing pipelines to the SW Registry Stack.

## Installation

```bash
# First, build the SDK
cd sdk/node
npm install
npm run build

# Then, install and build the CLI
cd ../../tools/pipeline-cli
npm install
npm run build
```

## Usage

### Initialize a New Pipeline

```bash
pipeline-cli init
```

This creates a folder named after your pipeline (slugified) and writes `pipeline.json` inside it.

```bash
pipeline-cli init --dir ./projects --name "My Pipeline" --version 1.0.0
```

Notes:
- The pipeline ID is auto-generated (UUID); you only provide the human-readable name.
- Pipeline names must contain only letters, numbers, `-`, or `_` (no spaces). The generated folder matches the name exactly (e.g., `./projects/my-pipeline/pipeline.json`).

### Validate a Pipeline

```bash
pipeline-cli validate
```

This performs a local structural validation (no native dependencies required). You can specify a different file:

```bash
pipeline-cli validate --file ./path/to/pipeline.json
```

### Push to Remote Registry

```bash
pipeline-cli push
```

This will:
1. Validate the pipeline
2. Create a tar.gz package
3. Push to the remote registry

Options:
- `--skip-validation`: Skip validation (not recommended)
- `--dir <directory>`: Pipeline directory (default: current directory)
- `--file <file>`: Path to pipeline.json (default: pipeline.json)
- `--remote-server <url>`: Harbor/registry endpoint (default: `https://demo.goharbor.io`)
- `--remote-user <user>` / `--remote-password <password>`: Credentials (defaults mirror `remote_config.hpp`)
- `--project <name>`: Project namespace (default: `pipeline_registry`)
- `--oras-bin <path>`: Custom path to the `oras` binary (default: `oras`)

## Pipeline Structure

A pipeline must have:
- `id`: Unique pipeline identifier
- `name`: Human-readable name
- `version`: Pipeline version (semver format)
- `nodes`: Array of node definitions
- `pipes`: Array of pipe definitions

Optional fields:
- `description`: Pipeline description
- `authors`: Array of author names
- `tags`: Array of tags
- `signalSocketIdentifier`: ZMQ socket identifier
- `entry`: Array of entry node IDs
- `exit`: Array of exit node IDs

## Examples

### Complete Workflow

```bash
# 1. Initialize a new pipeline
pipeline-cli init --id my-pipeline --name "My Pipeline"

# 2. Edit pipeline.json to add your nodes and pipes
# ...

# 3. Validate the pipeline
pipeline-cli validate

# 4. Push to remote registry
pipeline-cli push
```

## Configuration

The CLI uses the following defaults:
- Remote registry server: `https://demo.goharbor.io`
- Remote project: `pipeline_registry`
- Remote credentials: `operator_registry` / `Registry@1234@1234` (match `remote_config.hpp`)
- ORAS binary: `oras` (must be available on your PATH)
- Validation is pure TypeScript/JSON parsing (no native dependency)

You can override these with command-line options.

## Requirements

- Node.js >= 16.0.0
- Native pipeline bridge library (libpipeline_registry_bridge.\*) to push to remote
- ORAS CLI (for remote registry push)