hypershell-components 0.1.0

Modular DSL for shellscripting in Rust
Documentation
#[cgp::re_export_imports]
mod preset {
    use cgp::core::component::UseDelegate;
    use cgp::extra::handler::{HandlerComponent, Promote};
    use cgp::prelude::*;

    use crate::components::{StringArgExtractorComponent, UrlArgExtractorComponent};
    use crate::dsl::{BytesToString, ConvertTo, FieldArg, JoinArgs, Pipe, StaticArg, Use};
    use crate::providers::{
        DecodeUtf8Bytes, ExtractFieldArg, ExtractStaticArg, ExtractStringUrlArg, HandleConvert,
        HandlePipe, HandleUseProvider, JoinStringArgs,
    };

    cgp_preset! {
        HypershellBasePreset {
            HandlerComponent:
                BaseHandlerPreset::Provider,
            StringArgExtractorComponent:
                BaseStringArgExtractorPreset::Provider,
            UrlArgExtractorComponent:
                UrlArgExtractorPreset::Provider,
        }
    }

    cgp_preset! {
        #[wrap_provider(UseDelegate)]
        BaseStringArgExtractorPreset {
            <Arg> StaticArg<Arg>:
                ExtractStaticArg,
            <Tag> FieldArg<Tag>:
                ExtractFieldArg,
            <Args> JoinArgs<Args>:
                JoinStringArgs,
        }
    }

    cgp_preset! {
        #[wrap_provider(UseDelegate)]
        UrlArgExtractorPreset {
            [
                <Arg> StaticArg<Arg>,
                <Args> JoinArgs<Args>,
                <Tag> FieldArg<Tag>,
            ]: ExtractStringUrlArg,
        }
    }

    cgp_preset! {
        #[wrap_provider(UseDelegate)]
        BaseHandlerPreset {
            BytesToString:
                DecodeUtf8Bytes,
            <T> ConvertTo<T>:
                Promote<HandleConvert>,
            <Handlers> Pipe<Handlers>:
                HandlePipe,
            <Provider, Code> Use<Provider, Code>:
                HandleUseProvider,
        }
    }
}