actions-core2

Crates.ioactions-core2
lib.rsactions-core2
version0.1.0
sourcesrc
created_at2024-03-21 03:03:24.615347
updated_at2024-03-21 03:03:24.615347
description✅ Get inputs, set outputs, and other basic operations for GitHub Actions
homepagehttps://docs.rs/actions-core2
repositoryhttps://github.com/jcbhmr/actions-toolkit.rs
max_upload_size
id1181174
size76,672
Jacob Hummer (jcbhmr)

documentation

README

🚧 Under construction 👷‍♂️

actions-core

✅ Get inputs, set outputs, and other basic operations for GitHub Actions

let name = core::get_input_with_options("name", &core::InputOptions {
  required: true,
  ..Default::default()
})?;
let favorite_color = core::get_input("favorite-color");
core::info(format!("Hello {name}!"));
core::set_output("message", format!("I like {favorite_color} too!"));

👀 Looking for more GitHub Actions crates? Check out the actions-toolkit.rs project.

Installation

cargo add actions-core2

⚠️ Use use actions_core in your Rust code. The package name differs from the crate name.

Usage

Rust

use actions_core as core;
use std::error::Error;

fn main() {
  let result = || -> Result<(), Box<dyn Error>> {
    let name = core::get_input_with_options("name", core::InputOptions {
        required: true,
        ..Default::default()
    })?;
    let favorite_color = core::get_input("favorite-color")?;
    core::info!("Hello {name}!");
    core::set_output("message", "Wow! Rust is awesome!");
    Ok(())
  }();
  if let Err(error) = result {
    core::set_failed!("{error}");
  }
}

🤔 But how do I actually use the generated executable in my action.yml? Check out configure-executable-action!

Development

Rust Cargo Docs.rs

This project is part of the actions-toolkit.rs project.

🆘 I'm not a very proficient Rust programmer. If you see something that could be better, please tell me! ❤️ You can open an Issue, Pull Request, or even just comment on a commit. You'll probably be granted write access. 😉

Todo list:

  • Replicate the public API surface from @actions/core. Falsey string behaviour included.
  • Decide on get_input("name", Some(...)) vs get_input_with_options("name", ...) vs get_input!("name", ...). Need to find existing Rust projects to see the convention.
  • Figure out when to use AsRef<str>, &str, String, Cow<str>, etc. for parameters and return types. I need to do some recon on existing Rust projects.
  • Publish this crate to crates.io. That also entails setting up GitHub Actions to publish the crate on each appropriate monorepo release.
  • Copy this content to the crate README.
  • Add examples. At least two.
  • Add documentation to the public API. Not just "get_input() gets the input".
Commit count: 38

cargo fmt