{"id":16704938,"url":"https://github.com/lilithhafner/quickdraw","last_synced_at":"2025-04-10T05:13:56.384Z","repository":{"id":63841265,"uuid":"571089887","full_name":"LilithHafner/Quickdraw","owner":"LilithHafner","description":"Install and use Julia packages with a single command on systems that may or may not already have Julia.","archived":false,"fork":false,"pushed_at":"2023-10-24T13:01:33.000Z","size":29,"stargazers_count":13,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-10T05:13:51.495Z","etag":null,"topics":["julia"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LilithHafner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-11-27T05:43:23.000Z","updated_at":"2024-04-17T15:28:57.000Z","dependencies_parsed_at":"2025-02-16T15:43:07.363Z","dependency_job_id":null,"html_url":"https://github.com/LilithHafner/Quickdraw","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/LilithHafner%2FQuickdraw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilithHafner%2FQuickdraw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilithHafner%2FQuickdraw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilithHafner%2FQuickdraw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LilithHafner","download_url":"https://codeload.github.com/LilithHafner/Quickdraw/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161277,"owners_count":21057555,"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":["julia"],"created_at":"2024-10-12T19:27:49.654Z","updated_at":"2025-04-10T05:13:56.348Z","avatar_url":"https://github.com/LilithHafner.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Do you have a Julia package that provides standalone functionality which you would like to\nshare with folks who do not use Julia? This is for you.\n\n# How do deploy with Quickdraw\n\nMake a Julia package with a `main()` function, put it in a public github repo, and put this this in your README.md\n\n````\n# Installation using [Quickdraw](https://github.com/LilithHafner/Quickdraw)\n\nTo install this software on Linux or Mac, run the following command:\n\n```\ncurl -fLsS https://lilithhafner.com/quickdraw | sh -s https://github.com/MyUsernameOrOrg/MyPackage.jl\n```\n\nTo install this software on Windows, install Julia and then run the following command:\n```\n(echo julia -e \"import Pkg; Pkg.activate(\\\"MyPackage\\\", shared=true); try Pkg.add(url=\\\"https://github.com/MyUsernameOrOrg/MyPackage.jl\\\"); catch; println(\\\"Warning: update failed\\\") end; using MyPackage: main; main()\" %0 %* \u0026\u0026 echo pause) \u003e MyPackage.bat\n```\n\nIn both cases, the command will create an executable called `MyPackage` that can be double clicked to run.\n````\n\nThings to remember\n- Change `MyUserNameOrOrg` to yor github username or the name of your the github organization that hosts the package being deployed. For example `LilithHafner` or `JuliaCollections`.\n- Change `MyPackage` to your package name (excluding `.jl`). For example `Minesweeper` or `BouncingBall`.\n- Unlike in a REPL, the application will exit when your main function exits. You can put `wait()` at the end of your `main()` function to prevent it from exiting.\n- Quickdraw automatically installs Julia if it is not already installed on Mac and Linux systems. On Windows systems, the user must ensure that Julia is installed before running the Quickdraw command.\n\n# Example\n\nThe following is found in the [README of ManualImageCoding.jl](https://github.com/LilithHafner/ManualImageCoding.jl):\n\n---\n\n### Installation using [Quickdraw](https://github.com/LilithHafner/quickdraw)\n\nTo install this software on Linux or Mac, run the following command:\n\n```\ncurl -fLsS https://lilithhafner.com/quickdraw | sh -s https://github.com/LilithHafner/ManualImageCoding.jl\n```\n\nTo install this software on Windows, install Julia and then run the following command:\n```\n(echo julia -e \"import Pkg; Pkg.activate(\\\"ManualImageCoding\\\", shared=true); try Pkg.add(url=\\\"https://github.com/LilithHafner/ManualImageCoding.jl\\\"); catch; println(\\\"Warning: update failed\\\") end; using ManualImageCoding: main; main()\" %0 %* \u0026\u0026 echo pause) \u003e ManualImageCoding.bat\n```\n\nIn both cases, the command will create an executable called `ManualImageCoding` that can be double clicked to run.\n\n---\n\n# Supported Systems\n\n- MacOS is supported and tested\n- Linux is supported and lightly tested\n- Windows is supported and lightly tested, but you need to install Julia separately from the windows store.\n\n# Local directories\n\nYou can specify a local path instead of a URL with, for example,\n```sh\ncurl -fLsS https://lilithhafner.com/quickdraw | sh -s ~/.julia/dev/MyExample\n```\nThis will use the latest commit of the default branch of the package at `~/.julia/dev/MyExample`, \nassuming the file `~/.julia/dev/MyExample/src/MyExample.jl` exists and defines a `main()` function.\n\n# How it works\n\n## Linux and Mac\n\nThe command above downloads [this script](script) and runs it with the locator of the\npackage as an argument. The script checks if Julia is installed, and if not, guides the user\nthrough the installation process with [juliaup](https://github.com/JuliaLang/juliaup).\nThen, the script creates a new shared environment at `@PackageName`, adds the package, and\nloads the package, ensuring it has a main function. Finally, the script creates a second\nscript which will remain on the user's computer. The second script is as follows\n```\njulia -e 'import Pkg; Pkg.activate(\"PackageName\", shared=true); Pkg.update(); using PackageName: main; main()' $0 $@\n```\nIt launches julia, activates the shared environment, loads the package, and runs the main\nfunction. This script is relocatable to anywhere within the user's computer.\n\n## Windows\n\nThe command creates a batch file that invokes julia, installs or updates the requested package, and runs the package's main function.\n\n# Accessing the path to the App\n\nThe package may access the path of the double-clickable app with `ARGS[1]`. If the app is\ninvoked from the command line, then `ARGS[2:end]` will reflect the command line arguments.\n\n# Deploying registered packages\n\nYou may deploy registered packages just like unregistered packages using a full URL.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flilithhafner%2Fquickdraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flilithhafner%2Fquickdraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flilithhafner%2Fquickdraw/lists"}