A third-party toolkit for GitHub Actions coded in Dart. It is inspired by the official Javascript actions/toolkit and contains similar commands.
Check out this gist for different templates to create a GitHub Action in Dart.
Logging commands are available under log.
There are four levels:
errorwarninginfodebug
Logs with info level will have no particular emphasis and be directly transmitted to stdout.
Logs with debug level will only appear if the secret ACTIONS_STEP_DEBUG has been created in the repository with the value true (see "Creating and using encrypted secrets").
import 'package:github_actions_toolkit/github_actions_toolkit.dart' as gaction;
main() async {
const logger = gaction.log;
logger
..info('This is just a message')
..warning('This is a warning message')
..error('This is an error message');
// [isDebug] is true iff the secret `ACTIONS_STEP_DEBUG` has been configured
final message = gaction.isDebug
? 'This is a debug message'
: 'This is a debug message that you will not see';
logger.debug(message);
}Create an Input object for each input that your action needs, and retrieve their value with the value getter.
This getter will throw an ArgumentError if the input had been set as required and is missing.
import 'package:github_actions_toolkit/github_actions_toolkit.dart' as gaction;
main() async {
const input = gaction.Input(
'who-to-greet', // name defined in the YAML file
isRequired: true,
);
gaction
.log
.info('Hello ${input.value}!');
}Set an output for subsequent steps with setOutput.
Execute a command in the shell with the exec function. It will return an ExecResult object once the command has terminated with its exit code and its outputs.
import 'package:github_actions_toolkit/github_actions_toolkit.dart' as gaction;
main() async {
final process = await gaction.exec('echo', ['Hello world']);
gaction
.log
.info("The 'echo' command has terminated with code ${process.exitCode} and has printed ${process.stdout}");
}Please file feature requests and bugs at the issue tracker.