{"id":24986963,"url":"https://github.com/kostya-zero/tesuto","last_synced_at":"2025-04-11T23:30:20.521Z","repository":{"id":186890997,"uuid":"675943298","full_name":"kostya-zero/tesuto","owner":"kostya-zero","description":"✅ Lightweight automation tool.","archived":false,"fork":false,"pushed_at":"2025-01-05T05:59:13.000Z","size":231,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T15:03:51.855Z","etag":null,"topics":["testing"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/kostya-zero.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-08-08T04:49:19.000Z","updated_at":"2025-01-05T05:59:16.000Z","dependencies_parsed_at":"2023-11-30T14:29:15.777Z","dependency_job_id":"e57379f2-20ae-4650-b02c-18c70e2fa0cb","html_url":"https://github.com/kostya-zero/tesuto","commit_stats":null,"previous_names":["kostya-zero/tesuto"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya-zero%2Ftesuto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya-zero%2Ftesuto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya-zero%2Ftesuto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kostya-zero%2Ftesuto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kostya-zero","download_url":"https://codeload.github.com/kostya-zero/tesuto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248494638,"owners_count":21113473,"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":["testing"],"created_at":"2025-02-04T11:34:27.355Z","updated_at":"2025-04-11T23:30:20.473Z","avatar_url":"https://github.com/kostya-zero.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tesuto\n\nTesuto is a minimalist tool that allows you to automate things like builds, deploys etc. It uses YAML syntax for their project files to be less harder to understand how to work with it.\n\nThe main goal of this project is to provide a utility that is fast, lightweight and easy-to-use.\n\n## Installation\n\nYou can install Tesuto with `cargo`:\n\n```shell\ncargo install tesuto\n```\n\nAlso, if you have `cargo-binstall` installed, you can use it too:\n\n```shell\ncargo binstall tesuto\n```\n\n## Usage\n\nTo generate an example project, you can use `generate` command:\n\n```shell\ntesuto generate\n```\n\n\u003e Refer to [configuration](#configuration) section for how to configure project.\n\nYou can run your project with ease by using `run` command:\n\n```shell\ntesuto run\n\n# If your project is in different location.\ntesuto run --project \"configs/tesuto.yml\"\n```\n\nAlso, you can run specific job with `--job` flag:\n\n```shell\ntesuto run --job cargo\n```\n\n## Configuration\n\n### Structure\n\nTesuto uses YAML syntax for projects. The structure for project is pretty simple:\n\n```yaml\nname: TesutoProject\njobs:\n  hello:\n  - name: Print 'Hello world!'\n    run: echo \"Hello World!\"\n    quiet: false\n```\nIn the code block above you can see an example project. If you choose to not generate example project, you will see an empty one like this:\n```yaml\nname: TesutoProject\nrequire: []\njobs: {}\n```\nIn the root of project there is 3 fields:\n\n- `name` - Used to identify project.\n- `with` - Additional options to run your project.\n- `require` - List of programs that required to run this project.\n- `jobs` - Actions that Tesuto need to do.\nWe will skip `name` field because it's obvious what it is purpose.\n\n### `with` option\n\nThe `with` field serves as additional options for your project. It has 2 options:\n\n```yaml\n...\nwith:\n  shell:\n    program: \"zsh\"\n    args:\n      - \"-c\"\n      - \"{}\"\n  cwd: \"build\"\n```\n\n- `shell` - Allows you to specify the shell you want to run. Note that it is important to add curly braces to the args field as in the example above, because Tesuto will replace them with a command to run.\n- `cwd` - Changes the working directory for Tesuto.\n\n### Required Programs\n\nIn the `require` field you can specify which programs are required to run this project:\n\n```yaml\n...\nrequire:\n  - git\n  - cargo\n...\n```\n\nIt's a list of program that will be found through search in PATH. If one of this programs are not found, Tesuto will crash and tell you which program is not found.\n\n### Jobs and Steps\n\nJobs contain steps that Tesuto needs to perform to complete a job. Every job in a project will be executed step-by-step. The syntax of a job looks like this:\n\n```yaml\n...\njobs:\n  cargo:\n  - name: Build release binary\n    run: cargo build --release\n    quiete: false\n...\n```\n\nStep has 3 properties:\n\n- `name` - The name of the step. If it's empty, it will be replaced with the command that the step should run.\n- `run` - The command to run. If this field is empty, Tesuto will display only the name of the step. If both name and run fields are empty, Tesuto will skip the step.\n- `quiet` - Whether to display the output or not.\nYou can create as many jobs and steps as needed. There are no limits for your workflow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostya-zero%2Ftesuto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkostya-zero%2Ftesuto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkostya-zero%2Ftesuto/lists"}