{"id":13466025,"url":"https://github.com/artemnovichkov/Swift-For-Scripting","last_synced_at":"2025-03-25T21:31:04.921Z","repository":{"id":38805261,"uuid":"103421903","full_name":"artemnovichkov/Swift-For-Scripting","owner":"artemnovichkov","description":"📋A hand-curated collection of useful and informative Swift Scripting materials.","archived":false,"fork":false,"pushed_at":"2025-01-20T12:05:34.000Z","size":92,"stargazers_count":299,"open_issues_count":0,"forks_count":8,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-19T11:13:10.848Z","etag":null,"topics":["cli","command-line","scripting","swift","swift-script"],"latest_commit_sha":null,"homepage":"","language":null,"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/artemnovichkov.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}},"created_at":"2017-09-13T16:11:43.000Z","updated_at":"2025-03-11T09:21:27.000Z","dependencies_parsed_at":"2024-01-29T17:15:56.355Z","dependency_job_id":null,"html_url":"https://github.com/artemnovichkov/Swift-For-Scripting","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/artemnovichkov%2FSwift-For-Scripting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2FSwift-For-Scripting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2FSwift-For-Scripting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artemnovichkov%2FSwift-For-Scripting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artemnovichkov","download_url":"https://codeload.github.com/artemnovichkov/Swift-For-Scripting/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245547144,"owners_count":20633307,"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":["cli","command-line","scripting","swift","swift-script"],"created_at":"2024-07-31T15:00:38.203Z","updated_at":"2025-03-25T21:31:04.915Z","avatar_url":"https://github.com/artemnovichkov.png","language":null,"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/logo.png\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#articles\"\u003e Articles \u003c/a\u003e • \u003ca href=\"#videos\"\u003e Videos \u003c/a\u003e\n\u003c/p\u003e\n\n\n## Articles\n\n### [Introducing swiftly, a new Swift toolchain installer and manager](https://forums.swift.org/t/introducing-swiftly-a-new-swift-toolchain-installer-and-manager/67254)\n\u003csub\u003eby [Patrick Freed](https://twitter.com/_patrick_freed_)\u003c/sub\u003e\n\n---\n\n### [How to Use Stable Diffusion to Generate Images with Swift CLI](https://www.appcoda.com/stable-diffusion-swift-cli/)\n\u003csub\u003eby [AppCoda](https://twitter.com/appcodamobile)\u003c/sub\u003e\n\n---\n\n### [How to make an interactive picker for a Swift command-line tool](https://www.polpiella.dev/how-to-make-an-interactive-picker-for-a-swift-command-line-tool)\n\u003csub\u003eby [Pol Piella](https://twitter.com/polpielladev)\u003c/sub\u003e\n\n---\n\n### [swift -e runs code directly from the command line](https://blog.eidinger.info/swift-e-runs-code-directly-from-the-command-line)\n\u003csub\u003eby [Marco Eidinger](https://twitter.com/MarcoEidinger)\u003c/sub\u003e\n\n---\n\n### [How to read passwords and sensitive data from the command-line using Swift](https://rderik.com/blog/how-to-read-passwords-and-sensitive-data-from-the-command-line-using-swift/)\n\u003csub\u003eby [RDerik](https://twitter.com/rderik)\u003c/sub\u003e\n\n---\n\n### [Creating iOS Application Icons with SwiftUI](https://www.enekoalonso.com/articles/creating-ios-application-icons-with-swiftui)\n\u003csub\u003eby [Eneko Alonso](https://twitter.com/eneko)\u003c/sub\u003e\n\nAn interesting way to use SwiftUI with CLI for icon generation.\n\n---\n\n### [Announcing ArgumentParser](https://swift.org/blog/argument-parser/) \n\u003csub\u003eby [Nate Cook](https://twitter.com/nnnnnnnn/)\u003c/sub\u003e\n\n Swift team have released type-safe argument parsing framework. \n\n---\n### [The Ultimate Guide To Swift Executables 🚀](https://www.fivestars.blog/code/ultimate-guide-swift-executables.html) \n\u003csub\u003eby [Federico Zanetello](https://twitter.com/zntfdr)\u003c/sub\u003e\n\nJust as described in the name of the article.\n\n---\n### [Creating a command line tool using the Swift Package Manager](https://www.avanderlee.com/swift/command-line-tool-package-manager) \n\u003csub\u003eby [Antoine v.d. SwiftLee](https://twitter.com/twannl)\u003c/sub\u003e\n\nBasic guide about SPM tools with simple one-command installation.\n\n---\n### [Command-line argument parsing using Swift Package Manager's SPMUtility module](https://rderik.com/blog/command-line-argument-parsing-using-swift-package-manager-s/) \n\u003csub\u003eby [Derik Ramirez](https://twitter.com/rderik)\u003c/sub\u003e\n\nThe article contains a detailed example of generation Bash/Zsh autocomletion for SPM projects.\n\n---\n### [Using Swift for scripting](https://rderik.com/blog/using-swift-for-scripting/) \n\u003csub\u003eby [Derik Ramirez](https://twitter.com/rderik)\u003c/sub\u003e\n\nGood article to start with scripting.\n\n---\n### [A RunLoop for your Swift script](https://alejandromp.com/blog/2019/01/19/a-runloop-for-your-swift-script/) \n\u003csub\u003eby [Alejandro Martinez](https://twitter.com/alexito4)\u003c/sub\u003e\n\nUsing async operations in your scripts is simpler than you think.\n\n---\n### [swift-sh](https://nshipster.com/swift-sh/) \n\u003csub\u003eby [Mattt](https://twitter.com/mattt)\u003c/sub\u003e\n\nAn article about a project that adds dependencies to your scripts.\n\n---\n### [Swift Tip: Using AppKit from the Command-line](https://www.objc.io/blog/2018/10/02/using-appkit-from-the-command-line/) \n\u003csub\u003eby [objc.io](https://twitter.com/objcio)\u003c/sub\u003e\n\nExplanation of using GUI in your Swift scripts.\n\n---\n### [Apple's new Utility library will power up command-line apps](https://www.hackingwithswift.com/articles/44/apple-s-new-utility-library-will-power-up-command-line-apps) \n\u003csub\u003eby [Paul Hudson](https://twitter.com/twostraws)\u003c/sub\u003e\n\nExamples of using Utility framework. `ArgumentParser` and `TerminalController` are really useful.\n\n---\n### [Building a command line tool using the Swift Package Manager](https://www.swiftbysundell.com/posts/building-a-command-line-tool-using-the-swift-package-manager?rq=package) \n\u003csub\u003eby [John Sundell](https://twitter.com/johnsundell)\u003c/sub\u003e\n\nPersonally my favorite article. In format of tutorial with recommendations based on real experience.\n\n---\n### [Scripting and Compiling Swift on the Command Line](http://jblevins.org/log/swift) \n\u003csub\u003eby [Jason Blevins](https://twitter.com/jrblevin)\u003c/sub\u003e\n\nA simple introduction to Swift Scripting with Fibonacci Sequence.\n\n---\n### [Introduction to the Swift REPL](https://developer.apple.com/swift/blog/?id=18) \n\u003csub\u003eby Apple\u003c/sub\u003e\n\nInteractive Swift sessions right in your console.\n\n---\n### [Command Line Swift](http://www.russbishop.net/command-line-swift) \n\u003csub\u003eby [Russ Bishop](https://twitter.com/xenadu02)\u003c/sub\u003e\n\nWorking with different toolchains. Might be helpful for Server-side Swift projects 🤔\n\n---\n### [Command Line Programs on macOS Tutorial](https://www.raywenderlich.com/163134/command-line-programs-macos-tutorial-2)\n\u003csub\u003eby [Eric A. Soto](https://twitter.com/ericwastaken)\u003c/sub\u003e\n\nStep-by-step tutorial with output streams, command-line arguments, and interactive input.\n\n---\n### [Swift Package Manager macOS deployment target override](https://oleb.net/blog/2017/04/swift-3-1-package-manager-deployment-target/)\n\u003csub\u003eby [Ole Begemann](https://twitter.com/olebegemann)\u003c/sub\u003e\n\nAs you can understand from the title, the author writes about deployment target overriding in Swift Script project.\n\n---\n### [Handling Commands with Swift Package Manager ArgumentParser](http://www.enekoalonso.com/articles/handling-commands-with-swift-package-manager)\n\u003csub\u003eby [Eneko Alonso](https://twitter.com/eneko)\u003c/sub\u003e\n\nWant to use `ArgumentParser` like a pro? You should definitely read this.\n\n---\n### [How to fuzz-test a Swift package](https://loic.land/2018/04/06/fuzzing.html)\n\u003csub\u003eby [Loïc Lecrenier](https://twitter.com/loiclec)\u003c/sub\u003e\n\nAdvanced technique of SPM package testing - fuzz-testing via libFuzzer.\n\n---\n### [How to Build Swift Compiler-Based Tool? The Step-by-Step Guide](https://www.polidea.com/blog/how-to-build-swift-compiler-based-tool-the-step-by-step-guide/)\n\u003csub\u003eby [Krzysztof Siejkowski](https://twitter.com/_siejkowski)\u003c/sub\u003e\n\nAwesome guide about using Swift compiler in your CLI tools.\n\n## Videos\n\n### [Swift Argument Parser with Guilherme Rambo](https://youtu.be/DgvaQMMWEhs) \n\u003csub\u003eby [Swift Toolkit.dev](https://x.com/SwiftToolkit)\u003c/sub\u003e\n\n---\n### [Swift Connection 2024 - Natan Rolnik - Mastering Swift for Scripting \u0026 Tooling](https://youtu.be/tbx_T2dwoFI) \n\u003csub\u003eby [Natan Rolnik](https://twitter.com/zntfdr)\u003c/sub\u003e\n\n---\n### [UIKonf 2020 - Federico Zanetello - Swift Scripts: Zero to Hero](https://youtu.be/KbwmvThZUDM) \n\u003csub\u003eby [Federico Zanetello](https://x.com/natanrolnik)\u003c/sub\u003e\n\nEvery iOS/macOS developer uses (scripting) tools such as fastlane and swiftLint to automate tasks as much work as possible: in this talk we will dive into how we can build our own Swift scripts.\n\n---\n### [Scripting in Swift For a Testable Build](https://youtu.be/tohaS-UYTYg) \n\u003csub\u003eby [Ellen Shapiro](https://twitter.com/designatednerd)\u003c/sub\u003e\n\nUnderlying many large iOS projects is a tangled nest of bash scripts that developers are often afraid to touch for fear of breaking something, and which is littered with print statements from generations of developers trying to figure out how on earth it works. How can we move away from this mess and to something more sustainable? Ellen will discuss moving a codebase like this to a command line tool that can be called from a Swift script, and which can be tested and breakpointed, and just might save a tiny bit of your sanity.\n\n---\n### [Swift scripting in practice](https://youtu.be/_8hQA67n04E) \n\u003csub\u003eby [John Sundell](https://twitter.com/johnsundell)\u003c/sub\u003e\n\nAwesome talk by open-source ninja. Contains real-world cases, good points, and live demo.\n\n---\n### [Swift Scripting Redux: Localization](https://news.realm.io/news/altconf-ayaka-nonaka-swift-scripting-redux-localization/) \n\u003csub\u003eby [Ayaka Nonaka](https://twitter.com/ayanonagon)\u003c/sub\u003e\n\nMix of Swift Scripting and Localization.\n\n---\n### [Swift Scripting](https://news.realm.io/news/swift-scripting/) \n\u003csub\u003eby [Ayaka Nonaka](https://twitter.com/ayanonagon)\u003c/sub\u003e\n\nOld but good talk. Pay attention to Dependency Management section.\n\n## Author\n\nArtem Novichkov, https://www.artemnovichkov.com/\n","funding_links":[],"categories":["Libs","Scripting [🔝](#readme)","Others"],"sub_categories":["Scripting"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartemnovichkov%2FSwift-For-Scripting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartemnovichkov%2FSwift-For-Scripting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartemnovichkov%2FSwift-For-Scripting/lists"}