Skip to content

Can't install forked extension #9759

@IvanRibakov

Description

@IvanRibakov

Describe the bug

I have forked an extension and made some improvements. While waiting for the PR to the upstream repo to be reviewed/merged I'd like to share my progress with my colleagues, however I'm unable to install the extension from my fork.

gh version 2.54.0 (2024-08-01)
https://github.com/cli/cli/releases/tag/v2.54.0

Steps to reproduce the behavior

I have tried following commands:

$ gh extensions install IvanRibakov/gh-workflow-stats
$ gh extensions install IvanRibakov/gh-workflow-stats --force
$ gh extensions install IvanRibakov/gh-workflow-stats --force --pin f2286ac

but all of them return the same cryptic error message:

extension is not installable: missing executable

Expected vs actual behavior

Expecting to be able to install an extension from a public fork of a public repo while being able to install the extension from the upstream without issues, instead getting a non-descriptive error.

Logs

Logs

$ GH_DEBUG=api gh extensions install https://github.com/IvanRibakov/gh-workflow-stats --pin f2286ac --force
* Request at 2024-10-15 13:12:09.106395563 +0200 CEST m=+0.050985944
* Request to https://api.github.com/repos/IvanRibakov/gh-workflow-stats/releases/latest
> GET /repos/IvanRibakov/gh-workflow-stats/releases/latest HTTP/1.1
> Host: api.github.com
> Accept: application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview
> Authorization: token ████████████████████
> Content-Type: application/json; charset=utf-8
> Time-Zone: Europe/Madrid
> User-Agent: GitHub CLI 2.54.0
> X-Gh-Cache-Ttl: 30s

⢿< HTTP/2.0 404 Not Found
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
< Content-Security-Policy: default-src 'none'
< Content-Type: application/json; charset=utf-8
< Date: Tue, 15 Oct 2024 11:12:14 GMT
< Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
< Server: github.com
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< Vary: Accept-Encoding, Accept, X-Requested-With
< X-Accepted-Oauth-Scopes: repo
< X-Content-Type-Options: nosniff
< X-Frame-Options: deny
< X-Github-Api-Version-Selected: 2022-11-28
< X-Github-Media-Type: github.v3; param=merge-info-preview.nebula-preview; format=json
< X-Github-Request-Id: 9D5A:37C4BC:D9552DD:DCC2930:670E4E0E
< X-Oauth-Scopes: delete:packages, read:org, repo, workflow, write:packages
< X-Ratelimit-Limit: 5000
< X-Ratelimit-Remaining: 4955
< X-Ratelimit-Reset: 1728991844
< X-Ratelimit-Resource: core
< X-Ratelimit-Used: 45
< X-Xss-Protection: 0


{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/releases/releases#get-the-latest-release",
  "status": "404"
}

* Request took 5.302112651s
* Request at 2024-10-15 13:12:14.408536288 +0200 CEST m=+5.353126669
* Request to https://api.github.com/repos/IvanRibakov/gh-workflow-stats
> GET /repos/IvanRibakov/gh-workflow-stats HTTP/1.1
> Host: api.github.com
> Accept: application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview
> Authorization: token ████████████████████
> Content-Type: application/json; charset=utf-8
> Time-Zone: Europe/Madrid
> User-Agent: GitHub CLI 2.54.0
> X-Gh-Cache-Ttl: 30s

...

{
  ...
  "name": "gh-workflow-stats",
  "full_name": "IvanRibakov/gh-workflow-stats",
  "private": false,
  ...
}

* Request took 254.775396ms
* Request at 2024-10-15 13:12:14.663345618 +0200 CEST m=+5.607935989
* Request to https://api.github.com/repos/IvanRibakov/gh-workflow-stats/contents/gh-workflow-stats
> GET /repos/IvanRibakov/gh-workflow-stats/contents/gh-workflow-stats HTTP/1.1
> Host: api.github.com
> Accept: application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview
> Authorization: token ████████████████████
> Content-Type: application/json; charset=utf-8
> Time-Zone: Europe/Madrid
> User-Agent: GitHub CLI 2.54.0
> X-Gh-Cache-Ttl: 30s

⣾< HTTP/2.0 404 Not Found
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
< Content-Security-Policy: default-src 'none'
< Content-Type: application/json; charset=utf-8
< Date: Tue, 15 Oct 2024 11:12:14 GMT
< Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
< Server: github.com
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< Vary: Accept-Encoding, Accept, X-Requested-With
< X-Accepted-Oauth-Scopes: 
< X-Content-Type-Options: nosniff
< X-Frame-Options: deny
< X-Github-Api-Version-Selected: 2022-11-28
< X-Github-Media-Type: github.v3; param=merge-info-preview.nebula-preview; format=json
< X-Github-Request-Id: 9D5A:37C4BC:D95549D:DCC2AE7:670E4E0E
< X-Oauth-Scopes: delete:packages, read:org, repo, workflow, write:packages
< X-Ratelimit-Limit: 5000
< X-Ratelimit-Remaining: 4953
< X-Ratelimit-Reset: 1728991844
< X-Ratelimit-Resource: core
< X-Ratelimit-Used: 47
< X-Xss-Protection: 0

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/repos/contents#get-repository-content",
  "status": "404"
}

* Request took 282.202949ms
extension is not installable: missing executable

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementa request to improve CLIgh-extensionrelating to the gh extension commandhelp wantedContributions welcome

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions