1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
git-pages-cli
=============
_git-pages-cli_ is a command-line application for publishing sites to [git-pages].
> [!TIP]
> If you want to publish a site from a CI workflow, use the [Forgejo Action][git-pages-action] instead.
[git-pages]: https://codeberg.org/git-pages/git-pages
[git-pages-action]: https://codeberg.org/git-pages/action
Installation
------------
You can install _git-pages-cli_ using one of the following methods:
1. **Downloading a binary**. You can download the [latest build][latest] or pick a [release][releases].
1. **Using a Docker container**. Choose between the latest build or a [release tag][containers]. Then run:
```console
$ docker run --rm codeberg.org/git-pages/git-pages-cli:latest ...
```
1. **Installing from source**. First, install [Go](https://go.dev/) 1.25 or newer. Then run:
```console
$ go install codeberg.org/git-pages/git-pages-cli@latest
```
[latest]: https://codeberg.org/git-pages/git-pages-cli/releases/tag/latest
[releases]: https://codeberg.org/git-pages/git-pages-cli/releases
[containers]: https://codeberg.org/git-pages/-/packages/container/git-pages-cli/versions
Usage
-----
To prepare a DNS challenge for a given site and password:
```console
$ git-pages-cli https://example.org --challenge # generate a random password
password: 28a616f4-2fbe-456b-8456-056d1f38e815
_git-pages-challenge.example.org. 3600 IN TXT "a59ecb58f7256fc5afb6b96892501007b0b65d64f251b1aca749b0fca61d582c"
$ git-pages-cli https://example.org --password xyz --challenge
_git-pages-challenge.example.org. 3600 IN TXT "6c47172c027b3c79358f9f8c110886baf4826d9bc2a1c7d0f439cc770ed42dc8"
$ git-pages-cli https://example.org --password xyz --challenge-bare
6c47172c027b3c79358f9f8c110886baf4826d9bc2a1c7d0f439cc770ed42dc8
```
To publish a site from a git repository available on the internet (`--password` may be omitted if the repository is allowlisted via DNS):
```console
$ git-pages-cli https://example.org --upload-git https://codeberg.org/username/example.org.git
$ git-pages-cli https://example.org --password xyz --upload-git https://codeberg.org/username/example.org.git
```
To publish a site from a directory on your machine:
```console
$ git-pages-cli https://example.org --password xyz --upload-dir site-contents
```
To delete a site:
```console
$ git-pages-cli https://example.org --password xyz --delete
```
It is not possible to publish a site to a domain for the first time using HTTPS, since the git-pages server is not allowed to acquire a TLS certificate for a domain before a site is published on that domain. Either use plain HTTP instead, or provide a hostname for which the server *does* have a TLS certificate using the `--server` option:
```console
$ git-pages-cli https://example.org --server grebedoc.dev --password xyz --upload-dir ...
```
### Forge authorization
Uploading a directory to a site on a wildcard domain (e.g. `https://<owner>.grebedoc.dev/<repo>`) requires the use of an access token with push permissions for the corresponding repository (`https://codeberg.org/<owner>/<repo>.git` in this case).
To create such an access token on Forgejo:
1. Open _Settings_ > _Applications_ > _Access tokens_.
1. Expand _Select permissions_, pick _Read and write_ under _repository_.
1. Set _Token name_ to something informative (e.g. "git-pages publishing").
1. Click _Generate token_.
1. The token will appear in a notification (a long string of hexadecimal numbers all on its own).
To deploy using an access token:
```console
$ git-pages-cli https://username.grebedoc.dev --token <token> --upload-dir ...
```
**Keep the access token safe and secure!** Anyone who has it will be able to change the data in any of your repositories.
Advanced usage
--------------
To retrieve the site manifest (for debugging only: manifest schema is not versioned and **subject to change without notice**, including renaming of existing fields):
```console
$ git-pages-cli https://example.org --password xyz --debug-manifest
{
"contents": {
"": {
"type": "Directory"
},
"index.html": {
"type": "InlineFile",
"size": "5",
"data": "bWVvdwo=",
"contentType": "text/html; charset=utf-8"
}
},
"originalSize": "5",
"compressedSize": "5",
"storedSize": "0",
"redirects": [],
"headers": [],
"problems": []
}
```
License
-------
[0-clause BSD](LICENSE.txt)
|