{"id":22726841,"url":"https://github.com/smokingplaya/uki","last_synced_at":"2025-10-19T23:30:19.173Z","repository":{"id":244858614,"uuid":"816482909","full_name":"smokingplaya/uki","owner":"smokingplaya","description":"🛠️ Makefile like utility based on YAML","archived":false,"fork":false,"pushed_at":"2025-01-13T19:53:24.000Z","size":76,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-13T20:38:56.984Z","etag":null,"topics":["automation","cli","comport","rust","tool","tools","yaml","yml"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smokingplaya.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":"2024-06-17T21:10:57.000Z","updated_at":"2025-01-13T19:49:49.000Z","dependencies_parsed_at":"2024-06-21T09:27:02.878Z","dependency_job_id":"1550d909-1971-4bf9-9c5d-958c9e9df083","html_url":"https://github.com/smokingplaya/uki","commit_stats":null,"previous_names":["smokingplaya/uki"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smokingplaya%2Fuki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smokingplaya%2Fuki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smokingplaya%2Fuki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smokingplaya%2Fuki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smokingplaya","download_url":"https://codeload.github.com/smokingplaya/uki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237226264,"owners_count":19275303,"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":["automation","cli","comport","rust","tool","tools","yaml","yml"],"created_at":"2024-12-10T17:07:08.133Z","updated_at":"2025-10-19T23:30:18.778Z","avatar_url":"https://github.com/smokingplaya.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![shi](misc/logo.png)\n# uki\n\n**uki** is a utility for running predefined commands in various shells on your system through a simple YAML configuration. It allows you to customize commands for frequent use and run them through a single call.\n\n## Installing\n* Linux\n  ```bash\n  /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/smokingplaya/uki/HEAD/misc/install.sh)\"\n  ```\n* Windows (powershell with admin rights)\n  ```powershell\n  \u0026 {Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/smokingplaya/uki/refs/heads/master/misc/windows.ps1\" -OutFile \"$env:USERPROFILE\\Downloads\\install_uki.ps1\"; \u0026 \"$env:USERPROFILE\\Downloads\\install_uki.ps1\"}\n  ```\n\n## Using\n\n```bash\nuki \u003cpreset\u003e \u003carguments\u003e\n```\n\n- **preset** is the name of the preset (a set of pre-prepared commands) to be run. If you do not specify a preset, the `default` preset will be used by default.\n- **arguments** are the parameters that are passed to the preset commands.\n\n### Examples:\n\n1. Run the `default` preset (no arguments):\n    ```bash\n    uki\n    ```\n2. Run the `example` preset with the argument “hello, there”:\n    ```bash\n    uki example \"hello, there\"\n    ```\n3. Run the `default` preset with arguments passed:\n    ```bash\n    uki default arg1 arg2\n    ```\n\n## Configuration\n\nFor **uki** to work, there must be a YAML configuration file called `uki.yml` in the current directory.\n\n### Example of `uki.yml` file structure:\n\n```yaml\ndefault-shell: bash # Default shell for all presets (optional)\ndefault-preset: default # Default preset if not specified (optional)\n\n# Presets section (required)\npresets:\n  # Preset name\n  default:\n    shell: bash        # Shell override for a specific preset (optional)\n    description: \"Пресет, который ничего не делает\"  # Preset description (optional)\n    arguments:\n      - name: arg1          # Name of the argument\n        default: \"\"         # Default value for the argument (optional)\n    commands:               # Command list (required)\n      - echo \"${arg1}\"      # Example of a command using the argument\n```\n\n### Supported shells:\n\n- `bash`\n- `zsh`\n- `powershell`\n- `cmd`\n\n### Description of configuration parameters:\n\n- **default-shell** - specifies the default shell for all presets. If not specified, the system-installed shell will be used for the preset.\n  \n- **default-preset** - specifies the preset that will be run if the first argument (preset name) was not passed when `uki` was called.\n\n- **presets** - mandatory section where all presets are described. Each preset can contain the following parameters:\n  - **shell** - the shell in which the commands of this preset will be executed.\n  - **description** - description of the preset to make it clear what it does.\n  - **arguments** - list of arguments that can be passed to the preset.\n  - **commands** - list of commands that will be executed when the preset is started. Arguments passed through the CLI can be used in commands using the `${arg}` syntax.\n\n### Example of preset usage:\n\n```yaml\npresets:\n  example:\n    shell: zsh\n    description: \"Example of preset\"\n    arguments:\n      - name: message\n        default: \"Hello, world!\"\n    commands:\n      - echo \"${message}\"\n```\n\nIf you execute the command:\n\n```bash\nuki example “What's up”\n```\n\nThen **uki** will start the `example` preset by passing the ``“What's up”`` argument to the command, and execute the ``echo “What's up”`` command in the `zsh` shell.\n\n## Building\n\nTo build **uki**, follow these steps:\n\n```bash\ngit clone https://github.com/smokingplaya/uki\ncargo build --release\ncd target/release\n```\n\n## Support and Contributions\nWe are always open to improvements! If you have ideas, comments, or fixes, feel free to open a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmokingplaya%2Fuki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmokingplaya%2Fuki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmokingplaya%2Fuki/lists"}