{"id":20880806,"url":"https://github.com/curtisalexander/get-paket","last_synced_at":"2026-05-23T08:03:05.655Z","repository":{"id":80175138,"uuid":"207772368","full_name":"curtisalexander/get-paket","owner":"curtisalexander","description":null,"archived":false,"fork":false,"pushed_at":"2019-10-09T19:35:41.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-26T20:10:40.726Z","etag":null,"topics":["fsharp"],"latest_commit_sha":null,"homepage":"","language":"F#","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/curtisalexander.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-09-11T09:18:58.000Z","updated_at":"2019-10-09T19:35:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"8bc75fa6-3bdb-4cc4-9db2-d7384870f7d3","html_url":"https://github.com/curtisalexander/get-paket","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/curtisalexander/get-paket","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curtisalexander%2Fget-paket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curtisalexander%2Fget-paket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curtisalexander%2Fget-paket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curtisalexander%2Fget-paket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/curtisalexander","download_url":"https://codeload.github.com/curtisalexander/get-paket/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curtisalexander%2Fget-paket/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33387657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fsharp"],"created_at":"2024-11-18T07:22:12.250Z","updated_at":"2026-05-23T08:03:05.649Z","avatar_url":"https://github.com/curtisalexander.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# get-paket\n\nExperiment with downloading files via [F#](https://fsharp.org/) as well as experimenting with consuming applications using [.NET Core Global Tools](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools).\n\n**Under construction.**\n:construction:\n\n## Initial Approach\n\nUtilizes [FSharp.Data](https://fsharp.github.io/FSharp.Data/library/Http.html) for both the HTTP request as well as parsing returned JSON.\n\n### Build, Package, Install, and Run\n\n#### Clone\n\n```\ngit clone https://github.com/curtisalexander/get-paket.git\n```\n\n#### Build\n\n```\ndotnet build\n```\n\nwith the following software versions utilized\n\n```\nmacOS version:\n10.14.6\n\ndotnet core version:\n3.0.100\n\nPackage versions:\nProject 'get-paket' has the following package references\n   [netcoreapp3.0]:\n   Top-level Package      Requested   Resolved\n   \u003e FSharp.Core          4.7         4.7.0\n   \u003e FSharp.Data          3.1.1       3.1.1\n```\n\n#### Package\n\nUpdate `fsproj` file by adding the following.\n\n\n```\n\u003cPackAsTool\u003etrue\u003c/PackAsTool\u003e\n\u003cToolCommandName\u003eget-paket\u003c/ToolCommandName\u003e\n\u003cPackageOutputPath\u003e./nupkg\u003c/PackageOutputPath\u003e\n\u003cVersion\u003e0.0.1\u003c/Version\u003e\n```\n\nNext, create a NuGet package.\n\n```\ndotnet pack\n```\n\n#### Install\n\nInstall as a global tool.\n\n```\ndotnet tool install nupkg/get-paket.0.0.1.nupkg -g\n```\n\n#### Run\n\n```\ncd root-directory \u0026\u0026 get-paket\n```\n\n## Other Approaches\n\n- Research using [HttpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netcore-3.0) in lieu of [HttpWebRequest](https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest?\u0026view=netcore-3.0).\n\n  - Will be a good opportunity to continue practicing using the [BCL](https://docs.microsoft.com/en-us/dotnet/api/index) within `F#`. In addition, will be an opportunity to practice with [Async](https://docs.microsoft.com/en-us/dotnet/fsharp/tutorials/asynchronous-and-concurrent-programming/async) programming.\n\n- Try to download the file via [streaming](https://github.com/curtisalexander/get-paket/blob/master/Program.fs#L87).\n\n- Try to download the file with [async](https://github.com/curtisalexander/get-paket/blob/master/Program.fs#L88).\n\n- Use a [JSON type provider](https://fsharp.github.io/FSharp.Data/library/JsonProvider.html).\n    - Save and utilize local copy to get types for compilation and building\n    - During runtime, hit the actual repo\n\n## A Better Way\n\nA better way to manage [may be](https://gist.github.com/baronfel/80f49ecb93ebacb84ca840fca7a12fc2) to manage as a global/local tool.\n\n#### Example Workflow to Use as a Local Tool\n\nAssumes have [.NET Core](https://dotnet.microsoft.com/download) installed.\n\nCreate directory\n\n```\nmkdir newapp\n```\n\nCreate a local tool manifest.  This creates the file `.config/dotnet-tools.json`.\n\n```\ndotnet new tool-manifest\n```\n\nInstall paket by running the following.  Note that it adds the latest version of paket to the `.config/dotnet-tools.json` file.\n\n```\ndotnet tool install paket\n```\n\nNow continue with a typical `paket` workflow.  Note, however, that there is no longer a `.paket` sub-directory within your application directory.\n\nCommands are now issued with `dotnet paket` rather than `paket.exe` or `mono .paket/paket.exe`.\n\n```\ndotnet paket init\n```\n\nAdd a package.\n\n```\ndotnet paket add FSharp.Data\n```\n\nInstall all packages.\n\n```\ndotnet paket install\n```\n\nEtc, etc, etc...\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurtisalexander%2Fget-paket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcurtisalexander%2Fget-paket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurtisalexander%2Fget-paket/lists"}