/** * Server Plugin Interface * * Base class for all server plugins (mac, ubuntu, windows, etc.) * Server plugins represent OS types and handle OS-specific commands, * package management, and service management. * * Server plugins are NOT deployment targets - they define how to interact * with a specific operating system. Pipelines (like AWS, factiii) handle * the deployment orchestration and specify which OS types they support. */ import type { FactiiiConfig, EnvironmentConfig, Fix, DeployResult, EnsureServerReadyOptions, ServerOS, PackageManager, ServiceManager } from '../../types/index.js'; /** * Abstract base class for server plugins */ export declare abstract class ServerPlugin { static readonly id: string; static readonly name: string; static readonly category: 'server'; static readonly version: string; /** The OS this server plugin handles */ static readonly os: ServerOS; /** Package manager for this OS (brew, apt, choco, dnf, apk) */ static readonly packageManager: PackageManager; /** Service manager for this OS (launchctl, systemd, windows-service) */ static readonly serviceManager: ServiceManager; static readonly fixes: Fix[]; static readonly requiredEnvVars: string[]; static readonly configSchema: Record; static readonly autoConfigSchema: Record; protected config: FactiiiConfig; constructor(config: FactiiiConfig); /** * Determine if this plugin should be loaded for this project * @param rootDir - Project root directory * @param config - Loaded config */ static shouldLoad(_rootDir: string, _config: FactiiiConfig): Promise; /** * Auto-detect server configuration * @param rootDir - Project root directory */ static detectConfig(_rootDir: string): Promise>; /** * Execute a command on a remote server via SSH * @param envConfig - Environment config with host and ssh_user * @param command - Command to execute */ static sshExec(_envConfig: EnvironmentConfig, _command: string): Promise; /** * Ensure server is ready for deployment * Installs Node.js, git, clones repo, checks out commit */ abstract ensureServerReady(config: FactiiiConfig, environment: string, options?: EnsureServerReadyOptions): Promise; /** * Deploy to an environment */ abstract deploy(config: FactiiiConfig, environment: string): Promise; /** * Undeploy from an environment */ abstract undeploy(config: FactiiiConfig, environment: string): Promise; } export default ServerPlugin; //# sourceMappingURL=server.d.ts.map