Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jwillikers/cyrillic-encoder

A demo Qt application for encoding alphanumeric characters as arbitrary Cyrillic symbols
https://github.com/jwillikers/cyrillic-encoder

cmake cpp cpp20 cyrillic demo demo-app nix qt

Last synced: 10 days ago
JSON representation

A demo Qt application for encoding alphanumeric characters as arbitrary Cyrillic symbols

Awesome Lists containing this project

README

        

= Cyrillic Encoder
Jordan Williams
:experimental:
:icons: font
ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

image:https://github.com/jwillikers/cyrillic-encoder/actions/workflows/build.yaml/badge.svg[CI, link=https://github.com/jwillikers/cyrillic-encoder/actions/workflows/build.yaml]

A Qt demo application for encoding alphanumeric characters as arbitrary Cyrillic symbols.

ifdef::env-github[]
++++


Cyrillic Encoder Demo


++++
endif::[]

ifndef::env-github[]
image::screenshots/Cyrillic Encoder Demo.gif[Cyrillic Encoder Demo, align=center]
endif::[]

== Getting Started

This section describes how to set up the build environment required by the project.
These instructions are for Fedora 38.

. Install an implementation of Nix, such as https://lix.systems[Lix] used here.
+
[,sh]
----
curl -sSf -L https://install.lix.systems/lix | sh -s -- install
----

. First, clone the source code of this repository locally.
+
[,sh]
----
git clone https://github.com/jwillikers/cyrillic-encoder.git
----

. Then change into the project directory.
+
[,sh]
----
cd cyrillic-encoder
----

. Run with `nix run`.
+
[,sh]
----
nix run
----

== Development

https://nixos.org/[Nix] is used to manage all of the necessary dependencies.
The `nix develop` command can be used to enter or run commands in an environment with all of the necessary dependencies.
For convenience, direnv can be used to automatically load this environment when entering the project's directory.
The https://marketplace.visualstudio.com/items?itemName=mkhl.direnv[mkhl.direnv VSCode extension] integrates this environment in VSCode for development.
Nix also generates the configuration for https://pre-commit.com/[pre-commit], which automates formatting and various checks when committing changes.

. Install direnv for your system according to the https://direnv.net/docs/installation.html[direnv installation instructions].
+
[,sh]
----
sudo rpm-ostree install direnv
sudo systemctl reboot
----

. Integrate direnv with your shell by following the instructions on the https://direnv.net/docs/hook.html[direnv Setup page].

. Permit the direnv configuration in the repository.
+
[,sh]
----
direnv allow
----

. The https://just.systems/[just] command runner can be used to perform common tasks, such as building the project and running tests.
The `workflow`, or `w`, subcommand can be used to easily run the default developer workflow.
This will configure the CMake build, build everything, and run the tests.
+
[,sh]
----
just w
----

=== Workflows

https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html[CMake presets] are used to simplify common configurations and tasks.
The workflow presets perform sets of tasks in a specific order.
The presets of most interest to developers are `dev` and `dev-clang`.
These perform the configure, build, and test steps.
The former uses the default compiler, oftentimes GCC, and the latter uses Clang.
In addition to these two workflows, the `ci-gcc`, `ci-clang`, and `coverage-clang` presets can be used to perform the exact workflows used in CI.
The following command demonstrates how to execute the workflow for the `dev` preset.

[,sh]
----
cmake --workflow --preset dev
----

=== Flatpak

Cyrillic Encoder can be built locally as a https://flatpak.org/[Flatpak].
I might get around to setting up a Flatpak remote using GitHub Pages for easy installation someday.
Follow these instructions to build the Flatpak.

. Add the Flathub remote to the user's Flatpak installation.
+
[,sh]
----
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
----

. Use the `just flatpak` command to build the Flatpak.
+
[,sh]
----
just flatpak
----

== Todo

. Switch from CMake to Meson.

== Contributing

Contributions in the form of issues, feedback, and even pull requests are welcome.
Make sure to adhere to the project's link:CODE_OF_CONDUCT.adoc[Code of Conduct].

== Open Source Software

This project is built on the hard work of countless open source contributors.
Several of these projects are enumerated below.

* https://asciidoctor.org/[Asciidoctor]
* https://www.boost.org/[Boost {cpp} Libraries]
* https://github.com/boost-ext/ut[[Boost::ext\].μt]
* https://ccache.dev/[ccache]
* https://github.com/TheLartians/Ccache.cmake[Ccache.cmake]
* https://clang.llvm.org/[Clang]
* https://clang.llvm.org/extra/clang-tidy/[Clang-Tidy]
* https://clang.llvm.org/docs/ClangFormat.html[ClangFormat]
* https://cmake.org/[CMake]
* https://cmake-format.readthedocs.io/en/latest/index.html[cmakelang]
* https://gcc.gnu.org/[GCC]
* https://git-scm.com/[Git]
* https://www.linuxfoundation.org/[Linux]
* https://github.com/microsoft/GSL[Microsoft's GSL]
* https://github.com/TheLartians/ModernCppStarter[ModernCppStarter]
* https://ninja-build.org/[Ninja]
* https://www.qt.io/[Qt]

== Code of Conduct

The project's Code of Conduct is available in the link:CODE_OF_CONDUCT.adoc[Code of Conduct] file.

== License

This repository is licensed under the https://www.gnu.org/licenses/gpl-3.0.html[GPLv3], available in the link:LICENSE.adoc[license file].

© 2021-2024 Jordan Williams

== Authors

mailto:{email}[{author}]