A simple to use go fs.FS based github filesystem.
org_or_user/ // org or username
└── repository // repository
├── git // fixed name 'git'
│ └── main // the branch name
│ └── README.md // the files in the repo
└── releases // fixed name 'releases'
└── v0.0.1 // release version
└── description.md // the description of the release and other files from the release
package githubfs
import (
"context""fmt""io/fs""os""github.com/schmidtw/githubfs""golang.org/x/oauth2"
)
funcmain() {
src:=oauth2.StaticTokenSource(
&oauth2.Token{AccessToken: os.Getenv("GITHUB_TOKEN")},
)
httpClient:=oauth2.NewClient(context.Background(), src)
gfs:=githubfs.New(
githubfs.WithHttpClient(httpClient),
githubfs.WithRepo("schmidtw", "githubfs"),
)
err:=fs.WalkDir(gfs, "schmidtw/githubfs/git/main/.reuse",
func(pathstring, d fs.DirEntry, errerror) error {
fmt.Printf("%s\n", path)
iferr!=nil||d.IsDir() {
returnerr
}
returnnil
})
iferr!=nil {
panic(err)
}
}- Symlinks are only supported for files fetched for small repos (where the fetch occurs via a tarball).
- Packages are not supported by the github graphql API, so they aren't supported here.
- Gists are not supported presently.