aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: bd2df757210af5485694fbbb7b8b134219c0584e (plain)
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
# Hydrilla&Haketilo

Haketilo is a tool to modify pages being opened in a web browser. It can block
pages' scripts and optionally inject user-specified ones.

Haketilo started as a browser extension (a WebExtension) with a dedicated user
scripts repository server, Hydrilla. It has since been rewritten as an HTTP
proxy. This repository contains the Python code of Hydrilla and Haketilo.

## Installation and running

Head on to the relevant [wiki
article](https://hydrillabugs.koszko.org/projects/haketilo/wiki/User_manual) for
usage instructions for casual users.

## Hacking

At the moment the recommended method of hacking Haketilo and Hydrilla's codebase
is through the [GNU Guix](https://guix.gnu.org/) package manager.

A Guix version of at least 1.1.0 is expected. Most development tasks have been
automated through Makefile. Rules use the `guix time-machine` command under the
hood to pull and run a fixed Guix version that is known to work with the
code. The most important make rules are described below.

### `make wheel`
Builds the project and put a source tarbal and a Python wheel under `dist/`.

### `make dist`
Generates a source tarbal under `dist/`.

### `make release`
Produces a standalone, relocatable, binary release tarball that should work on
most GNU/Linux systems. The tarball is written as
`./haketilo-and-hydrilla-bin-<VERSION>-<ARCHITECTURE>.tar.gz`.

### `make shell`
Spawns a development shell with project's all dependencies and dev dependencies
available.

### `make shell-with-haketilo`
Spawns a shell with Haketilo and Hydrilla built and available by means of a Guix
profile.

### `make catalogs`
Rebuilds GNU gettext message catalogs used for localization.

### `make refresh-catalogs`
Extracts messages form source files, refreshes the GNU gettext message catalog
source files and rebuilds the catalogs.

### `make test`
Runs the automated test suite.

### `make run-haketilo`
Runs `haketilo` program from sources.

### `mypy-lint`
Runs mypy static type checker over source files of the project.

### `mypy-lint-server`, `mypy-lint-builder`, `mypy-lint-haketilo`
Runs mypy static type checker over source files used in the relevant part of the
project.

### `make clean`
Removes generated files.

## Contributing, asking for help, giving feedback, reporting bugs

Development occurs on
[our issue tracker](https://hydrillabugs.koszko.org/projects/haketilo). You can
also write directly to [Wojtek](mailto:koszko@koszko.org) if you prefer.

## Copying

Hydrilla is Copyright (C) 2021-2022 Wojtek Kosior and contributors, entirely available under the GNU Affero General Public License version 3 or later. Some files might also give you broader permissions, see comments inside them.

*I, Wojtek Kosior, thereby promise not to sue for violation of this project's license. Although I request that you do not make use of this code in a proprietary program, I am not going to enforce this in court.*