LogoCyanPrint
PluginsReferenceSDK Reference

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

LanguageEntry PointInput TypeOutput Type
TypeScriptStartPluginWithLambdaCyanPluginInput / PluginInputPluginOutput
Python@start_plugin_with_fnPluginInputPluginOutput
C#[PluginMain] attributePluginInputPluginOutput

Quick Example

plugin.ts
import { StartPluginWithLambda } from '@atomicloud/cyan-sdk';
import { $ } from 'bun';
StartPluginWithLambda(async (input) => {
const { directory, config } = input;
// Run commands
await $`git -C ${directory} init`.quiet();
// Return directory
return { directory };
});
plugin.py
from atomicloud_cyan_sdk import start_plugin_with_fn
@start_plugin_with_fn
async def main(input: PluginInput) -> PluginOutput:
directory = input.directory
config = input.config
# Run commands
# subprocess.run(["git", "-C", directory, "init"])
# Return directory
return {"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 directory
return new PluginOutput { Directory = directory };
}
}

SDK Reference

Plugin vs Processor SDK

FeaturePlugin SDKProcessor SDK
Entry pointStartPluginWithLambdaStartProcessorWithLambda
Input typeCyanPluginInputCyanProcessorInput
Output typePluginOutputProcessorOutput
Handler params1 (input)2 (input, fileHelper)
Input fieldsdirectory, configreadDirectory, writeDirectory, globs, config
File helperDirect filesystem accessCyanFileHelper API
Primary usePost-processing tasksFile transformation