Skip to main content

pipedash_plugin_api/
lib.rs

1pub mod actions;
2pub mod build_watch;
3pub mod builders;
4pub mod columns;
5pub mod config;
6pub mod defaults;
7pub mod delegate;
8pub mod error;
9pub mod health;
10pub mod history;
11pub mod http;
12#[cfg(feature = "kubernetes")]
13pub mod kubernetes;
14pub mod logs;
15pub mod metadata;
16pub mod pagination;
17pub mod plugin;
18pub mod presentation;
19pub mod registry;
20pub mod schema;
21pub mod sign_in;
22pub mod support;
23#[cfg(test)]
24mod testing;
25pub mod types;
26pub mod utils;
27
28pub use actions::{
29    ActionAvailability,
30    ActionIcon,
31    PipelineActionState,
32    RerunStrategy,
33    RunActionState,
34    TriggerResult,
35};
36pub use error::{
37    PluginError,
38    PluginResult,
39};
40pub use health::{
41    collect_controller_health,
42    custom_status_source,
43    status_page_field,
44    ClientOptions,
45    ComponentFilter,
46    ComponentHealth,
47    FeedFormat,
48    HealthLevel,
49    StatusSource,
50    CONTROLLER_HEALTH_FEATURE,
51    STATUS_PAGE_URL_KEY,
52};
53pub use history::{
54    RunHistoryOrder,
55    RunHistoryPolicy,
56};
57pub use http::{
58    body_preview,
59    check_response,
60    from_status,
61    map_send_error,
62    read_prefix,
63    redact_url,
64    require_client,
65    retry_after,
66    truncate_chars,
67};
68pub use logs::{
69    content_hash,
70    extend_content_hash,
71    next_log_chunk,
72    ContentRange,
73    LineMarker,
74    LogAvailability,
75    LogCursor,
76    LogDialect,
77    LogNode,
78    LogNodeKind,
79    LogRead,
80    LogReadMode,
81    LogSink,
82    ParsedLine,
83    PlainDialect,
84    RunRef,
85    CONTENT_HASH_SEED,
86    LOG_CHUNK_STALL_TIMEOUT,
87};
88pub use metadata::{
89    PluginCapabilities,
90    PluginManifest,
91    PluginMetadata,
92};
93pub use plugin::Plugin;
94pub use presentation::{
95    ActionCopy,
96    DisplayField,
97    Notice,
98    PipelineFacts,
99    PipelineTerminology,
100    PluginPresentation,
101    RunDisplay,
102    RunFacts,
103    StatusOption,
104    ViewCopy,
105    WizardCopy,
106};
107pub use registry::PluginRegistry;
108pub use schema::{
109    is_no_auth,
110    AuthMode,
111    ConfigField,
112    ConfigSchema,
113    ConfigSection,
114    AUTH_MODE_KEY,
115};
116pub use sign_in::{
117    SignInClient,
118    SignInRefreshRejection,
119    SignInToken,
120};
121pub use types::{
122    AvailablePipeline,
123    Feature,
124    FeatureAvailability,
125    Organization,
126    PaginatedAvailablePipelines,
127    PaginatedResponse,
128    PaginationParams,
129    Permission,
130    PermissionCheck,
131    PermissionStatus,
132    Pipeline,
133    PipelineCatalog,
134    PipelineRun,
135    PipelineStatus,
136    RateLimit,
137    ResourceState,
138    ReviewDecision,
139    TriggerParams,
140    WorkflowParameter,
141    WorkflowParameterType,
142    READ_ONLY_METADATA_KEY,
143};
144pub use utils::{
145    retain_with_ci,
146    selected_items,
147    RetryPolicy,
148};
149
150#[macro_export]
151macro_rules! register_plugin {
152    ($plugin_type:ty) => {
153        pub fn register(registry: &mut $crate::PluginRegistry) {
154            registry.register(
155                || Box::new(<$plugin_type>::default()),
156                $crate::PluginManifest {
157                    package_name: env!("CARGO_PKG_NAME"),
158                    version: env!("CARGO_PKG_VERSION"),
159                    description: env!("CARGO_PKG_DESCRIPTION"),
160                    authors: env!("CARGO_PKG_AUTHORS"),
161                    icon_svg: include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/icon.svg")),
162                },
163            );
164        }
165    };
166}