{"id":20366567,"url":"https://github.com/hookyns/tyml","last_synced_at":"2026-05-06T19:37:51.603Z","repository":{"id":53589865,"uuid":"348206556","full_name":"Hookyns/tyml","owner":"Hookyns","description":"Library which is able to take YAML file in given format and process its instructions. It is like Your private local pipeline.","archived":false,"fork":false,"pushed_at":"2023-08-29T21:49:54.000Z","size":94,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-15T05:38:25.907Z","etag":null,"topics":["csharp","dotnet","pipeline","task","task-runner","yaml"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hookyns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-16T03:53:11.000Z","updated_at":"2023-06-12T15:50:28.000Z","dependencies_parsed_at":"2024-11-15T00:27:44.203Z","dependency_job_id":"443670ff-5590-4231-aff4-3167d976ff89","html_url":"https://github.com/Hookyns/tyml","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hookyns%2Ftyml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hookyns%2Ftyml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hookyns%2Ftyml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hookyns%2Ftyml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hookyns","download_url":"https://codeload.github.com/Hookyns/tyml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241908304,"owners_count":20040606,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","pipeline","task","task-runner","yaml"],"created_at":"2024-11-15T00:25:41.785Z","updated_at":"2026-05-06T19:37:51.574Z","avatar_url":"https://github.com/Hookyns.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tyml\nYAML Task Runner\n\nTYML is library able to take YAML file in given format and process its instructions. It is like Your private local pipeline.\n\n## Example\n\n### Configuration\n```c#\nTymlContext tymlContext = new TymlContextBuilder()\n    .AddTasks(typeof(CmdTask))\n    .UseWorkingDirectory(path)\n    .WithBaseVariables(new Dictionary\u003cstring, object\u003e()\n    {\n        {\"foo\", 5},\n        {\"bar\", \"baz\"}\n    })\n    .Build();\n    \nTymlExecutor tymlExecutor = provider.GetRequiredService\u003cTymlExecutor\u003e();\n\t\nusing (ConsoleSink sink = new ConsoleSink(new ConsoleSinkOptions(ColorTheme.DarkConsole))) \n{\n\tawait foreach (TaskExecution execution in tymlExecutor.Execute(tymlContext, CONTENT_OF_YAML_FILE))\n\t{\n\t\tawait execution.OutputReader.Pipe(sink);\n\t}\n\t\n\tawait foreach (TaskExecution execution in tymlExecutor.Execute(tymlContext, CONTENT_OF_SOME_OTHER_YAML_FILE))\n\t{\n\t\tawait execution.OutputReader.Pipe(sink);\n\t}\n}\n```\n\n### YAML Format\n```yaml\ndescription: \"Some description of this YAML\" # optional description\nvariables: # optional variable section; overwriting environment variables and TymlContext variables.\n  ProjectDescription: |-\n    This is testing multiline project description.\n    This is second line of it.\n    with: colon\n\nsteps:\n  - task: Cmd # Name of task\n    displayName: \"Run something\" # Optional display name\n    inputs: # Input arguments parsed into IDictionary passed to ITask.Execute or parsed into generic type of TaskBase\u003cTInputs\u003e if you inherit from that \n      Script: \"something.exe\"\n      Args:\n        SomeEnvVariable: $(ProductionEnvironment) # $(..) replaced by variable value before execution if defined\n        ProjectDescription: '$(ProjectDescription)'\n        FooVariable: $(foo)! # Required variable; Exception thrown if not defined\n```\n\n## Predefined Tasks \nYou can install package `RJDev.Tyml.Tasks.Base` which implements basic tasks such as Cmd (run script on cmd/bash) and ExtractFiles.\n\n## Custom Tasks\nIf You want to create custom Task You must implement `ITask` interface or use generic abstract class `TaskBase\u003cTOfInputObject\u003e`.\nIf You want to publish your packages to NuGet, it would be nice to keep some naming convention, at least keep `Tyml.Tasks.{WhatKindOfTasks}`; or create PR to Tasks.Basic.\n\n```c#\n[TymlTask(\"Cmd\", \"Optional task description\")]\npublic class CmdTask : TaskBase\u003cCmdTaskConfig\u003e\n{\n\tprotected override Task\u003cTaskCompletionStatus\u003e Execute(TaskContext context, CmdInputs inputs, CancellationToken cancellationToken)\n\t{\n        context.Out.WriteLine($\"Script: {inputs.Script} with args: {string.Join(\"; \", inputs.Args.Select(entry =\u003e entry.Key + \":\" + entry.Value))}\");\n\t\treturn this.OkSync();\n\t}\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhookyns%2Ftyml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhookyns%2Ftyml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhookyns%2Ftyml/lists"}