forgejo

package module
v0.0.0-...-a33ddeb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2025 License: MIT Imports: 3 Imported by: 0

README

go-forgejo

Package forgejo provides tools for working with Forgejo servers (such as Codeberg), for the Go programming language.

Package forgejo provides a "io/fs" interface for all the Forgejo servers on the Internet. Enabling you to open files on a Forgejo as an fs.File. And, enabling you to open directories on a Forgejo server as an fs.FS.

Documention

Online documentation, which includes examples, can be found at: http://godoc.org/codeberg.org/reiver/go-forgejo

GoDoc

Example

Here is an example of opening up a file for reading. Here we are connecting to the popular codeberg.org Forgejo server, and opening the file named README.md in the repo named bing-bong-bang under the account for the user named joeblow:

import "codeberg.org/reiver/go-forgejo"

file, err := forgejo.Open("codeberg.org/joeblow/bing-bong-bang/docs/HACKING.md")

Here is an example of opening up a directory as a file-system:

import "codeberg.org/reiver/go-forgejo"

filesys, err := forgejo.DirFS("codeberg.org/joeblow/bing-bong-bang/docs")

Here is an example of casting an fs.File to a fs.FS when the fs.File represents a directory:

import "codeberg.org/reiver/go-forgejo"

file, err := forgejo.Open("codeberg.org/joeblow/bing-bong-bang/docs")
if nil != err {
	return err
}

switch file.(type) {
case fs.FS:
	// It is actually a directory.
default:
	// It is just a file.
}

Import

To import package forgejo use import code like the following:

import "codeberg.org/reiver/go-forgejo"

Installation

To install package forgejo do the following:

GOPROXY=direct go get codeberg.org/reiver/go-forgejo

Author

Package forgejo was written by Charles Iliya Krempeaux

Documentation

Index

Constants

View Source
const (
	ErrIsDir    = forgejofs.ErrIsDir
	ErrIsNotDir = forgejofs.ErrIsNotDir
)

Variables

View Source
var FS = forgejofs.Root

FS is an [fs.FS], [fs.SubFS], and more.

FS represents the root of the (Forgejo part of the) Internet.

Here are some examples:

Example 1:

// Open a file.
file, err := forgejo.FS.Open("codeberg.org/reiver/go-ascii/README.md")

Example 2:

// Open a repo.
file, err := forgejo.FS.Open("codeberg.org/reiver/go-ascii")

Example 3:

// Open a repo as a sub-FS (sub-file-system).
file, err := forgejo.FS.Sub("codeberg.org/reiver/go-ascii")

Example 4:

// Open user.
filesys, err := forgejo.FS.Open("codeberg.org/reiver")

Example 5:

// Open user as a sub-FS (sub-file-system).
filesys, err := forgejo.FS.Sub("codeberg.org/reiver")

Example 6:

// Open a host.
file, err := forgejo.FS.Open("codeberg.org")

At the top-level are the Internet domain-names of (Forgejo's subset of) the Internet. Under that are the user-names. Under that arethe repo-names. And, under that are the content of the repo.

Functions

func DirFS

func DirFS(dir string) (fs.FS, error)

DirFS opens the named directory as a sub-file-system.

Here are some examples:

Example 1:

	// Mount a directory.
     filesys, err := forgejo.DirFS("codeberg.org/reiver/retejo/docs")

Example 2:

	// Mount a repo.
     filesys, err := forgejo.DirFS("codeberg.org/reiver/retejo")

Example 3:

	// Mount a user.
     filesys, err := forgejo.DirFS("codeberg.org/reiver")

Example 4:

	// Mount a host.
     filesys, err := forgejo.DirFS("codeberg.org")

A mounted directory implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

A mounted repo implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

A mounted user implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

A mounted host implements [fs.DirEntry], [fs.File], and [fs.FS], and can be casted to any of these.

func Open

func Open(name string) (fs.File, error)

Open opens the named file (or directory) for reading.

Here are some examples:

Example 1:

// Open a file.
file, err := forgejo.Open("codeberg.org/reiver/retejo/README.md")

Example 2:

// Open a directory.
file, err := forgejo.Open("codeberg.org/reiver/retejo/docs")

Example 3:

// Open a repo.
file, err := forgejo.Open("codeberg.org/reiver/retejo")

Example 4:

// Open a user.
file, err := forgejo.Open("codeberg.org/reiver")

Example 5:

// Open a host.
file, err := forgejo.Open("codeberg.org")

An opened file implements [fs.DirEntry], and [fs.File], and can be casted to any of these.

An opened directory implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

An opened repo implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

An opened user implements [fs.DirEntry], [fs.File], [fs.FS], and DirReaderAll, and can be casted to any of these.

An opened host implements [fs.DirEntry], [fs.File], and [fs.FS], and can be casted to any of these.

func OpenAndLog

func OpenAndLog(logger log.Logger, name string) (fs.File, error)

OpenAndLog is similar to Open but also write logs.

Types

type DirReaderAll

type DirReaderAll = forgejofs.DirReaderAll

Directories

Path Synopsis
internal
fs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL