Plugin SDK
SDK reference for CyanPrint plugin development
Plugin SDK
The @atomicloud/cyan-sdk package provides the API for developing CyanPrint plugins.
Installation
bun add @atomicloud/cyan-sdk
Overview
The plugin SDK is minimal by design. Plugins receive a directory containing generated template output (after all processors complete) and config, perform operations, and return the directory path.
Key Components
| Language | Entry Point | Input Type | Output Type |
|---|---|---|---|
| TypeScript | StartPluginWithLambda | CyanPluginInput / PluginInput | PluginOutput |
| Python | @start_plugin_with_fn | PluginInput | PluginOutput |
| C# | [PluginMain] attribute | PluginInput | PluginOutput |
Quick Example
plugin.ts
import { StartPluginWithLambda } from '@atomicloud/cyan-sdk';import { $ } from 'bun';StartPluginWithLambda(async (input) => {const { directory, config } = input;// Run commandsawait $`git -C ${directory} init`.quiet();// Return directoryreturn { directory };});
plugin.py
from atomicloud_cyan_sdk import start_plugin_with_fn@start_plugin_with_fnasync def main(input: PluginInput) -> PluginOutput:directory = input.directoryconfig = input.config# Run commands# subprocess.run(["git", "-C", directory, "init"])# Return directoryreturn {"directory": directory}
Plugin.cs
using Atomicloud.Cyan.Sdk;using System.Diagnostics;[PluginMain]public static class Plugin{public static async Task<PluginOutput> Main(PluginInput input){var directory = input.Directory;var config = input.Config;// Run commands// Process.Start("git", $"-C {directory} init")?.WaitForExit();// Return directoryreturn new PluginOutput { Directory = directory };}}
SDK Reference
StartPluginWithLambda
Entry point for plugin logic
PluginInput/Output
Type definitions for plugin input and output
Types
Complete type definitions reference
Plugin vs Processor SDK
| Feature | Plugin SDK | Processor SDK |
|---|---|---|
| Entry point | StartPluginWithLambda | StartProcessorWithLambda |
| Input type | CyanPluginInput | CyanProcessorInput |
| Output type | PluginOutput | ProcessorOutput |
| Handler params | 1 (input) | 2 (input, fileHelper) |
| Input fields | directory, config | readDirectory, writeDirectory, globs, config |
| File helper | Direct filesystem access | CyanFileHelper API |
| Primary use | Post-processing tasks | File transformation |
Related
- First Plugin - Create your first plugin
- Plugin Input/Output - Type definitions