From c6eadc60453fe476216bd4252be0f50f76f667d9 Mon Sep 17 00:00:00 2001 From: Mark Joshwel Date: Tue, 18 Jun 2024 18:59:55 +0800 Subject: [PATCH] docs: add mkdocs site :O --- docs/CC0 | 121 +++++++ docs/changelog.md | 325 +++++++++++++++++ docs/contributing.md | 80 +++++ docs/developing.md | 319 +++++++++++++++++ docs/fonts/Geist-Regular.ttf | Bin 0 -> 103636 bytes docs/fonts/GeistMono-Regular.ttf | Bin 0 -> 112160 bytes docs/fonts/GeistMonoVF.woff2 | Bin 0 -> 58048 bytes docs/fonts/GeistVF.woff2 | Bin 0 -> 56800 bytes docs/fonts/LICENSE.txt | 92 +++++ docs/index.md | 42 +++ docs/licences.md | 113 ++++++ docs/links.md | 59 ++++ docs/onwheels/bridges.md | 58 +++ docs/onwheels/emulating-termux-location.md | 43 +++ .../onwheels/emulating-termux-notification.md | 46 +++ docs/onwheels/index.md | 329 ++++++++++++++++++ docs/onwheels/telegram-bridge.md | 101 ++++++ docs/onwheels/whatsapp-bridge.md | 210 +++++++++++ docs/stylesheets/extra.css | 212 +++++++++++ docs/stylesheets/pdf.scss | 4 + docs/using.md | 11 + mkdocs.yml | 114 ++++++ src/tools/docs-prebuild.py | 23 ++ 23 files changed, 2302 insertions(+) create mode 100644 docs/CC0 create mode 100644 docs/changelog.md create mode 100644 docs/contributing.md create mode 100644 docs/developing.md create mode 100644 docs/fonts/Geist-Regular.ttf create mode 100644 docs/fonts/GeistMono-Regular.ttf create mode 100644 docs/fonts/GeistMonoVF.woff2 create mode 100644 docs/fonts/GeistVF.woff2 create mode 100644 docs/fonts/LICENSE.txt create mode 100644 docs/index.md create mode 100644 docs/licences.md create mode 100644 docs/links.md create mode 100644 docs/onwheels/bridges.md create mode 100644 docs/onwheels/emulating-termux-location.md create mode 100644 docs/onwheels/emulating-termux-notification.md create mode 100644 docs/onwheels/index.md create mode 100644 docs/onwheels/telegram-bridge.md create mode 100644 docs/onwheels/whatsapp-bridge.md create mode 100644 docs/stylesheets/extra.css create mode 100644 docs/stylesheets/pdf.scss create mode 100644 docs/using.md create mode 100644 mkdocs.yml create mode 100644 src/tools/docs-prebuild.py diff --git a/docs/CC0 b/docs/CC0 new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/docs/CC0 @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/docs/changelog.md b/docs/changelog.md new file mode 100644 index 0000000..271c14d --- /dev/null +++ b/docs/changelog.md @@ -0,0 +1,325 @@ +# changelog + +## surplus v2024.0.0 + +(unreleased) + +!!! information + this is a tentative release. surplus is currently versioned as `2024.0.0-beta`, as its + behaviour is not stabilized + +!!! warning + this is an api-breaking release. see 'the great api break'. + command-line usage of surplus has not changed + +### what's new + +- added flag `--show-user-agent`, printing the fingerprinted user agent string and exiting + +### what's changed + +- `default_geocoder()` and `default_reverser()` have been deprecated since v2.1.0 and are now + removed. use the `SurplusDefaultGeocoding` class instead +- `SurplusException` is now `SurplusError` + +### the great api break + +TODO + +### thanks! + +- [vlshields](https://github.com/vlshields/) for their support with a drink! + +full changelog: + +## surplus on wheels v2 + +(released on the 1st of July 2024 on tag `v2.2024.25+spow`) + +### changes + +- you can now customize command invocations with `SURPLUS_CMD` and `LOCATION_CMD` environment variables +- surplus on wheels will purge logs when setting the `SPOW_PRIVATE` environment flag + +### thanks! + +- [vlshields](https://github.com/vlshields/) for their support with a drink! + +--- + +## surplus on wheels: WhatsApp Bridge v2.2024.25 + +(released on the 17th of June 2024 on tag `v2.2024.25+spow-whatsapp-bridge`) + +!!! note + from henceforth, the WhatsApp Bridge is now versioned with a modified calendar versioning scheme + of `MAJOR.YEAR.ISOWEEK`, where the `MAJOR` version segment will be bumped with codebase changes, + whereas the `YEAR` and `ISOWEEK` segments will represent the time of which the release was + built at + +### changes + +- updated dependencies to latest versions +- added `pair-phone` and `reconnect` subcommands +- TODO added optional helper script to auto-update to newer versions via a user-made daily cron job + +### thanks! + +- [vlshields](https://github.com/vlshields/) for their support with a drink! + +--- + +## surplus on wheels: Telegram Bridge v2.2024.25 + +(released on the 17th of June 2024 on tag `v2.2024.25+spow-telegram-bridge`) + +!!! note + from henceforth, the Telegram Bridge will automatically release a new version once a week if + there are updates to its dependencies + + as such, the bridge is now versioned with a modified calendar versioning scheme of + `MAJOR.YEAR.ISOWEEK`, where the `MAJOR` version segment will be bumped with codebase changes, + whereas the `YEAR` and `ISOWEEK` segments will represent the time of which the release was + built at + +### changes + +- updated dependencies to latest versions +- added `logout` subcommand +- TODO added optional helper script to auto-update to newer versions via a user-made daily cron job + +### thanks! + +- [vlshields](https://github.com/vlshields/) for their support with a drink! + +--- + +## surplus on wheels v1 + +initial release on the 9th of November 2023 + +--- + +## surplus on wheels: WhatsApp Bridge v1 + +initial release on the 7th of November 2023 + +--- + +## surplus on wheels: Telegram Bridge v1 + +initial release on the 7th of November 2023 + +--- + +## surplus v2.2.0 + +(released on the 14th of October 2023) + +!!! warning + constants are changed in this update! + +fixed a bug installing surplus on Python 3.12 and italian sharetext fixes + +### what's new + +- special key arrangements for malaysia +- support for termux-location json input + +### what's fixed + +- fixed typing-extensions as an unwritten dependency + this also fixes a bug in not being able to run surplus in Python 3.12 +- fixed italian key arrangements [#34](https://github.com/markjoshwel/surplus/pull/34) + +### what's changed + +- **`SHAREABLE*` constants are now dictionaries, see api docs for more information** + + + +--- + +## surplus v2.1.1 + +(released on the 19th of September 2023) + +fix roads not coming first in Italian addresses (#31) + +- documentation enhancements + - remove self in `SurplusReverserProtocol` conforming signature + - fix mismatching carets and add info on `split_iso3166_2` +- alternative line 3 arrangement for IT/Italy in [#31](https://github.com/markjoshwel/surplus/pull/31) + + + +--- + +## surplus v2.1.0 + +(released on the 6th of September 2023) + +!!! warning + there are backwards-compatible api changes in this release. + +type-to-type location representation conversions and quality of life changes/fixes + +- **`default_geocoder()` and `default_reverser()` functions have been deprecated in favour of the + new [`SurplusDefaultGeocoding` class](https://github.com/markjoshwel/surplus/tree/main#class-surplusdefaultgeocoding)** +- add reading from stdin when query is "-" in [#23](https://github.com/markjoshwel/surplus/pull/23) +- type to type conversion in [#24](https://github.com/markjoshwel/surplus/pull/24) +- fix local codes not being recognised if split with comma in [#29](https://github.com/markjoshwel/surplus/pull/29) +- more verbose -v/--version information in [#21](https://github.com/markjoshwel/surplus/pull/21) + + + +--- + +## surplus v2.0.1 + +(released on the 5th of September 2023) + +- expose surplus.Result in `__init__.py` by in [#28](https://github.com/markjoshwel/surplus/pull/28) + + + +--- + +## surplus v2.0.0 + +(released on the 3rd of September 2023) + +!!! warning + this is an api-breaking release. see 'the great api break'. + command-line usage of surplus has not changed + +!!! information + python 3.11 or later is required due to a bug in earlier versions + [(python/cpython#88089)](https://github.com/python/cpython/issues/88089) + +complete rewrite and string query support + +### changes + +- surplus has been fully rewritten in [#19](https://github.com/markjoshwel/surplus/pull/19) +- support for string queries + ```text + $ s+ Wisma Atria + surplus version 2.0.0 + Wisma Atria + 435 Orchard Road + 238877 + Central, Singapore + ``` +- mypy will now recognise surplus as a typed module +- **python 3.11 is now the minimum version** + +### the great api break + +#### what is new + +- nominatim keys are now stored in tuple constants +- surplus exception classes are now a thing +- surplus functions now operate using a unified `Behaviour` object +- surplus functions now return a `Result` object for safer value retrieval instead of the previous + `(bool, value)` tuple +- dedicated NamedTuple classes for each query type + +#### what has been removed + +- `surplus.handle_query()` + + instead, use `.to_lat_long_coord()` on your surplus 2.x query object + +#### what has remained + +- `surplus.surplus()`, the function +- `surplus.parse_query()`, the function + +#### what has changed + +- `surplus.surplus()` + 1. `reverser` and `debug` arguments are now under the unified `surplus.Behaviour` object + 2. function now returns a `surplus.Result[str]` for safer error handling + +- `surplus.parse_query()` + 1. `query` and `debug` arguments are now under the unified `surplus.Behaviour` object + 2. function now returns a `surplus.Result[surplus.Query]` for safer error handling + +- `surplus.Latlong` + attributes `lat` and `long` have been renamed to `latitude` and `longitude` respectively + +- `surplus.Localcode` + renamed to `surplus.LocalCodeQuery` + +- `Localcode.full_length()` + renamed to `LocalCodeQuery.to_full_plus_code()`, and returns a `surplus.Result[str]` for safer + error handling + +full changelog: + +## surplus v1.1.3 + +(released on the 21st of June 2023) + +general output fixes and quality of life updates + +- ci(qc) workflow tweaks by [markjoshwel](https://github.com/markjoshwel) in [#13](https://github.com/markjoshwel/surplus/pull/13) +- cc: remove woodlands test + brackets by [markjoshwel](https://github.com/markjoshwel) in [#14](https://github.com/markjoshwel/surplus/pull/14) +- s+: display county before state by [markjoshwel](https://github.com/markjoshwel) in [#15](https://github.com/markjoshwel/surplus/pull/15) + + + +--- + +## surplus v1.1.2 + +(released on the 18th of June 2023) + +general output fixes and quality of life updates + +- do not repeat details by [markjoshwel](https://github.com/markjoshwel) in #9 +- add -v/--version flag by [markjoshwel](https://github.com/markjoshwel) in #11 + + + +--- + +## surplus v1.1.1 + +(released on the 16th of June 2023) + +### changes + +fixes and output tweaks + +- fix reverser returning a None location by [shamsu07](https://github.com/shamsu07) in #5 + +### thanks! + +- [shamsu07](https://github.com/shamsu07) made their first contribution! + + + +--- + +## surplus v1.1.0 + +(released on the 3rd of June 2023) + +short code and latitude longitude coordinate pair support! + +- code: s+ alternative shorthand script +- code: handle none/list locations +- code: query by lat long support +- code: support shortcodes with localities +- code: implement more address detail tags from nominatim +- meta: slsa 3 compliance + + + +--- + +## surplus v1.0.0 + +initial release on the 2nd of June 2023 diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 0000000..0e375b6 --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1,80 @@ +# the contributor's handbook + +expected details on development workflows? see [the developer's handbook](developing.md) + +## which forge do i use? + +as at the time of writing this documentation, i am actively using both + and + +use whatever is more comfortable to you. do you not like microsoft and/or have moved away from github? +feel free to use . don't want to make an account for either? did the forge +implode and is down? okay! mail in a git patch at + +## git workflow + +1. fork the repository and branch off from the `future` branch, + or `main` if not available +2. make and commit your changes! +3. pull in any changes from upstream, and resolve any conflicts, if any +4. if needed, **commit your copyright waiver** (_see [waiving copyright](#waiving-copyright)_) +5. submit a pull request (_or mail in a patch_) + +### waiving copyright + +!!! danger "Warning" + this section is a **must** to follow if you have modified **any** unlicenced code: + + - top-level surplus files (`releaser.py`, etc) + - surplus (`src/surplus`) + - surplus Documentation (`docs/`) + - surplus on wheels (`src/surplus-on-wheels`) + - surplus on wheels: Telegram Bridge (`src/spow-telegram-bridge`) + +!!! info + the command to create an empty commit is `git commit --allow-empty` + +when contributing your first changes, please include an empty commit for a copyright +waiver using the following message (replace `Your Name` with your name or username): + +```text +Your Name Copyright Waiver + +I dedicate any and all copyright interest in this software to the +public domain. I make this dedication for the benefit of the public at +large and to the detriment of my heirs and successors. I intend this +dedication to be an overt act of relinquishment in perpetuity of all +present and future rights to this software under copyright law. + +To the best of my knowledge and belief, my contributions are either +originally authored by me or are derived from prior works which I have +verified are also in the public domain and are not subject to claims +of copyright by other parties. + +To the best of my knowledge and belief, no individual, business, +organization, government, or other entity has any copyright interest +in my contributions, and I affirm that I will not make contributions +that are otherwise encumbered. +``` + +(from ) + +for documentation contributors, if you have contributed a +[legally significant](https://www.gnu.org/prep/maintain/maintain.html#Legally-Significant) or have +repeatedly commited multiple small changes, waive your copyright with the CC0 deed +(replace `Your Name` with your name or username): + +```text +Your Name Copyright Waiver + +The person who associated a work with this deed has dedicated the work to +the public domain by waiving all of his or her rights to the work worldwide +under copyright law, including all related and neighboring rights, to the +extent allowed by law. +``` + +(from ) + +## reporting incorrect output + +TODO diff --git a/docs/developing.md b/docs/developing.md new file mode 100644 index 0000000..a954ffd --- /dev/null +++ b/docs/developing.md @@ -0,0 +1,319 @@ +# the developer’s handbook + +!!! abstract + i (mark), heavily use nix to manage my projects, either with + [devbox](https://github.com/jetpack-io/devbox) or flakes + + if you are going to develop for surplus or its' sibling projects (except surplus on wheels, + which only needs `shfmt` and `shellcheck`), i would recommend you install Nix using + [Determinate Systems' Nix Installer](https://github.com/DeterminateSystems/nix-installer): + + ```text + curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install + ``` + + if i, a very very inexperienced Nix and NixOS user to give a rundown on why to use it: + + 1. **environments and builds are reproducible** + + nix is part package manager, operating system (as NixOS), and functional programming + language. because it's functional, having X as an input will always produce Y as an output, + no matter what. even in the event of environmental, social, economic, or structural collapse + + **what does this mean for you?** + when i use `nix develop` and you use `nix develop` to start a development environment, your + version of python will be the same as my version of python. your version of go will be same + as my version of go, etc + + if i can build it, and the locked inputs of the nix flake are still available on the internet, + you can build it too + + 2. **the nix store**, located literally at `/nix/store` + it's where it stores every package you need, separate and isolated from other packages. + lets say you have a tool that needs python (3.8), and another tool that needs python (3.11). + nix store will download and store the binaries for both python installations, instead of + sharing the earliest downloaded python version for both tools + + **what does this mean for you?** + whatever project you're working on that can use nix for development environments and builds + will not dirty anything else on your system. any build dependencies of surplus provided with + `nix develop` will **not** mess up software installed for other projects or even the system. + neat, if you ask me tbh + + **tl;dr**: things will just werk with nix. but if you see all of this and go, "eh. i can manage + what i install.", then power to you! i list down exactly what prerequisite software needs to be + installed for each project anyways, so have fun! (●'◡'●) + +## surplus (and Documentation) + +### environment setup + +!!! note + all prerequisite software are available in a nix flake. if you want a reproducible environment, + run `nix develop --impure` in the repository root + + - for NixOS users, [nix-ld](https://github.com/Mic92/nix-ld) is needed. if you use flakes to + declare your system, follow accordingly. else, use `/etc/nixos/configuration.nix` + + for NixOS-on-WSL users, use [nix-ld-rs](https://github.com/nix-community/nix-ld-rs) + + once you're done installing `nix-ld` or `nix-ld-rs`, + don't forget to run `sudo nixos-rebuild switch` + +prerequisite software: + +- [Python](https://www.python.org/downloads/), 3.11 or newer +- [Hatch](https://hatch.pypa.io/latest/): dependency management and build tool + +to start a development environment: + +```text +hatch shell +``` + +for docs: + +```text +hatch -e docs shell +``` + +### workflow for python code + +TODO + +### workflow for markdown documentation + +run the documentation server with: + +```text +hatch run docs:serve +``` + +i personally don't use a linter for markdown files, if it looks good on my code editor, then +whatever. if you're going to contribute back, i ask for three things: + +- run it through a spell checker or something similar + +- line limit of 100 + +- should be readable as-is on a code editor, **not the markdown preview pane**. + + my stance is, if you can afford a fancy preview of the markdown file, use the nice-ned + documentation website. else, read it as a plaintext file + + (make it look pretty on the doc site and in plaintext) + +--- + +## surplus on wheels + +### environment setup + +!!! note + all prerequisite software are available in a nix flake. if you want a reproducible environment, + run `nix develop` in `src/surplus-on-wheels` + +prerequisite software: + +- [shfmt](https://github.com/patrickvane/shfmt): formatter +- [ShellCheck](https://www.shellcheck.net/): static analyser + +### workflow + +- formatting s+ow: + - run `shfmt s+ow > s+ow.new` + - mv `s+ow.new` into `s+ow` + sometimes when piping shfmt's output immediately into the same file + results in the file being empty :( + +- checking s+ow: + - run `shellcheck s+ow` + if there's no output, that means it passed :) + +- if commiting back into the repository, try it out on your Termux system for a day or two, + just to make sure it runs correctly + +--- + +## surplus on wheels: Telegram Bridge + +### environment setup + +!!! note + all prerequisite software are available in a nix flake. if you want a reproducible environment, + run `nix develop` in `src/spow-telegram-bridge`. it uses + [poetry2nix](https://github.com/nix-community/poetry2nix), so you won't need to run + `poetry shell` afterwards. if you've changed the `pyproject.toml` file, + just exit and re-run `nix develop` + +prerequisite software: + +- [Python](https://www.python.org/downloads/), 3.11 or newer +- [Poetry](https://python-poetry.org/): dependency management and build tool + +to start a development environment: + +```text +poetry shell +``` + +### workflow + +after modifying, + +1. `mypy bridge.py` +2. `ruff format bridge.py` +3. `ruff check bridge.py` +4. [test the binary](#workflow-for-testing-the-binary) + +if the bridge behaves nominally, [bump the version](#versioning-surplus-on-wheels-telegram-bridge) +and commit! + +--- + +## surplus on wheels: WhatsApp Bridge + +### environment setup + +!!! note + all prerequisite software are available in a nix flake. if you want a reproducible environment, + run `nix develop` in `src/spow-whatsapp-bridge` + + the flake will pull in the Android SDK and NDK for building on Termux, and as such can only be + ran on `x86_64-linux` and `x86_64-darwin` + +prerequisite software: + +- [Go](https://go.dev): 1.22 or newer +- [Android NDK](https://developer.android.com/ndk/downloads), if building for Termux + +### workflow for modifying bridge code + +the bridge's code is just modified [mdtest](https://github.com/tulir/whatsmeow/tree/main/mdtest) +code, and as such, whenever in doubt, do a diff between mdtest and the bridge code + +after modifying, + +1. [build a binary](#workflow-for-building-a-binary) +2. [test the binary](#workflow-for-testing-the-binary) +3. and if all goes well, [bump the version](#versioning-surplus-on-wheels-whatsapp-bridge) + and commit! + +### workflow for bumping dependencies + +- check with your editor, plugin, or online if there's newer patch/minor (see + [semantic versioning](https://semver.org/)) versions to update to + +- change the `go.mod` accordingly + +after bumping, + +1. [build a binary](#workflow-for-building-a-binary) +2. [test the binary](#workflow-for-testing-the-binary) +3. and if all goes well, [bump the version](#versioning-surplus-on-wheels-whatsapp-bridge) + and commit! + +### workflow for building a binary + +ensure you already have c compiler on the system (if you're using `nix develop` then yes you do), then run: + +```text +CGO_ENABLED=1 go build +``` + +nix users can alternatively run: + +```text +nix build .#native +``` + +instructions to build a Termux build are located at the +[bridges' documentation page](onwheels/whatsapp-bridge.md#anywhere-else), however nix users can run +the following instead for a reproducible, deterministic and hermetic build command: + +```text +nix build .#termux +``` +the resulting build will be in `result/spow-whatsapp-bridge` + +### workflow for testing the binary + +- test it out, making sure that you write dummy test text to `~/.cache/s+ow/message` before running + the binary + + 1. run `s+ow-whatsapp-bridge login` first + + 2. run `s+ow-whatsapp-bridge list` if you don't already have a chat ID + to send the test message to + + 3. run `s+ow-whatsapp-bridge` type or copy and paste in a `wa:`-prefixed chat ID + after it logs in, and verify it sends + +if the bridge behaves nominally, [bump the version](#versioning-surplus-on-wheels-whatsapp-bridge) +and commit! + +## workflow for versioning and tagging releases + +### versioning surplus + +format: `YEAR.MAJOR.MINOR[-PRERELEASE]` ([semantic versioning](https://semver.org/)) +example: `2024.0.0`, `2024.0.0-beta` +change: update the `__version__` variable in `src/surplus/surplus.py` + +### versioning surplus on wheels + +i've tried to make surplus on wheels as reliable as it could be given a POSIX compliant shell and +commands you'd find available on virtually every linux system, Termux included + +as such, it doesn't really follow a versioning scheme as it doesn't need to. also there's no +automatic updater for it, which would be overkill anyway + +### versioning surplus on wheels: Telegram Bridge + +format: `REVISION.YYYY.WW[+BUILD]` ([calendar versioning](https://calver.org/)) +example: `2.2024.24`, `2.2024.24+1` +change: `version` key in `src/spow-telegram-bridge/pyproject.toml` + +`REVISION` here meaning any general revision/change + +the Telegram Bridge relies on [Telethon](https://github.com/LonamiWebs/Telethon/), which also +follows [semantic versioning](https://semver.org/). so, as long as major isn't bumped, or +as long as Telegram doesn't become Discord, the MTProto APIs to talk to Telegram should be +stable. + +however because Telethon also relies on a bunch of networking libraries, it made some sense to +still do weekly builds to bump dependencies, getting pipx to download the newest compatible +dependencies as compared to dubiously running some sort of script to `pipx inject` dependencies + +under normal circumstances, a non-working version of the bridge would and **should not have a +version bump**. but for any reason if an already tagged bridge is faulty and/or erroneous in +normal/expected usage, add a revision number to the end after a period (see example above) + +### versioning surplus on wheels: WhatsApp Bridge + +format: `REVISION.YYYY.WW[+BUILD]` ([calendar versioning](https://calver.org/)) +example: `2.2024.25`, `2.2024.25+1` +change: `version` attribute of `bridge` attribute set in `src/spow-whatsapp-bridge/flake.nix` + +`REVISION` here meaning any general revision/change + +the WhatsApp Bridge relies on [whatsmeow](https://github.com/tulir/whatsmeow), a rolling release +library due to the volatile, undocumented nature of WhatsApp's multidevice API and also directly +and indirectly relies on a bunch of networking libraries: + +``` title="src/spow-whatsapp-bridge/go.mod" +--8<-- "src/spow-whatsapp-bridge/go.mod" +``` + +as such, it uses a calendar versioning scheme and is built weekly + +under normal circumstances, a non-working version of the bridge would and **should not have a +version bump**. but for any reason if an already tagged bridge is faulty and/or erroneous in +normal/expected usage, add a revision number to the end after a period (see example above) + +--- + +## i've made my changes. what now? + +if you're contributing back to surplus and/or the sibling projects, firstly, thanks! +see [the contributor's handbook](contributing.md) for what's next diff --git a/docs/fonts/Geist-Regular.ttf b/docs/fonts/Geist-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a10d58ae29a8c9ea2320d5ae10b98b3ef96ef21e GIT binary patch literal 103636 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/GeistMono-Regular.ttf b/docs/fonts/GeistMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a909c5d618162902debdbc09463d905c7c54cd61 GIT binary patch literal 112160 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⁢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 V9eKs^pf=n(RUt+Ws2qy&{{Xomdoch2 literal 0 HcmV?d00001 diff --git a/docs/fonts/GeistMonoVF.woff2 b/docs/fonts/GeistMonoVF.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fb2f024aca0a7bfd14a88b7fa74129f107a7d7ee GIT binary patch literal 58048 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 Oe&? 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 W3iUXCl68}}UHOUMf4J;#6`lYgehe7^ literal 0 HcmV?d00001 diff --git a/docs/fonts/LICENSE.txt b/docs/fonts/LICENSE.txt new file mode 100644 index 0000000..8d003fe --- /dev/null +++ b/docs/fonts/LICENSE.txt @@ -0,0 +1,92 @@ +Copyright (c) 2023 Vercel, in collaboration with basement.studio + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..4a63b95 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,42 @@ +# surplus (s+) + +surplus (s+) is a Python script to convert [Google Maps Plus Codes](https://maps.google.com/pluscodes/) +to iOS Shortcuts-like shareable text + +!!! tip + termux users can consider [surplus on wheels](onwheels/index.md), a sibling project that allows + you to run surplus regularly throughout the day and send it to someone on a messaging platform + +!!! important + python 3.11 or later is required due to a bug in earlier versions + [(python/cpython#88089)](https://github.com/python/cpython/issues/88089) + +install surplus with pip, or [pipx](https://pipx.pypa.io/) (recommended): + +```text +pipx install surplus +``` + +then, use the `surplus` command, or its `s+` shorthand: + +```text +$ s+ 7RGX+GJ Singapore +surplus version 2024.0.0 +Singapore Conference Hall +7 Shenton Way +068809 +Central, Singapore +``` + +the types of queries you can pass in are: + +- full-length Plus Codes + `6PH58QMF+FX` +- shortened Plus Codes / 'local codes' + `8QMF+FX Singapore` +- latitude and longitude coordinate pairs + `1.3336875, 103.7749375` +- string queries + `Wisma Atria` + +or, alternatively pass in `-` to read from stdin diff --git a/docs/licences.md b/docs/licences.md new file mode 100644 index 0000000..8820310 --- /dev/null +++ b/docs/licences.md @@ -0,0 +1,113 @@ +# licences + +## [surplus](index.md) + +**The Unlicence** + +surplus is free and unencumbered software released into the public domain: + +``` title="src/surplus/UNLICENCE" +--8<-- "src/surplus/UNLICENCE" +``` + +however, the dependencies surplus relies on are licenced under different, but still permissive +and open-source licences: + +- [**geopy**](https://pypi.org/project/geopy/) — + Python Geocoding Toolbox + MIT Licence + + - [**geographiclib**](https://pypi.org/project/geographiclib/) — + The geodesic routines from GeographicLib + MIT Licence + +- [**pluscodes**](https://pypi.org/project/pluscodes/) — + Compute Plus Codes (Open Location Codes) + Apache 2.0 + +--- + +## [surplus on wheels](onwheels/index.md) + +**The Unlicence** + +surplus on wheels is free and unencumbered software released into the public domain: + +``` title="src/surplus-on-wheels/UNLICENCE" +--8<-- "src/surplus-on-wheels/UNLICENCE" +``` + +--- + +## [surplus on wheels: WhatsApp Bridge](onwheels/whatsapp-bridge.md) + +**Mozilla Public Licence 2.0** + +the s+ow WhatsApp Bridge is based off of mdtest code from the +[whatsmeow](https://github.com/tulir/whatsmeow) project, which is licenced under the Mozilla +Public Licence 2.0: + +``` title="src/spow-whatsapp-bridge/LICENCE" +--8<-- "src/spow-whatsapp-bridge/LICENCE" +``` + +the direct dependencies s+ow-whatsapp-bridge relies on are licenced under different, but still +permissive and open-source licences: + +- [**whatsmeow**](https://github.com/tulir/whatsmeow) — + Go library for the WhatsApp web multidevice API + Mozilla Public Licence 2.0 + +--- + +## [surplus on wheels: Telegram Bridge](onwheels/telegram-bridge.md) + +**The Unlicence** + +the s+ow Telegram Bridge is free and unencumbered software released into the public domain: + +``` title="src/spow-telegram-bridge/UNLICENCE" +--8<-- "src/spow-telegram-bridge/UNLICENCE" +``` + +however, the direct dependencies surplus relies on are licenced under different, but still +permissive and open-source licences: + +- [**Telethon**](https://pypi.org/project/Telethon/) — + Pure Python 3 MTProto API Telegram client library, for bots too! + MIT Licence + +--- + +## [surplus documentation](index.md) + +**CC0 1.0 Universal** + +the textual contents of surplus documentation by [Mark Joshwel](https://joshwel.co) is marked +with [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/). +to view a copy of this licence, visit + +``` title="docs/CC0" +--8<-- "docs/CC0" +``` + +the fonts the documentation website relies on are licenced under different, but still +permissive and open-source licences: + +- [**Geist and Geist Mono**](https://github.com/vercel/geist-font) + SIL Open Font Licence 1.1 + + ``` title="docs/fonts/LICENSE.txt" + --8<-- "docs/fonts/LICENSE.txt" + ``` + +the direct software dependencies the documentation are also licenced under different, but still +permissive and open-source licences: + +- [**mkdocs-material**](https://squidfunk.github.io/mkdocs-material/) — + Documentation that simply works + MIT Licence + +- [**mkdocs**](https://www.mkdocs.org/) — + Project documentation with Markdown + BSD-2-Clause Licence diff --git a/docs/links.md b/docs/links.md new file mode 100644 index 0000000..a0940fa --- /dev/null +++ b/docs/links.md @@ -0,0 +1,59 @@ +# backup links + +for when first-party links like and are down: + +## surplus + +``` title="Primary Link" +https://forge.joshwel.co/mark/surplus.git +``` + +``` title="Alternative Link" +https://github.com/markjoshwel/surplus.git +``` + +## surplus on wheels + +- shell script + + ``` title="Primary Link" + https://surplus.joshwel.co/spow.sh + ``` + + ``` title="Alternative Link" + https://raw.githubusercontent.com/markjoshwel/surplus/main/src/surplus-on-wheels/s+ow + ``` + +- termux installation script + + ``` title="Primary Link" + https://surplus.joshwel.co/termux.sh + ``` + + ``` title="Alternative Link" + https://raw.githubusercontent.com/markjoshwel/surplus/main/src/surplus-on-wheels/install.sh + ``` + +## surplus on wheels: Telegram Bridge + +- install/update script: + + ``` title="Primary Link" + https://surplus.joshwel.co/telegram.sh + ``` + + ``` title="Alternative Link" + https://raw.githubusercontent.com/markjoshwel/surplus/main/src/spow-telegram-bridge/install.sh + ``` + +## surplus on wheels: WhatsApp Bridge + +- install/update script: + + ``` title="Primary Link" + https://surplus.joshwel.co/whatsapp.sh + ``` + + ``` title="Alternative Link" + https://raw.githubusercontent.com/markjoshwel/surplus/main/src/spow-whatsapp-bridge/install.sh + ``` diff --git a/docs/onwheels/bridges.md b/docs/onwheels/bridges.md new file mode 100644 index 0000000..9624ab9 --- /dev/null +++ b/docs/onwheels/bridges.md @@ -0,0 +1,58 @@ +# surplus on wheel bridges + +## official bridges + +there are two currently “official” bridges: + +- [surplus on wheels: WhatsApp Bridge](whatsapp-bridge.md) +- [surplus on wheels: Telegram Bridge](telegram-bridge.md) + +## bring your own bridge + +### an informal specification + +s+ow bridges are relatively simple as they are: + +1. an executable or script + +2. that reads in `SPOW_TARGETS` given by surplus to the bridge, using the standard input (stdin) + stream + + 1. bridges do not need to account for the possibility of multiple lines sent to stdin + + 2. bridges should account for the possibility of comma and space (`", "` instead of just `","`) + delimited targets, and strip each target of preceding and trailing whitespace + + 3. bridges should recognise a platform based on a prefix + (e.g. `wa:` for WhatsApp, `tg:` for Telegram, etc.) + +3. reads `SPOW_MESSAGE` (`~/.cache/spow/message`) for the message content + +notes: + +1. stderr and stdout are redirected to s+ow’s error and output logs respectively unless the + `-p / --private` flag is passed to surplus + +2. any errors encountered by the bridge should always result in a non-zero return. error logs will + show the exact error code, so feel free to use other numbers than 1 + +3. persistent data such as credentials and session data storage are to be handled by the + bridge itself. consider storing them in `$HOME/.local/share//`, or wherever + appropriate + +### example + +if i were to recommend an example on a basic bridge implementation, it would be the +[Telegram Bridge](telegram-bridge.md): + +```python title="src/spow-telegram-bridge/bridge.py" +--8<-- "src/spow-telegram-bridge/bridge.py" +``` + +!!! note + the feature of deleting the last sent message (`--delete-last`) is a non-standard feature for + bridges, and was simply a use case i personally needed. if you're going to implement a bridge, + all you really need is the ability to `login`, `logout`, and [send a message](#an-informal-specification) + + you can add other features as per the needs of your platform, like how the WhatsApp Bridge has + a `pair-phone` subcommand, or per your use case needs, like in the Telegram Bridge's `--delete-last`. diff --git a/docs/onwheels/emulating-termux-location.md b/docs/onwheels/emulating-termux-location.md new file mode 100644 index 0000000..89de29b --- /dev/null +++ b/docs/onwheels/emulating-termux-location.md @@ -0,0 +1,43 @@ +# emulating `termux-location` + +to bodge surplus on wheels (s+ow) on non-Termux systems + +!!! note + dummy admonition for colour matching + +!!! warning + dummy admonition for colour matching + +`termux-location`, part of [Termux:API](https://wiki.termux.com/wiki/Termux:API), gets the device's +location via android apis and returns a json response through stdout: + +```text +{ + "latitude": 1.3277513, + "longitude": 103.678317, + "altitude": 51.6298828125, + "accuracy": 48.46337890625, + "vertical_accuracy": 38.4659423828125, + "bearing": 0.0, + "speed": 0.0, + "elapsedMs": 28, + "provider": "gps" +} +``` + +see for more information + +## implementing for surplus on wheels (s+ow) + +s+ow will call the command a total of six times, being three pairs of parallel +`$LOCATION_CMD -p "network"` and `$LOCATION_CMD -p "gps"` invocations, before deciding after +exhausting all six runs on which output to choose, if any command runs were successful + +even if somewhere in the termux-location implementation fails, it always (begrudgingly) returns +zero. s+ow will treat the invocation of the command as successful if there is **any output** to +the standard output (stdout) stream + +## implementing for surplus (s+) + +s+, when passed `--t / --using-termux-location`, will consume stdin, parse it as json and then +attempt to retrieve the `latitude` and `longitude` keys as floating point numbers diff --git a/docs/onwheels/emulating-termux-notification.md b/docs/onwheels/emulating-termux-notification.md new file mode 100644 index 0000000..d8b0825 --- /dev/null +++ b/docs/onwheels/emulating-termux-notification.md @@ -0,0 +1,46 @@ +# emulating `termux-notification` + +to bodge surplus on wheels (s+ow) on non-Termux systems + +`termux-notification`, part of [Termux:API](https://wiki.termux.com/wiki/Termux:API), sends out an +android notification + +without `termux-notification`, s+ow will still run as it doesn't use `set -e` and very carefully +handles all command invocations, with `termux-notification` being the graceful exception\ + +however, if you would like to emulate it, make an executable globally reachable with the same name + +s+ow uses the command as such: + +```shell +termux-notification \ + --priority "default" \ + --title "surplus on wheels: No bridges" \ + --content "No '$SPOW_BRIDGES' file; message is not sent." +``` + +```shell +termux-notification \ + --priority "min" \ + --ongoing \ + --id "s+ow" \ + --title "surplus on wheels" \ + --content "s+ow has started running." +``` + +```shell +termux-notification \ + --priority "min" \ + --id "s+ow" \ + --title "surplus on wheels" \ + --content ... +``` + +```shell +termux-notification \ + --priority "default" \ + --title "surplus on wheels has errored" \ + --content ... +``` + +see for more information diff --git a/docs/onwheels/index.md b/docs/onwheels/index.md new file mode 100644 index 0000000..c87ede4 --- /dev/null +++ b/docs/onwheels/index.md @@ -0,0 +1,329 @@ +# surplus on wheels (s+ow) + +surplus on wheels is a pure shell script to get your location using +[termux-location](https://wiki.termux.com/wiki/Termux-location), process it through surplus, and +send it to messaging service or wherever using “bridges” + +surplus was made to emulate sending your location through the iOS Shortcuts app, and surplus on +wheels complements it by running surplus automatically using a cron job. +(but using it manually also works!) + +## installing + +!!! important + s+ow is a Termux-first script, and will not work anywhere else unless you have + a utility that emulates [termux-location](https://wiki.termux.com/wiki/termux-location) + on `$PATH` alongside bridges that supports your platform + +there are two notable ways to install s+ow: + +1. [as a standalone script](#as-a-standalone-script) +2. or, [as a cron job](#as-a-cron-job) + +there is also an [installation script](#using-installation-scripts) for quickly getting +started from a _fresh_ termux installation + +### as a standalone script + +1. firstly install python and termux-api if you haven't already: + + ```text + pkg install python termux-api + ``` + + also install the accompanying Termux:API app from [F-Froid](https://f-droid.org/en/packages/com.termux.api/) + +2. install pipx if you haven't already: + + ```text + pip install pipx + ``` + +3. install surplus: + + ```text + pipx install surplus + ``` + +4. install surplus on wheels: + + ```text + mkdir -p ~/.local/bin/ + wget -O ~/.local/bin/s+ow https://surplus.joshwel.co/spow.sh + chmod +x ~/.local/bin/s+ow + ``` + + !!! note + if `wget` throws a 404, see [backup links](../links.md) + + if `~/.local/bin` is not in your `$PATH`, add the following to your shell's rc file: + + ```shell + export PATH="$HOME/.local/bin:$PATH" + ``` + +et voilà! s+ow is now setup. to actually send the message to a messaging platform, +[install an appropriate bridge](bridges.md) + +### as a cron job + +!!! important + these instructions rely on following the [previous instructions](#as-a-standalone-script) + +1. install necessary packages to run cron jobs: + + ```text + pkg install cronie termux-services + ``` + +2. restart termux and start the cron service: + + ```text + sv-enable cron + ``` + +3. set up the cron job: + + run the following command: + + ```text + crontab -e + ``` + + and add the following text: + + ```text + 59 * * * * bash -l -c "(SPOW_TARGETS="" SPOW_CRON=y s+ow)" + ``` + + !!! important + minimally fill in the `SPOW_TARGETS` variable before running s+ow. + [(see usage for more info)](#usage) + + this will run s+ow every hour, a minute before the hour + + modify the variables as per your needs. + see [usage](#usage) for more information + + et voilà! s+ow will now send a message every hour. feel free to experiment with the cron + job to your liking. see [crontab.guru](https://crontab.guru/) if you’re new to cron jobs + +if you haven’t already, [install an appropriate bridge](bridges.md) to actually send a +message to a messaging platform + +### using installation scripts + +!!! warning + these scripts assume you're starting from a fresh base installation of Termux. + if you have already cron jobs, then manually carry out the instructions in + '[as a cron job](#as-a-cron-job)' + +!!! important + if not installed already, install + [Termux:API from F-Droid](https://f-droid.org/en/packages/com.termux.api/), **not the Play Store** + +1. setup s+ow: + + ```text + wget -O- https://surplus.joshwel.co/termux.sh | sh + ``` + + !!! note + if `wget` throws a 404, see [backup links](../links.md) + +2. restart termux! + +3. and finally, [set up a cron job](#as-a-cron-job) from step 3 onwards ('set up the cron job') + +## usage + +### environment variables + +s+ow's behaviour can be customised environment variables, with `SURPLUS_CMD` being the only +required variable: + +1. `SPOW_TARGETS` + a single line of comma-delimited chat IDs with bridge prefixes + + ```text + wa:000000000000000000@g.us,tg:-0000000000000000000,... + ``` + + in the example above, the WhatsApp chat ID is `wa:`-prefixed as recognised by the + [spow-whatsapp-bridge](whatsapp-bridge.md), and the + Telegram chat ID is `tg:`-prefixed as recognised by the + [spow-telegram-bridge](telegram-bridge.md) + +2. `SPOW_CRON` (optional) + set as non-empty to declare that s+ow is being run as a cron job + + if running as a cron job, start s+ow one minute earlier than intended to account for the time + it takes to run `termux-location` and `surplus`. s+ow assumes this and delays itself + appropriately + + setting it to `n` will also be treated as if it were empty + +3. `SPOW_PRIVATE` (optional) + set as non-empty to discard all logs when s+ow is done: + + - `$HOME/.cache/s+ow/out.log` will be set to `/dev/null` + - `$HOME/.cache/s+ow/err.log` will be set to `/dev/null` + - `$HOME/.cache/s+ow/location.net.json` will be cleared after use locating the device + - `$HOME/.cache/s+ow/location.gps.json` will be cleared after use locating the device + - `$HOME/.cache/s+ow/location.json` will be cleared after use locating the device + - `$HOME/.cache/s+ow/surplus.out.log` will be cleared after use generating the message + - `$HOME/.cache/s+ow/surplus.err.log` will be set to `/dev/null` + - `$HOME/.cache/s+ow/message` will be cleared after all bridges has sent the message + + !!! warning + the only file not cleared is s+ow's last successful message file, `$HOME/.cache/s+ow/last`, + as s+ow uses this as the first fallback message if it couldn't locate the device in time. + if you're fine with using the `LOCATION_FALLBACK` string, feel free to modify your + cron job to remove this file after running s+ow + + setting it to `n` will also be treated as if it were empty + +4. `SURPLUS_CMD` (optional) + the custom invocation used when calling surplus, modify this if you want to add certain flags + + this defaults to `surplus -td` + + !!! warning + when overriding, ensure you also have `-td` (`--using-termux-location` and `--debug`) in + your custom invocation! + +5. `LOCATION_CMD` (optional) + the custom invocation used when calling `termux-location`, modify this if you want to bodge + together surplus on wheels on non-termux systems. + see ([emulating `termux-location`](emulating-termux-location.md)) for more information + + this defaults to `termux-location` + +6. `LOCATION_PRIORITISE_NETWORK` (optional) + set as non-empty to declare that s+ow can just use network location instead of GPS + if GPS is taking too long. + you should only turn this on if punctuality means that much to you, or you’re in a + country with cell towers close by or everywhere, like Singapore + + the JIDs can be obtained by sending a message to the user/group, while running + `s+ow mdtest`, and examining the output for your message. JIDs are email address-like + strings + + setting it to `n` will also be treated as if it were empty + +7. `LOCATION_TIMEOUT` (optional) + set as a number to override the default first location timeout of `50` + +8. `LOCATION_FALLBACK` (optional) + a string that can be formatted with three numbers using `%d`: + + 1. s+ow's status + 2. number of location attempts before giving up + 3. type of message sent + + see [details on notification numbers](#details-on-notification-numbers) for the meanings of + each number. 'a', 'b' and 'c' map to `A`, `B` and `C` + + defaults to `%d%d%d?` + +### faking locations + +> sometimes you gotta do what you gotta do + +you can fake your s+ow messages by either: + +1. setting a dummy `last` file in s+ow cache + + `$HOME/.cache/s+ow/last` is used as the fallback response when a part of s+ow (either + `termux-location` or `surplus` errors out). you can set this file to whatever you want + and just turn off location on your device + +2. setting a `fake` file in s+ow cache + + !!! warning + s+ow uses the `read` command to read the file. as such, it is possible for s+ow to + prematurely stop reading the file if the file does not contain a trailing newline. + + you can also write text to `$HOME/.cache/s+ow/fake` to fake upcoming messages. the file + is delimited by empty lines. as such, arrange the file like so: + + ```text + The Clementi Mall + 3155 Commonwealth Avenue West + Westpeak Terrace + 129588 + Southwest, Singapore + + Westgate + 3 Gateway Drive + Jurong East + 608532 + Southwest, Singapore + + ... + + ``` + + on every run of s+ow, the first group of lines will be consumed, and the file will be + updated with the remaining lines. if the file is empty, it will be deleted + +### details on notification numbers + +after each run, or if s+ow had to use a location fallback string, s+ow notifies you: + +!!! abstract "surplus on wheels" + Run has finished. + + Singapore Conference Hall + 7 Shenton Way + 068809 + Central, Singapore + + (A, B, C, D) + [lc:W sp:X sm:Y - Z] + +!!! abstract "surplus on wheels has errored" + (A, B, C, D) + [lc:W sp:X sm:Y - Z] + +the top line denotes general statuses: + +- `A`: s+ow's status + - `0` is nominal + - `1` is a termux-location error + - `2` is a surplus error + - `3` is a bridge/message send error +- `B`: number of location attempts before giving up +- `C`: type of message sent + - `0` for freshly made sharetext + - `1` for recycling a previous successful location sharetext (`last` file) + - `2` for using fallback template +- `D`: number of bridge failures +- `E`: each bridge's return code + +the bottom line details on how long s+ow spent on each stage: + +- `W`: time to locate +- `X`: time to run surplus +- `Y`: time to send message(s) +- `Z`: total run time + +## help! a bridge isn't working! + +cool. do the following: + +1. log out and log back in and try again + +2. if that didn't fix it, update/reinstall the bridge and try again + +3. run the bridge's executable directly to see if there's any connection issues + look at your bridge's installation instructions to find out where it's located at. + or, use the `which` command + +4. if it connected successfully, or you see no errors, try typing in one of the targets you've set + in `SPOW_TARGETS` for the bridge, and then press the enter/return key + +!!! failure + on the off chance you reinstalled the bridge, and it still failed either step 3 or 4, the bridge + itself is faulty. file a bug report/issue with the bridge's project page or maintainer and tell + them where it failed (was it connecting to the messaging service? or failure to send a message?) diff --git a/docs/onwheels/telegram-bridge.md b/docs/onwheels/telegram-bridge.md new file mode 100644 index 0000000..44ba868 --- /dev/null +++ b/docs/onwheels/telegram-bridge.md @@ -0,0 +1,101 @@ +# surplus on wheels: Telegram Bridge + +Telegram Bridge for surplus on wheels (s+ow) + +s+ow bridges are defined in a file named `$HOME/.s+ow-bridges`. each command in the file is run, +and comma-seperated target chat IDs are passed using stdin. + +this bridge recognises targets prefixed with `tg:`. + +```text +tg:,... +``` + +## installation + +!!! important + the following instructions implies that [surplus](../index.md) and [surplus on wheels](bridges.md) + have already been installed + +1. install prerequisite software if not installed: + + ```text + pkg install git + ``` + + ```text + pip install pipx + ``` + +2. install spow-telegram-bridge: + + ```text + wget -O- https://surplus.joshwel.co/telegram.sh | sh + ``` + + !!! note + if `wget` throws a 404, see [backup links](../links.md) + +3. add the following to your `$HOME/.s+ow-bridges` file: + + ```text + SPOW_TELEGRAM_API_HASH="" SPOW_TELEGRAM_API_ID="" s+ow-telegram-bridge + ``` + + fill in SPOW_TELEGRAM_API_HASH and SPOW_TELEGRAM_API_ID accordingly. + see the [Telethon docs](https://docs.telethon.dev/en/stable/basic/signing-in.html) for + more information + +to keep up to date, look at [updating](#updating) to set up a daily update cron job: + +## updating + +the installation script also sets up a shell script under the `s+ow-telegram-bridge-update` command + +```text +s+ow-telegram-bridge-update +``` + +to do this automatically, make a cron job with `crontab -e` +and make a new line with the following text: + +```text +0 0 * * * bash -l -c "s+ow-telegram-bridge-update" +``` + +this cron job will run the command every day at midnight + +## usage + +- `s+ow-telegram-bridge` + normal usage; sends latest message to tg:-prefixed targets given in stdin + +- `s+ow-telegram-bridge login` + logs in to Telegram + +- `s+ow-telegram-bridge logout` + logs out of Telegram + +- `s+ow-telegram-bridge list` + lists all chats and their IDs + +optional arguments: + +- `--silent` + asks telegram to send message silently +- `--delete-last` + deletes last location message to prevent clutter + +## versioning scheme + +from `v2.2024.27`, the Telegram Bridge will automatically release a new version once a week if there +are updates to its dependencies + +as such, the bridge is now versioned with a modified calendar versioning scheme of +`MAJOR.YEAR.ISOWEEK`, where the `MAJOR` version segment will be bumped with codebase changes, whereas +the `YEAR` and `ISOWEEK` segments will represent the time of which the release was built at + +## licence + +the s+ow Telegram Bridge is free and unencumbered software released into the public domain. +for more information, see [licences](../licences.md). diff --git a/docs/onwheels/whatsapp-bridge.md b/docs/onwheels/whatsapp-bridge.md new file mode 100644 index 0000000..a125f7b --- /dev/null +++ b/docs/onwheels/whatsapp-bridge.md @@ -0,0 +1,210 @@ +# surplus on wheels: WhatsApp Bridge + +WhatsApp Bridge for surplus on wheels (s+ow) + +s+ow bridges are defined in a file named `$HOME/.s+ow-bridges`. each command in the file is run, +and comma-seperated target chat IDs are passed using stdin. + +this bridge recognises targets prefixed with `wa:`. + +```text +wa:,... +``` + +## installation + +### from a pre-built binary + +```text +wget -O- https://surplus.joshwel.co/whatsapp.sh | sh +``` + +!!! note + if `wget` throws a 404, see [backup links](../links.md) + +### building from source + +#### on Termux + +1. clone the repository at either `https://forge.joshwel.co/mark/surplus` or + `https://github.com/markjoshwel/surplus`, and navigate to `src/spow-whatsapp-bridge` within the + cloned repository + + ```text + git clone https://forge.joshwel.co/mark/surplus + cd surplus/src/spow-whatsapp-bridge + ``` + +2. build the bridge: + + ```text + go build + ``` + + for compatibility with the documentations' instructions as-is, rename the built binary to + `s+ow-whatsapp-bridge` + + ```text + mv spow-whatsapp-bridge s+ow-whatsapp-bridge + ``` + +3. send the built binary over to your Termux environment, and then move it into the + `$HOME/.local/bin/` folder. if it doesn't exist, make it with `mkdir` and ensure that the folder + is in your `PATH` variable either using your `.profile`, `.bashrc` or whatever file is sourced + when opening your shell + +#### anywhere else + +for usage on Termux, see if the [Android NDK](https://developer.android.com/ndk/downloads) supports your platform + +1. grab a copy of the NDK, and extract it somewhere. navigate to + `/toolchains/llvm/prebuilt//bin` and look for a suitable `clang` + executable, as it will be your CGO compiler + + ``` + m@csp:~/android-ndk-r26d/toolchains/llvm/prebuilt/linux-x86_64/bin$ ls *clang + aarch64-linux-android21-clang aarch64-linux-android30-clang ... + aarch64-linux-android22-clang aarch64-linux-android31-clang + aarch64-linux-android23-clang aarch64-linux-android32-clang + aarch64-linux-android24-clang aarch64-linux-android33-clang + aarch64-linux-android25-clang aarch64-linux-android34-clang + aarch64-linux-android26-clang armv7a-linux-androideabi21-clang + aarch64-linux-android27-clang armv7a-linux-androideabi22-clang + aarch64-linux-android28-clang armv7a-linux-androideabi23-clang + aarch64-linux-android29-clang armv7a-linux-androideabi24-clang + ``` + + the example output is not exhaustive and is cut short for brevity and example, do take a look + at your downloaded NDK archive for what executables are available to you + + many executables are present, so choose a) what architecture you will build for (more often + than not it's `aarch64`), and b) what target android api are you building for + + if you're building for yourself, pick an api level/version that correlates to your devices' + android version. as an example, my device runs on an ARM processor (`aarch64`) and runs Android 14, + which is api level 34. (`android34`) as such, i would use the `aarch64-linux-android34-clang` + binary + +2. clone the repository at either `https://forge.joshwel.co/mark/surplus` or + `https://github.com/markjoshwel/surplus`, and navigate to `src/spow-whatsapp-bridge` within the + cloned repository + + ```text + git clone https://forge.joshwel.co/mark/surplus + cd surplus/src/spow-whatsapp-bridge + ``` + +3. build the bridge: + + ```text + CC="" GOOS=android GOARCH=arm64 CGO_ENABLED=1 go build + ``` + + for compatibility with the documentations' instructions as-is, rename the built binary to + `s+ow-whatsapp-bridge` + + ```text + mv spow-whatsapp-bridge s+ow-whatsapp-bridge + ``` + +4. send the built binary over to your Termux environment, and then move it into the + `$HOME/.local/bin/` folder. if it doesn't exist, make it with `mkdir` and ensure that the folder + is in your `PATH` variable either using your `.profile`, `.bashrc` or whatever file is sourced + when opening your shell + +### post-installation setup + +1. log into WhatsApp: + + ```text + s+ow-whatsapp-bridge login + ``` + + give it a minute or two to sync your history. once the screen stops scrolling, you can safely + exit with Ctrl+D or Ctrl+C. + +2. find out what chats you want the bridge to target: + + ```text + s+ow-whatsapp-bridge list + ``` + + !!! note + for sending to individuals: their IDs are their internationalised phone numbers ending in + `@s.whatsapp.net` + + example: `+65 9123 4567` is `6591234567@s.whatsapp.net` + + then, note these down, prefixed with `wa:`, to them to your `SPOW_TARGETS` variable in your + s+ow cron job + +3. finally, add the following to your $HOME/.s+ow-bridges file: + + ```text + s+ow-whatsapp-bridge + ``` + +## updating + +to keep updated as [whatsmeow](https://github.com/tulir/whatsmeow/), the library the bridge depends +on, has to keep updated with the WhatsApp web multidevice API, you can either: + +1. [rebuild when a weekly release comes out](#building-from-source), +2. [or rely on the weekly continuous deployment builds](#from-a-pre-built-binary) + +to use the weekly builds without building from scratch every time, + +!!! note + this will pull the latest binary, around 20 megabytes in size, every day. if your network or + data plan may not take kindly to this, feel free to adjust the cron entry as you wish, or to + one that runs once a week instead: + + ```text + 0 0 * * 0 bash -l -c "s+ow-whatsapp-bridge-update" + ``` + +## usage + +- `s+ow-whatsapp-bridge` + normal usage; sends latest message to wa:-prefixed targets given in stdin + +- `s+ow-whatsapp-bridge login` + logs in to WhatsApp + +- `s+ow-whatsapp-bridge pair-phone` + logs in to WhatsApp using a phone number + +- `s+ow-whatsapp-bridge reconnect` + reconnects the client + +- `s+ow-whatsapp-bridge logout` + logs out of WhatsApp + +- `s+ow-whatsapp-bridge list` + lists all group chats and their IDs. + + for sending to individuals: their IDs are their internationalised phone numbers ending in + `@s.whatsapp.net` + + example: `+65 9123 4567` is `6591234567@s.whatsapp.net` + +## verifying a pre-built binary + +!!! note + if you installed the bridge through an installation script, it would have already + + and if the script or `s+ow-whatsapp-bridge-update` throws an error about failing verification, + you can use the environment variable `` + +TODO + +## versioning scheme + +from `v2.2024.25`, the bridge is now versioned with a modified calendar versioning scheme of +`MAJOR.YEAR.ISOWEEK`, where the `MAJOR` version segment will be bumped with codebase changes, whereas +the `YEAR` and `ISOWEEK` segments will represent the time of which the release was built at + +## licence + +the s+ow Telegram Bridge is free and unencumbered software released into the public domain. +for more information, see [licences](../licences.md). diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 0000000..7c43eca --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,212 @@ +@font-face { + font-family: "Geist"; + src: url('../fonts/GeistVF.woff2') format('woff2'), + url('../fonts/Geist-Regular.ttf') format('truetype'); +} +@font-face { + font-family: "Geist Mono"; + src: url('../fonts/GeistMonoVF.woff2') format('woff2'), + url('../fonts/GeistMono-Regular.ttf') format('truetype'); +} + +:root { + --md-text-font: "Geist"; + --md-code-font: "Geist Mono"; + --md-hue: 180deg; +} + +* { + text-rendering: geometricprecision !important; + -webkit-font-smoothing: antialiased; +} + +[data-md-color-scheme="default"] { + color-scheme: light; + + --md-sys-color-primary: rgb(51 71 65); + --md-sys-color-surface-tint: rgb(78 99 92); + --md-sys-color-on-primary: rgb(255 255 255); + --md-sys-color-primary-container: rgb(95 116 109); + --md-sys-color-on-primary-container: rgb(255 255 255); + --md-sys-color-secondary: rgb(61 69 66); + --md-sys-color-on-secondary: rgb(255 255 255); + --md-sys-color-secondary-container: rgb(110 118 115); + --md-sys-color-on-secondary-container: rgb(255 255 255); + --md-sys-color-tertiary: rgb(0 73 93); + --md-sys-color-on-tertiary: rgb(255 255 255); + --md-sys-color-tertiary-container: rgb(65 124 147); + --md-sys-color-on-tertiary-container: rgb(255 255 255); + --md-sys-color-error: rgb(124 37 0); + --md-sys-color-on-error: rgb(255 255 255); + --md-sys-color-error-container: rgb(200 77 28); + --md-sys-color-on-error-container: rgb(255 255 255); + --md-sys-color-background: rgb(251 249 247); + --md-sys-color-on-background: rgb(27 28 27); + --md-sys-color-surface: rgb(251 249 247); + --md-sys-color-on-surface: rgb(27 28 27); + --md-sys-color-surface-variant: rgb(222 228 224); + --md-sys-color-on-surface-variant: rgb(62 68 66); + --md-sys-color-outline: rgb(90 96 94); + --md-sys-color-outline-variant: rgb(118 124 121); + --md-sys-color-shadow: rgb(0 0 0); + --md-sys-color-scrim: rgb(0 0 0); + --md-sys-color-inverse-surface: rgb(48 49 48); + --md-sys-color-inverse-on-surface: rgb(242 240 239); + --md-sys-color-inverse-primary: rgb(181 203 195); + --md-sys-color-primary-fixed: rgb(100 121 114); + --md-sys-color-on-primary-fixed: rgb(255 255 255); + --md-sys-color-primary-fixed-dim: rgb(76 96 90); + --md-sys-color-on-primary-fixed-variant: rgb(255 255 255); + --md-sys-color-secondary-fixed: rgb(110 118 115); + --md-sys-color-on-secondary-fixed: rgb(255 255 255); + --md-sys-color-secondary-fixed-dim: rgb(86 94 90); + --md-sys-color-on-secondary-fixed-variant: rgb(255 255 255); + --md-sys-color-tertiary-fixed: rgb(65 124 147); + --md-sys-color-on-tertiary-fixed: rgb(255 255 255); + --md-sys-color-tertiary-fixed-dim: rgb(36 99 121); + --md-sys-color-on-tertiary-fixed-variant: rgb(255 255 255); + --md-sys-color-surface-dim: rgb(219 218 216); + --md-sys-color-surface-bright: rgb(251 249 247); + --md-sys-color-surface-container-lowest: rgb(255 255 255); + --md-sys-color-surface-container-low: rgb(245 243 242); + --md-sys-color-surface-container: rgb(239 238 236); + --md-sys-color-surface-container-high: rgb(233 232 230); + --md-sys-color-surface-container-highest: rgb(228 226 225); + + --md-hue: 139.2deg; + --md-default-fg-color: var(--md-sys-color-primary); + --md-default-bg-color: var(--md-sys-color-surface); + + /* primary colours */ + --md-primary-fg-color: var(--md-sys-color-primary); + --md-primary-fg-color--light: var(--md-sys-color-inverse-primary); + --md-primary-fg-color--dark: var(--md-sys-color-primary-container); + --md-primary-bg-color: var(--md-sys-color-surface); + --md-primary-bg-color--light: var(--md-sys-color-surface-dim); + + /* accent (interactable) colours */ + --md-accent-fg-color: var(--md-sys-color-tertiary); + --md-accent-bg-color: var(--md-sys-color-on-tertiary); + --md-accent-bg-color--light: var(--md-sys-color-surface-dim); + + /* typesetting colours */ + --md-typeset-color: var(--md-sys-color-on-surface); + --md-typeset-a-color: var(--md-sys-color-tertiary); + --md-typeset-del-color: var(--md-sys-color-on-error-container); + --md-typeset-ins-color: var(--md-sys-color-on-primary-container); + --md-typeset-kbd-color: var(--md-sys-color-surface-container-lowest); + --md-typeset-kbd-accent-color: var(--md-sys-color-surface-container); + --md-typeset-kbd-border-color: var(--md-sys-color-surface-container-highest); + --md-typeset-mark-color: var(--md-sys-color-tertiary-container); + --md-typeset-table-color: var(--md-sys-color-outline); + --md-code-bg-color: var(--md-sys-color-surface-container-high); + + /* admonition colours */ + --md-admonition-fg-color: var(--md-sys-color-secondary); + --md-admonition-bg-color: var(--md-default-bg-color); + --md-warning-fg-color: var(--md-sys-color-on-error-container); + --md-warning-bg-color: var(--md-sys-color-error-container); + + /* footer colours */ + --md-footer-fg-color: var(--md-sys-color-on-surface); + --md-footer-fg-color--light: var(--md-sys-color-on-surface-variant); + --md-footer-fg-color--lighter: var(--md-sys-color-outline); + --md-footer-bg-color: var(--md-sys-color-surface-dim); + --md-footer-bg-color--dark: var(--md-sys-color-surface-container-highest); +} + +[data-md-color-scheme="slate"] { + color-scheme: dark; + + --md-sys-color-primary: rgb(185 208 199); + --md-sys-color-surface-tint: rgb(181 203 195); + --md-sys-color-on-primary: rgb(6 26 21); + --md-sys-color-primary-container: rgb(128 149 142); + --md-sys-color-on-primary-container: rgb(0 0 0); + --md-sys-color-secondary: rgb(196 205 200); + --md-sys-color-on-secondary: rgb(16 24 21); + --md-sys-color-secondary-container: rgb(138 147 143); + --md-sys-color-on-secondary-container: rgb(0 0 0); + --md-sys-color-tertiary: rgb(153 211 236); + --md-sys-color-on-tertiary: rgb(0 25 34); + --md-sys-color-tertiary-container: rgb(99 157 181); + --md-sys-color-on-tertiary-container: rgb(0 0 0); + --md-sys-color-error: rgb(255 187 164); + --md-sys-color-on-error: rgb(48 9 0); + --md-sys-color-error-container: rgb(237 104 54); + --md-sys-color-on-error-container: rgb(0 0 0); + --md-sys-color-background: rgb(19 20 19); + --md-sys-color-on-background: rgb(228 226 225); + --md-sys-color-surface: rgb(19 20 19); + --md-sys-color-on-surface: rgb(252 250 249); + --md-sys-color-surface-variant: rgb(66 72 70); + --md-sys-color-on-surface-variant: rgb(198 204 200); + --md-sys-color-outline: rgb(158 164 161); + --md-sys-color-outline-variant: rgb(126 132 129); + --md-sys-color-shadow: rgb(0 0 0); + --md-sys-color-scrim: rgb(0 0 0); + --md-sys-color-inverse-surface: rgb(228 226 225); + --md-sys-color-inverse-on-surface: rgb(41 42 41); + --md-sys-color-inverse-primary: rgb(56 76 70); + --md-sys-color-primary-fixed: rgb(209 232 223); + --md-sys-color-on-primary-fixed: rgb(2 20 16); + --md-sys-color-primary-fixed-dim: rgb(181 203 195); + --md-sys-color-on-primary-fixed-variant: rgb(38 58 52); + --md-sys-color-secondary-fixed: rgb(220 228 224); + --md-sys-color-on-secondary-fixed: rgb(11 19 16); + --md-sys-color-secondary-fixed-dim: rgb(192 200 196); + --md-sys-color-on-secondary-fixed-variant: rgb(48 56 53); + --md-sys-color-tertiary-fixed: rgb(186 234 255); + --md-sys-color-on-tertiary-fixed: rgb(0 20 27); + --md-sys-color-tertiary-fixed-dim: rgb(149 207 232); + --md-sys-color-on-tertiary-fixed-variant: rgb(0 59 76); + --md-sys-color-surface-dim: rgb(19 20 19); + --md-sys-color-surface-bright: rgb(57 57 56); + --md-sys-color-surface-container-lowest: rgb(13 14 14); + --md-sys-color-surface-container-low: rgb(27 28 27); + --md-sys-color-surface-container: rgb(31 32 31); + --md-sys-color-surface-container-high: rgb(41 42 41); + --md-sys-color-surface-container-highest: rgb(52 53 52); + + /*--md-hue: 139.2deg;*/ + --md-default-fg-color: var(--md-sys-color-primary); + --md-default-bg-color: var(--md-sys-color-surface); + + /* primary colours */ + --md-primary-fg-color: var(--md-sys-color-primary); + --md-primary-fg-color--light: var(--md-sys-color-inverse-primary); + --md-primary-fg-color--dark: var(--md-sys-color-primary-container); + --md-primary-bg-color: var(--md-sys-color-surface); + --md-primary-bg-color--light: var(--md-sys-color-surface-dim); + + /* accent (interactable) colours */ + --md-accent-fg-color: var(--md-sys-color-tertiary); + --md-accent-bg-color: var(--md-sys-color-on-tertiary); + --md-accent-bg-color--light: var(--md-sys-color-surface-dim); + + /* typesetting colours */ + --md-typeset-color: var(--md-sys-color-on-surface); + --md-typeset-a-color: var(--md-sys-color-tertiary); + --md-typeset-del-color: var(--md-sys-color-on-error-container); + --md-typeset-ins-color: var(--md-sys-color-on-primary-container); + --md-typeset-kbd-color: var(--md-sys-color-surface-container-lowest); + --md-typeset-kbd-accent-color: var(--md-sys-color-surface-container); + --md-typeset-kbd-border-color: var(--md-sys-color-surface-container-highest); + --md-typeset-mark-color: var(--md-sys-color-tertiary-container); + --md-typeset-table-color: var(--md-sys-color-outline); + --md-typeset-table-color--light: var(--md-sys-color-outline-variant); + --md-code-bg-color: var(--md-sys-color-surface-container-high); + + /* admonition colours */ + --md-admonition-fg-color: var(--md-sys-color-secondary); + --md-admonition-bg-color: var(--md-default-bg-color); + --md-warning-fg-color: var(--md-sys-color-on-error-container); + --md-warning-bg-color: var(--md-sys-color-error-container); + + /* footer colours */ + --md-footer-fg-color: var(--md-sys-color-on-surface); + --md-footer-fg-color--light: var(--md-sys-color-on-surface-variant); + --md-footer-fg-color--lighter: var(--md-sys-color-outline); + --md-footer-bg-color: var(--md-sys-color-surface-dim); + --md-footer-bg-color--dark: var(--md-sys-color-surface-container-highest); +} diff --git a/docs/stylesheets/pdf.scss b/docs/stylesheets/pdf.scss new file mode 100644 index 0000000..b7aec30 --- /dev/null +++ b/docs/stylesheets/pdf.scss @@ -0,0 +1,4 @@ +@page { + size: A4; + margin: 1.25cm; +} diff --git a/docs/using.md b/docs/using.md new file mode 100644 index 0000000..7eff7f7 --- /dev/null +++ b/docs/using.md @@ -0,0 +1,11 @@ +# the user's handbook + +TODO + +## as a command line tool + +TODO + +## as a python library + +TODO diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..db424ed --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,114 @@ +site_name: surplus Documentation +site_url: https://surplus.joshwel.co +site_author: Mark Joshwel and surplus contributors +site_description: documentation for the surplus and sibling projects + +repo_name: markjoshwel/surplus +repo_url: https://github.com/markjoshwel/surplus + +copyright: | + with with all our hearts, 2023-2024, mark joshwel and contributors
+ documentation is dedicated to the public domain with
CC0 + +nav: +- about: + - surplus: "index.md" + - licences: "licences.md" + - changelog: "changelog.md" +- handbooks: + - "using.md" + - "developing.md" + - "contributing.md" +- on wheels: + - "onwheels/index.md" + - bridges: + - about bridges: "onwheels/bridges.md" + - "onwheels/telegram-bridge.md" + - "onwheels/whatsapp-bridge.md" + - "onwheels/emulating-termux-location.md" + - "onwheels/emulating-termux-notification.md" +- backup links: + "links.md" + +theme: + name: material + language: en + + features: + - navigation.tabs + - navigation.tabs.sticky + - navigation.tracking + - navigation.expand + - toc.integrate + - search.suggest + - search.highlight + - content.tabs.link + - content.code.annotation + - content.code.copy + - pymdownx.snippets + + font: false + + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Light Theme + primary: custom + accent: custom + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + name: Dark Theme + primary: custom + accent: custom + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-4 + name: System Theme + primary: custom + accent: custom + + icon: + admonition: + abstract: material/text-box-outline + tip: material/pencil-outline + note: material/information-slab-box-outline + warning: material/alert-outline + danger: material/alert-octagon-outline + + +extra_css: + - stylesheets/extra.css + +plugins: + - search + - privacy + #- git-revision-date-localized: + # enable_creation_date: true + - exporter: + formats: + pdf: + enabled: !ENV [MKDOCS_EXPORTER_PDF_ENABLED, true] + stylesheets: + - docs/stylesheets/pdf.scss + aggregator: + enabled: true + output: documentation.pdf + buttons: + - title: Download as PDF + icon: material-file-download-outline + enabled: !!python/name:mkdocs_exporter.formats.pdf.buttons.download.enabled + attributes: !!python/name:mkdocs_exporter.formats.pdf.buttons.download.attributes + +markdown_extensions: + - admonition + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences diff --git a/src/tools/docs-prebuild.py b/src/tools/docs-prebuild.py new file mode 100644 index 0000000..f01223e --- /dev/null +++ b/src/tools/docs-prebuild.py @@ -0,0 +1,23 @@ +""" +script to copy shell scripts into the docs folder for publishing + +src/surplus-on-wheels/s+ow -> docs/spow.sh +src/surplus-on-wheels/termux-s+ow-setup -> docs/termux.sh +src/spow-whatsapp-bridge/install.sh -> docs/whatsapp.sh +src/spow-telegram-bridge/install.sh -> docs/telegram.sh +""" +from pathlib import Path +from shutil import copyfile + +repo_root: Path = Path(__file__).parent.parent.parent +docs_path: Path = repo_root.joinpath("docs") + +copy_map: dict[Path, Path] = { + repo_root.joinpath("src/surplus-on-wheels/s+ow"): docs_path.joinpath("spow.sh"), + repo_root.joinpath("src/surplus-on-wheels/install.sh"): docs_path.joinpath("termux.sh"), + repo_root.joinpath("src/spow-whatsapp-bridge/install.sh"): docs_path.joinpath("whatsapp.sh"), + repo_root.joinpath("src/spow-telegram-bridge/install.sh"): docs_path.joinpath("telegram.sh"), +} + +for target, destination in copy_map.items(): + copyfile(target, destination)