{"id":31237029,"url":"https://github.com/kattouf/Sake","last_synced_at":"2025-09-22T16:59:23.870Z","repository":{"id":256710840,"uuid":"855782771","full_name":"kattouf/Sake","owner":"kattouf","description":"🍶 Swift-based utility for managing project commands, inspired by Make.","archived":false,"fork":false,"pushed_at":"2025-09-10T04:52:59.000Z","size":774,"stargazers_count":105,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-10T08:21:30.446Z","etag":null,"topics":["automation","bash","cli","command","command-line","make","swift","terminal","zsh"],"latest_commit_sha":null,"homepage":"https://sakeswift.org","language":"Swift","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/kattouf.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,"zenodo":null}},"created_at":"2024-09-11T13:07:38.000Z","updated_at":"2025-09-10T04:53:02.000Z","dependencies_parsed_at":"2025-08-21T15:33:13.477Z","dependency_job_id":"d09f608c-7aa3-4651-a614-60250b083cba","html_url":"https://github.com/kattouf/Sake","commit_stats":{"total_commits":51,"total_committers":1,"mean_commits":51.0,"dds":0.0,"last_synced_commit":"1c2b0973372c7a6c45c8d108b6af545a9e3874a3"},"previous_names":["kattouf/sake"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/kattouf/Sake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kattouf%2FSake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kattouf%2FSake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kattouf%2FSake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kattouf%2FSake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kattouf","download_url":"https://codeload.github.com/kattouf/Sake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kattouf%2FSake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276439796,"owners_count":25642752,"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","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","bash","cli","command","command-line","make","swift","terminal","zsh"],"created_at":"2025-09-22T16:59:22.368Z","updated_at":"2025-09-22T16:59:23.841Z","avatar_url":"https://github.com/kattouf.png","language":"Swift","funding_links":[],"categories":["Automation DSLs and tools"],"sub_categories":["macOS Environments"],"readme":"# 🍶 Sake\n\n[![Platforms](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fkattouf%2FSake%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/kattouf/Sake)\n[![Swift Versions](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fkattouf%2FSake%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/kattouf/Sake)\n[![Latest Release](https://img.shields.io/github/release/kattouf/Sake.svg)](https://github.com/kattouf/Sake/releases/latest)\n[![codecov](https://codecov.io/gh/kattouf/Sake/graph/badge.svg?token=TTQYPIKOPN)](https://codecov.io/gh/kattouf/Sake)\n![Build Status](https://github.com/kattouf/Sake/actions/workflows/checks.yml/badge.svg?branch=main)\n\nSwift-based utility for managing project commands, inspired by Make. Write your project commands in Swift and enjoy type safety, code reuse, and seamless integration.\n\n\u003e [!TIP]\n\u003e **New to Sake?** Check out these comprehensive tutorials:\n\u003e - [**Sake Part I: Getting Started**](https://swifttoolkit.dev/posts/sake-1) - Installation, setup, and creating your first commands\n\u003e - [**Sake Part II: Advanced Usage**](https://swifttoolkit.dev/posts/sake-2) - Command groups, testing automation, and release management\n\n## ⭐️ Key Features\n\n- **Swift-Native Workflow**: Write, execute, and manage all your project commands in Swift with full IDE support, type safety, and seamless integration\n- **Command Dependencies**: Define commands that depend on other commands\n- **Conditional Execution**: Skip commands based on custom conditions\n- **Command Listing**: Display all available commands with their descriptions\n\n## 🏃 Less Talk, More Action\n\nFirst, take a look at what you can accomplish with Sake, and then we'll dive into how to make it happen:\n\nDefine your project commands like this:\n``` swift\n// Sakefile.swift\n\nstruct Commands: SakeApp {\n\n    // MARK: - Code style\n\n    public static var format: Command {\n        Command(\n            description: \"Format source code\",\n            dependencies: [BrewCommands.ensureSwiftFormatInstalled],\n            run: { context in\n                try runAndPrint(\"swiftformat\", \"Sources\", \"Package.swift\")\n            }\n        )\n    }\n\n    // MARK: - Release automation\n\n    public static var buildReleaseArtifacts: Command {\n        Command(\n            description: \"Build release artifacts for distribution\",\n            dependencies: [buildRelease, stripBinary, createArchive]\n        )\n    }\n\n    static var buildRelease: Command {\n        Command(\n            description: \"Build optimized release binary\",\n            run: { context in\n                try runAndPrint(\"swift\", \"build\", \"--configuration\", \"release\")\n            }\n        )\n    }\n\n    static var stripBinary: Command {\n        Command(\n            description: \"Strip debug symbols to reduce size\",\n            run: { context in\n                try runAndPrint(\"strip\", \"-rSTx\", \".build/release/MyApp\")\n            }\n        )\n    }\n\n    static var createArchive: Command {\n        Command(\n            description: \"Create distribution ZIP archive\",\n            run: { context in\n                try runAndPrint(\"zip\", \"-j\", \"MyApp.zip\", \".build/release/MyApp\")\n            }\n        )\n    }\n}\n```\n\n\u003e [!NOTE]\n\u003e The `runAndPrint` function used in this example is not provided by Sake by default. For running CLI commands in your Sake commands, please refer to the [CLI Tools Running documentation](https://sakeswift.org/advanced-cli-tools-running.html).\n\nThen run them like this:\n``` sh\n❯ sake list\nCommands:\n * format - Format source code\n * buildReleaseArtifacts - Build release artifacts for distribution\n\n❯ sake buildReleaseArtifacts\nBuilding for production...\nCompiling MyApp...\nBuild complete.\n  creating: MyApp.zip\n```\n\n[📚 Documentation](https://sakeswift.org) • [🚀 Getting Started](#-getting-started) • [💻 GitHub](https://github.com/kattouf/Sake)\n\n## 🚀 Getting Started\n\n1. **Install Sake**\n   ```bash\n   brew install kattouf/sake/sake\n   ```\n   See [other installation methods](https://sakeswift.org/installation.html)\n\n2. **Initialize a new SakeApp:**\n   ```bash\n   sake init\n   ```\n\n3. **Run your first command:**\n   ```bash\n   sake hello\n   ```\n\n## 📖 Example Use Cases\n\n- **Build Automation**: Compile your project with different configurations and run tests\n- **Release Management**: Automate version updates\n- **Code Quality**: Run formatters and linters to maintain consistent code style\n\n## 🤝 Contributing\n\nWe welcome contributions! Whether it's:\n- 🐛 Bug Reports\n- 💡 Feature Requests\n- 📖 Documentation Improvements\n- 🔧 Code Contributions\n\n👋 **Before writing code**: We kindly ask that you open a discussion or issue first to discuss your proposed changes. This helps ensure your time is well-spent on features or fixes that align with the project's direction and prevents duplicate efforts.\n\nCheck out our [Contribution Guide](https://sakeswift.org/contribution-guide.html) to find more details on how to get started.\n\n## 📜 License\n\nSake is released under the MIT License. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkattouf%2FSake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkattouf%2FSake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkattouf%2FSake/lists"}