test-shisho-policy

This is the SDK of Shisho Cloud policies to write your custom policies in Rust

1 unstable release

0.1.0 Nov 9, 2022

Apache-2.0

12KB
187 lines

Shisho Policy Rust SDK

This is a helper crate for Shisho Cloud workflows to write custom policies.

This is the core library to write custom policies.

  • decision includes the structs of output data(=decsion results).
  • gqlgen includes the functionalities of converting from geraphql schema and queries. The original code comes from graphql-client/graphql_client_codegen
  • schema includes the string of datasource graphql query. The schema is generated by the codegen.

Required crate

This required the helper crate, shisho-gql-derive

Example usage

use shisho_gql_derive::*;
pub use shisho_policy_sdk::decision::data_entry::*;
pub use shisho_policy_sdk::decision::github::organization::org_owners::*;
pub use shisho_policy_sdk::decision::*;

use self::input::InputGithubOrganizations;

#[allow(dead_code)]
#[derive(ShishoGraphQLQuery)]
#[shisho_graphql(
    query_path = "src/policies/organization/org_owners/query.graphql",
    response_derives = "Debug, PartialEq"
)]
pub struct Input;

pub fn decisions(input: input::InputData) -> Vec<Decision<OrgOwnersEntryData>> {
    input
        .github
        .organizations
        .into_iter()
        .map(|o: InputGithubOrganizations| decide_on_each_org(o))
        .collect()
}

pub fn decide_on_each_org(o: InputGithubOrganizations) -> Decision<OrgOwnersEntryData> {
    ...
}

Reference

Dependencies

~0.4–1MB
~22K SLoC