File: README.md

package info (click to toggle)
git-pages-cli 1.5.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 100 kB
  • sloc: makefile: 6
file content (129 lines) | stat: -rw-r--r-- 4,399 bytes parent folder | download
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)