{"id":40907672,"url":"https://github.com/mhelmetag/gosurf","last_synced_at":"2026-01-22T02:40:40.399Z","repository":{"id":41062114,"uuid":"122531840","full_name":"mhelmetag/gosurf","owner":"mhelmetag","description":"CLI Client for Surfline","archived":false,"fork":false,"pushed_at":"2022-08-30T06:08:11.000Z","size":86,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T11:47:08.771Z","etag":null,"topics":["cli","surfing","tides"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mhelmetag.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}},"created_at":"2018-02-22T20:32:10.000Z","updated_at":"2023-08-08T00:23:47.000Z","dependencies_parsed_at":"2022-07-14T07:10:33.085Z","dependency_job_id":null,"html_url":"https://github.com/mhelmetag/gosurf","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/mhelmetag/gosurf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhelmetag%2Fgosurf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhelmetag%2Fgosurf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhelmetag%2Fgosurf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhelmetag%2Fgosurf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhelmetag","download_url":"https://codeload.github.com/mhelmetag/gosurf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhelmetag%2Fgosurf/sbom","scorecard":{"id":639993,"data":{"date":"2025-08-11","repo":{"name":"github.com/mhelmetag/gosurf","commit":"844788c4de9dd01178e4ae8659dd8eead9b9fdce"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/18 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":6,"reason":"dependency not pinned by hash detected -- score normalized to 6","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/mhelmetag/gosurf/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mhelmetag/gosurf/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/mhelmetag/gosurf/publish.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   2 out of   2 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 3.1.1 not signed: https://api.github.com/repos/mhelmetag/gosurf/releases/75728240","Warn: release artifact 3.1.0 not signed: https://api.github.com/repos/mhelmetag/gosurf/releases/73818457","Warn: release artifact 3.0.0 not signed: https://api.github.com/repos/mhelmetag/gosurf/releases/70705417","Warn: release artifact 2.3.1 not signed: https://api.github.com/repos/mhelmetag/gosurf/releases/43439170","Warn: release artifact 2.3.0 not signed: https://api.github.com/repos/mhelmetag/gosurf/releases/39322266","Warn: release artifact 3.1.1 does not have provenance: https://api.github.com/repos/mhelmetag/gosurf/releases/75728240","Warn: release artifact 3.1.0 does not have provenance: https://api.github.com/repos/mhelmetag/gosurf/releases/73818457","Warn: release artifact 3.0.0 does not have provenance: https://api.github.com/repos/mhelmetag/gosurf/releases/70705417","Warn: release artifact 2.3.1 does not have provenance: https://api.github.com/repos/mhelmetag/gosurf/releases/43439170","Warn: release artifact 2.3.0 does not have provenance: https://api.github.com/repos/mhelmetag/gosurf/releases/39322266"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T10:27:34.005Z","repository_id":41062114,"created_at":"2025-08-21T10:27:34.005Z","updated_at":"2025-08-21T10:27:34.005Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28651809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"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":["cli","surfing","tides"],"created_at":"2026-01-22T02:40:40.324Z","updated_at":"2026-01-22T02:40:40.393Z","avatar_url":"https://github.com/mhelmetag.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoSurf\n\nCLI Client for Surfline\n\n## Usage\n\n`gosurf` can read forecasts and tides for all places Surfline services from the command line (for Windows, Linux and Mac).\n\n### Forecasts\n\nTo get a forecast (North Los Angeles, CA, USA):\n\n```sh\n$ gosurf f -r 58581a836630e24c44878fd5\nFetching 3 day(s) of forecasts for North Los Angeles...\n+----------+-------------+--------------+-----------+----------------+\n|   DATE   | TIME OF DAY |    RATING    |   RANGE   |    FORECAST    |\n+----------+-------------+--------------+-----------+----------------+\n| 8/6/2022 | AM          | Fair         | 2.0-3.0ft | Thigh to waist |\n|          | PM          | Poor to Fair | 2.0-3.0ft | Thigh to waist |\n| 8/7/2022 | AM          | Fair         | 2.0-3.0ft | Thigh to waist |\n|          | PM          | Poor to Fair | 2.0-3.0ft | Knee to thigh  |\n| 8/8/2022 | AM          | Poor to Fair | 1.0-2.0ft | Knee to thigh  |\n|          | PM          | Poor         | 1.0-2.0ft | Knee to thigh  |\n+----------+-------------+--------------+-----------+----------------+\n```\n\nOr to get a forecast for a different subregion (specifically Ventura, CA, USA) and day range:\n\n```sh\n$ gosurf f -r 58581a836630e24c4487900c -d 5\nFetching 5 day(s) of forecasts for Ventura...\n+-----------+-------------+--------------+-----------+----------------+\n|   DATE    | TIME OF DAY |    RATING    |   RANGE   |    FORECAST    |\n+-----------+-------------+--------------+-----------+----------------+\n| 8/6/2022  | AM          | Poor to Fair | 2.0-3.0ft | Thigh to waist |\n|           | PM          | Poor to Fair | 2.0-3.0ft | Thigh to waist |\n| 8/7/2022  | AM          | Poor to Fair | 2.0-3.0ft | Thigh to waist |\n|           | PM          | Poor to Fair | 2.0-3.0ft | Thigh to waist |\n| 8/8/2022  | AM          | Poor to Fair | 1.0-2.0ft | Knee to thigh  |\n|           | PM          | Poor to Fair | 1.0-2.0ft | Knee to thigh  |\n| 8/9/2022  | AM          | Poor to Fair | 1.0-2.0ft | Knee to thigh  |\n|           | PM          | Poor         | 1.0-2.0ft | Knee to thigh  |\n| 8/10/2022 | AM          | Poor         | 0.5-1.0ft | Shin to knee   |\n|           | PM          | Poor         | 0.5-1.0ft | Shin to knee   |\n+-----------+-------------+--------------+-----------+----------------+\n```\n\nBe sure to use the `subregion` ID (if coming from Surfline or their API directly) or the `TYPEID` or ID (if coming from the CLI; either solo search or interactive search).\n\n### Tide\n\nTo get the tides for Solimar Beach, CA, USA:\n\n```sh\n$ gosurf t -s 5842041f4e65fad6a770895f -d 3\nFetching 3 day(s) of tides for Solimar...\n+----------+-------+-------------+---------+\n|   DATE   | TIME  | DESCRIPTION | HEIGHT  |\n+----------+-------+-------------+---------+\n| 8/6/2022 | 05:57 | High        | 2.95ft  |\n|          | 09:58 | Low         | 2.53ft  |\n|          | 16:59 | High        | 5.48ft  |\n| 8/7/2022 | 00:55 | Low         | 0.43ft  |\n|          | 07:33 | High        | 3.22ft  |\n|          | 11:24 | Low         | 2.76ft  |\n|          | 18:02 | High        | 5.91ft  |\n| 8/8/2022 | 01:51 | Low         | -0.30ft |\n|          | 08:29 | High        | 3.58ft  |\n|          | 12:40 | Low         | 2.69ft  |\n|          | 19:01 | High        | 6.40ft  |\n+----------+-------+-------------+---------+\n```\n\nBe sure to use the `spot` ID (if coming from Surfline or their API directly) or the `TYPEID` (if coming from the CLI).\n\n### Search\n\nThis is for searching Surfline's taxonomy tree. I recommend only using a maxDepth of 0 (default) or 1.\n\nThe default is the top level of the tree, Earth:\n\n```sh\n$ gosurf s\n+--------------------------+---------+--------+---------------+\n|            ID            |  TYPE   | TYPEID |     NAME      |\n+--------------------------+---------+--------+---------------+\n| 58f7f00ddadb30820bb69bbc | geoname | N/A    | Africa        |\n| 58f7ed51dadb30820bb38791 | geoname | N/A    | North America |\n| 58f7eef9dadb30820bb5626e | geoname | N/A    | Oceania       |\n| 58f7eef1dadb30820bb556be | geoname | N/A    | Asia          |\n| 58f7eef8dadb30820bb5601b | geoname | N/A    | Europe        |\n| 58f7eef5dadb30820bb55cba | geoname | N/A    | South America |\n+--------------------------+---------+--------+---------------+\n```\n\nYou can then work your way down by passing the next level into the search command like `gosurf s -t 58f7ed51dadb30820bb38791` (for North America) and so on.\n\nTo get the records contained in Ventura County (using a max depth of 1 since I'm looking for spots specifically):\n\n```sh\n$ gosurf s -t 58f7ed58dadb30820bb38f8b -d 1\n+--------------------------+---------+--------------------------+------------------------+\n|            ID            |  TYPE   |          TYPEID          |          NAME          |\n+--------------------------+---------+--------------------------+------------------------+\n| 58f7ed59dadb30820bb39233 | geoname | N/A                      | Casa Conejo            |\n| 58f7ed58dadb30820bb38f96 | geoname | N/A                      | Ventura                |\n| 58f7edbcdadb30820bb3fd33 | geoname | N/A                      | Oxnard Shores          |\n| 58f7edc0dadb30820bb401ff | spot    | 5842041f4e65fad6a770895f | Solimar                |\n| 58f80a9ddadb30820bd12fce | spot    | 584204214e65fad6a7709cfd | C St. Overview         |\n| 58f80a72dadb30820bd0ff32 | spot    | 584204204e65fad6a77096b1 | Ventura Point          |\n| 58f7edbddadb30820bb3fe4b | spot    | 5842041f4e65fad6a7708957 | Pitas Point            |\n| 58f7f229dadb30820bb94b7d | spot    | 584204204e65fad6a770904d | Mondos                 |\n| 58f7edbddadb30820bb3ff16 | spot    | 5842041f4e65fad6a7708959 | Emma Wood              |\n| 59c1970edadb30820b1d5a7f | spot    | 59c1970dbb6f23001cd20dd7 | Ventura Point Overview |\n| 58f7edbfdadb30820bb4015d | spot    | 5842041f4e65fad6a770895e | Summer Beach           |\n| 58f7ed5fdadb30820bb39978 | spot    | 5842041f4e65fad6a7708828 | C St.                  |\n| 58f7ed58dadb30820bb38f9e | spot    | 5842041f4e65fad6a770880d | Gold Coast Beachbreaks |\n| 58f7ed58dadb30820bb39099 | spot    | 5842041f4e65fad6a7708811 | Ventura Harbor         |\n| 58f7edc3dadb30820bb404f6 | spot    | 5842041f4e65fad6a7708963 | Ventura Overhead       |\n| 58f7edbcdadb30820bb3fd40 | spot    | 5842041f4e65fad6a770894c | Oxnard                 |\n+--------------------------+---------+--------------------------+------------------------+\n```\n\n### Search Interactive\n\nThis is for interactively searching Surfline's taxonomy tree a bit more easily (similar to the site). Basically I take care of navigating the tree (correct depth and fetching what's next) and you just select as you go with enter.\n\nThere are two choices (default is subregion):\n\n- `gosurf si -t subregion` mimics the 'Forecasts' tree\n- `gosurf si -t spot` mimics the 'Cams \u0026 Reports' tree\n\n```sh\n$ gosurf si\nUse the arrow keys to navigate: ↓ ↑ → ←  and / toggles search\n? Select Taxonomy:\n  ▸ Africa (58f7f00ddadb30820bb69bbc)\n    Asia (58f7eef1dadb30820bb556be)\n    Europe (58f7eef8dadb30820bb5601b)\n    North America (58f7ed51dadb30820bb38791)\n↓   Oceania (58f7eef9dadb30820bb5626e)\n```\n\nAs the hints say: navigation is done using the up and down keys, forward slash (`/`) enters search mode for faster navigation and selecting is done with enter.\n\n## Installation\n\n### Binary\n\nDownload the right binary (for example, `gosurf_darwin_arm64` for Mac with M1) and move it to somewhere in your `$PATH` (so that it can be loaded into your command line environment).\n\nFor Mac, you might do something like this to download `gosurf` 3.0.0:\n\n```sh\ncurl -L https://github.com/mhelmetag/gosurf/releases/download/3.0.0/gosurf_darwin_arm64 -o /usr/local/bin/gosurf\nchmod a+x /usr/local/bin/gosurf\n```\n\n### From Source\n\n```sh\ngo get https://github.com/mhelmetag/gosurf\n```\n\nAnd then either have your `$GOPATH/bin` in your `$PATH` or move that file into your `$PATH`.\n\n### Homebrew from Source\n\nIf you prefer having homebrew do it for you:\n\n```sh\nbrew tap mhelmetag/tap\nbrew install gosurf\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhelmetag%2Fgosurf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhelmetag%2Fgosurf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhelmetag%2Fgosurf/lists"}