- allows to specify the progress of the task
- allows describing the overall operation
- allows describing the 'instant' state
- allows determinate status (x/y)
- allows indeterminate status
Example API usage:
| <Project> | |
| <!-- This is a very simple version of what we'd actually want. We actually would need to: | |
| * get the target RID | |
| * get the OS portion of the RID graph _only_, no versions, no architectures | |
| * walk that graph in most-specific to least-specific order, including the first (most specific) items that match the expected pattern along the way | |
| NOTE: .NET SDK Default Glob Include patterns wreck this entire feature --> | |
| <Target Name="ExpandRIDCompileItems" DependsOnTargets="AddImplicitDefineConstants" BeforeTargets="CoreCompile"> | |
| <PropertyGroup> | |
| <RidDefines Condition="'$(RuntimeIdentifier)' != ''">$(RuntimeIdentifier.Split('-')[0])</RidDefines> |
| using System.CommandLine; | |
| using System.CommandLine.Builder; | |
| using System.CommandLine.Parsing; | |
| namespace scl | |
| { | |
| public static class Usage | |
| { | |
| public struct CmdArgs |
| { | |
| "background": "#FFEAF1", | |
| "black": "#666666", | |
| "blue": "#B39FD6", | |
| "brightBlack": "#000000", | |
| "brightBlue": "#8966D6", | |
| "brightCyan": "#3CB4EB", | |
| "brightGreen": "#85D468", | |
| "brightPurple": "#DF81CB", | |
| "brightRed": "#F02070", |
| module CliFlag | |
| open System | |
| open System.CommandLine | |
| open System.CommandLine.Parsing | |
| type CliFlag<'t> = | |
| inherit CliOption<'t> | |
| val private enabledFlagName: string | |
| val private disabledFlagName: string |
| # the nuget.config is needed to get nightly feeds, since the 'nightly' container is also using rc2 builds of sdk/runtime ahead of release | |
| # the docker socket and docker binary are needed to light up the SDK tooling | |
| # the nightly base image is needed because the -aot SDK images are only present there | |
| # the explicit ContainerBaseImage is because SDK base image inference doesn't know about the 'nightly' feeds pattern | |
| docker run --rm -it \ | |
| -v $(pwd):/source \ | |
| -v $(pwd)/../../nuget.config:/source/nuget.config \ | |
| -v /var/run/docker.sock:/var/run/docker.sock \ | |
| -v /usr/bin/docker:/usr/bin/docker \ | |
| -w /source \ |
Allow templates to easily orchestrate the invocation of other templates by name/id, making multi-project and multi-item templates easier to keep up to date, and factoring out subsets of currently-giant templates into maintainable chunks.
| // built off of the data put in place by the magaambya-study-helper module | |
| function getFlags(actor) { | |
| return actor.getFlag('magaambya-study-helper', 'branch-data'); | |
| } | |
| function updateFlags(actor, data) { | |
| actor.setFlag('magaambya-study-helper', 'branch-data', data); | |
| } | |
| function slugify(str) { | |
| return game.pf2e.system.sluggify(str); |
| use clap::Arg; | |
| use clap::ArgAction; | |
| use clap::Command; | |
| fn main() { | |
| let cmd = Command::new("hello").arg( | |
| Arg::new("name") | |
| .long("name") | |
| .num_args(1..) // allow multiple tokens | |
| .action(ArgAction::Append), // when you get multiple tokens, jam them together into a Vec (List to us) |
| #! /bin/python3 | |
| from dataclasses import dataclass | |
| from os import walk, stat | |
| from os.path import join | |
| from typing import Dict | |
| sdk_dir="/mnt/c/Program Files/dotnet/sdk/9.0.100-preview.3.24204.13" | |
| @dataclass |