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
|
# cleberg.net
This repository holds the files for [cleberg.net](https://cleberg.net), a
static-site with blog posts, personal links, and more.
This site uses [weblorg](https://github.com/emacs-love/weblorg) to build the
static site, which relies on [emacs](https://www.gnu.org/software/emacs/).
## Site Structure
Content pages (e.g., blog posts) are written in org-mode and templates are
written in HTML. Weblorg can be used to build these files into a static site,
which can then be deployed to a web server.
The main site components are:
- Org source files containing content, including blog posts and pages.
- A configuration file (`publish.el`) that specifies publishing parameters like
base URL, output directories, and export options.
- Assets such as images and style sheets, located in designated subdirectories.
- Utility scripts (e.g., `build.py`) to facilitate building and deployment.
## Dependencies
The publishing system depends on:
- Emacs text editor with Org-Mode.
- The weblorg package, available at <https://github.com/emacs-love/weblorg>,
which provides advanced Org publishing functionality and theming support.
## Screenshots
Screenshots illustrating the site in both light and dark display modes are
included in the `./screenshots/` directory.
| Light Mode | Dark Mode |
| ---------------------------- | --------------------------- |
|  |  |
## Configuration
Custom site settings are centralized in the `publish.el` file. This file
establishes key variables such as:
- The base URL for links.
- Output directories.
- Publishing rules defining which files are converted and how.
- Theme settings managed by weblorg.
Users intending to modify site parameters should review and edit this file
accordingly. The weblorg documentation contains extensive details on
configuration options and expected formats.
## Setup Instructions
To obtain a working copy of this repository, execute the following commands
within a shell environment or Emacs shell interface:
```shell
git clone https://git.cleberg.net/cleberg.net.git
cd cleberg.net
emacs -nw
```
For users employing Doom Emacs, open any repository Org file using `SPC f f` to
access the content.
## Building and Publishing the Site
The publishing process involves invoking Emacs with the `publish.el` script,
which performs the export of Org documents to HTML output.
Configure the environment variable `ENV` as follows:
- If `ENV` is set to `prod`, the script uses production base URL settings as
defined in `publish.el`.
- If `ENV` is unset or set differently, the script defaults to development
settings, typically using `localhost:8000` as the base URL.
Example commands to build the site:
```shell
# Production build:
ENV=prod emacs --script publish.el
# Development build:
emacs --script publish.el
```
Generated site files reside in the designated output directory, ready for
deployment. Deployment can be performed by standard file transfer protocols such
as `scp` or SFTP.
The `./build.py` script automates the build process. It can be executed with or
without the `ENV` variable to perform production or development builds
respectively.
```shell
# Production build script:
ENV=prod uv run build.py
# Development build script:
uv run build.py
```
## Creating New Blog Posts
To add new blog content, follow this procedure within Emacs:
1. Open a new Org file (via `C-x C-f` or Doom's `SPC f f`).
2. Insert the contents of the post template with `C-x i`, sourcing from
`utils/template.org`.
3. Modify the new file as needed to add post content and metadata.
This method streamlines content creation by reusing a preformatted template.
|