Compare commits

...

8 Commits

Author SHA1 Message Date
tastytea 733aad9903
Remove xdgcfg dependency by copying it into this repo.
continuous-integration/drone/push Build is failing Details
2021-12-24 16:10:15 +01:00
tastytea 3a8b8c715a
Fix translation loading.
continuous-integration/drone/push Build is passing Details
https://www.kdab.com/fixing-a-common-antipattern-when-loading-translations-in-qt/
2020-07-09 13:22:17 +02:00
tastytea b19e8b233a
Fixed this and that in the readme. 2019-06-12 01:35:52 +02:00
tastytea bc6444747d
CI: Don't let rm fail if lockfile isn't there.
continuous-integration/drone/push Build is passing Details
2019-06-12 00:26:48 +02:00
tastytea ea9755bf9a
Updated readme.
continuous-integration/drone/push Build is failing Details
2019-06-12 00:22:38 +02:00
tastytea 774c1685af
Modified drone config to work with versions > 1.
continuous-integration/drone/push Build is failing Details
2019-06-12 00:14:33 +02:00
tastytea 9067b9dc91
Small cosmetic change to manpage.
the build was successful Details
2019-04-12 19:54:53 +02:00
tastytea 11b88aaf3d
Added files section to manpage.
the build was successful Details
2019-01-21 01:07:04 +01:00
8 changed files with 465 additions and 212 deletions

View File

@ -1,185 +1,223 @@
pipeline: kind: pipeline
gcc6: name: build x86_64
image: ubuntu:xenial
pull: true
environment:
- LANG=C.utf8
- CXX=g++-6
- CXXFLAGS=-pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
- gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- apt-get update -q
- apt-get install -qy g++-6 cmake pkg-config
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- apt-get install -qy dpkg-dev rpm file wget
- gpg --import /var/autosign_gpg.key
- rm -rf build && mkdir -p build && cd build
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
- make VERBOSE=1
- make install DESTDIR=install
- make package
- cmake -DWITH_DEB=ON ..
- make package
- cmake -DWITH_DEB=OFF -DWITH_RPM=ON ..
- make package
- gpg --verbose --detach-sign *.tar.gz
- gpg --verbose --detach-sign *.deb
- gpg --verbose --detach-sign *.rpm
volumes:
- /var/cache/debian-package-cache:/var/cache/apt/archives
- /home/tastytea/misc/autosign_gpg.key:/var/autosign_gpg.key
gcc7: volumes:
image: debian:stretch-slim - name: debian-package-cache
pull: true host:
when: path: /var/cache/debian-package-cache
event: [push, pull_request]
environment:
- LANG=C.utf8
- CXX=g++-7
- CXXFLAGS=-pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- apt-get update -q
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/backports.list
- echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
- apt-get install -qy gnupg
- gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- apt-get update -q
- apt-get install -qy -t xenial g++-7
- apt-get install -qy cmake pkg-config
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- /var/cache/debian-package-cache:/var/cache/apt/archives
gcc8: trigger:
image: debian:stretch-slim event:
pull: true exclude:
when: - tag
event: [push, pull_request]
environment:
- LANG=C.utf8
- CXX=g++-8
- CXXFLAGS=-pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- apt-get update -q
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/backports.list
- echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
- apt-get install -qy gnupg
- gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- apt-get update -q
- apt-get install -qy -t xenial g++-8
- apt-get install -qy cmake pkg-config
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- /var/cache/debian-package-cache:/var/cache/apt/archives
clang3: steps:
image: debian:stretch-slim - name: submodules
pull: true image: docker:git
when: commands:
event: [push, pull_request] - git submodule init
environment: - git submodule update --recursive
- LANG=C.utf8
- CXX=clang++
- CXXFLAGS=-pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/backports.list
- apt-get update -q
- apt-get install -qy clang cmake pkg-config
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- /var/cache/debian-package-cache:/var/cache/apt/archives
clang5: - name: gcc6
image: debian:stretch-slim image: ubuntu:xenial
pull: true pull: always
when: environment:
event: [push, pull_request] CXX: g++-6
environment: CXXFLAGS: -pipe -O2
- LANG=C.utf8 commands:
- CXX=clang++-5.0 - rm /etc/apt/apt.conf.d/docker-clean
- CXXFLAGS=-pipe -O2 - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
commands: - gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- rm /etc/apt/apt.conf.d/docker-clean - gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release - rm -f /var/cache/apt/archives/lock
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/stretch.list - apt-get update -q
- apt-get update -q - rm -f /var/cache/apt/archives/lock
- apt-get install -qy -t stretch-backports clang-5.0 - apt-get install -qy g++-6 cmake pkg-config
- apt-get install -qy cmake pkg-config - rm -f /var/cache/apt/archives/lock
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc - apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build - rm -rf build && mkdir -p build && cd build
- cmake .. - cmake -DCMAKE_INSTALL_PREFIX=/usr ..
- make VERBOSE=1 - make VERBOSE=1
- make install DESTDIR=install - make install DESTDIR=install
volumes: volumes:
- /var/cache/debian-package-cache:/var/cache/apt/archives - name: debian-package-cache
path: /var/cache/apt/archives
clang6: - name: gcc9
image: debian:stretch-slim image: debian:stretch-slim
pull: true pull: always
when: environment:
event: [push, pull_request] CXX: g++-9
environment: CXXFLAGS: -pipe -O2
- LANG=C.utf8 commands:
- CXX=clang++-6.0 - rm /etc/apt/apt.conf.d/docker-clean
- CXXFLAGS=-pipe -O2 - rm -f /var/cache/apt/archives/lock
commands: - apt-get update -q
- rm /etc/apt/apt.conf.d/docker-clean - echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release - echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/backports.list
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/stretch.list - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
- apt-get update -q - rm -f /var/cache/apt/archives/lock
- apt-get install -qy -t stretch-backports clang-6.0 - apt-get install -qy gnupg
- apt-get install -qy cmake pkg-config - gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc - gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- rm -rf build && mkdir -p build && cd build - rm -f /var/cache/apt/archives/lock
- cmake .. - apt-get update -q
- make VERBOSE=1 - rm -f /var/cache/apt/archives/lock
- make install DESTDIR=install - apt-get install -qy -t xenial g++-9
volumes: - rm -f /var/cache/apt/archives/lock
- /var/cache/debian-package-cache:/var/cache/apt/archives - apt-get install -qy cmake pkg-config
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
prepare_release: - name: clang3
image: ubuntu:xenial image: debian:stretch-slim
pull: true pull: always
when: environment:
event: tag CXX: clang++
commands: CXXFLAGS: -pipe -O2
- cp -v build/whyblocked-${DRONE_TAG}_x86_64.tar.gz . commands:
- cp -v build/whyblocked-${DRONE_TAG}_x86_64.tar.gz.sig . - rm /etc/apt/apt.conf.d/docker-clean
- cp -v build/whyblocked_${DRONE_TAG}-0_amd64.deb . - echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- cp -v build/whyblocked_${DRONE_TAG}-0_amd64.deb.sig . - echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/backports.list
- cp -v build/whyblocked-${DRONE_TAG}-0.x86_64.rpm . - rm -f /var/cache/apt/archives/lock
- cp -v build/whyblocked-${DRONE_TAG}-0.x86_64.rpm.sig . - apt-get update -q
gitea_release: - rm -f /var/cache/apt/archives/lock
image: plugins/gitea-release - apt-get install -qy clang cmake pkg-config
pull: true - rm -f /var/cache/apt/archives/lock
when: - apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
event: tag - rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
- name: clang6
image: debian:stretch-slim
pull: always
environment:
CXX: clang++-6.0
CXXFLAGS: -pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- echo "APT::Default-Release \"stretch\";" >> /etc/apt/apt.conf.d/00default_release
- echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/stretch.list
- rm -f /var/cache/apt/archives/lock
- apt-get update -q
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy -t stretch-backports clang-6.0
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy cmake pkg-config
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -rf build && mkdir -p build && cd build
- cmake ..
- make VERBOSE=1
- make install DESTDIR=install
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
- name: notify
image: drillster/drone-email
pull: always
settings:
host: cryptoparty-celle.de
username:
from_secret: email_username
password:
from_secret: email_password
from: drone@tzend.de
when:
status: [ changed, failure ]
---
kind: pipeline
name: packages x86_64
volumes:
- name: debian-package-cache
host:
path: /var/cache/debian-package-cache
- name: gpg-key
host:
path: /var/autosign_gpg.key
trigger:
event:
- tag
steps:
- name: submodules
image: docker:git
commands:
- git submodule init
- git submodule update --recursive
- name: gcc6
image: ubuntu:xenial
pull: always
environment:
CXX: g++-6
CXXFLAGS: -pipe -O2
commands:
- rm /etc/apt/apt.conf.d/docker-clean
- echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list
- gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f
- gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add -
- rm -f /var/cache/apt/archives/lock
- apt-get update -q
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy g++-6 cmake pkg-config
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy libvsqlitepp-dev libboost-dev libxdg-basedir-dev qt5-default qttools5-dev-tools qttools5-dev libconfig++-dev asciidoc
- rm -f /var/cache/apt/archives/lock
- apt-get install -qy dpkg-dev rpm file wget
- gpg --import /var/autosign_gpg.key
- rm -rf build && mkdir -p build && cd build
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
- make VERBOSE=1
- make install DESTDIR=install
- make package
- cmake -DWITH_DEB=ON ..
- make package
- cmake -DWITH_DEB=OFF -DWITH_RPM=ON ..
- make package
- gpg --verbose --detach-sign *.tar.gz
- gpg --verbose --detach-sign *.deb
- gpg --verbose --detach-sign *.rpm
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
- name: gpg-key
path: /var/autosign_gpg.key
- name: prepare_release
image: ubuntu:xenial
pull: always
commands:
- cp -v build/whyblocked-${DRONE_TAG}_x86_64.tar.gz .
- cp -v build/whyblocked-${DRONE_TAG}_x86_64.tar.gz.sig .
- cp -v build/whyblocked_${DRONE_TAG}-0_amd64.deb .
- cp -v build/whyblocked_${DRONE_TAG}-0_amd64.deb.sig .
- cp -v build/whyblocked-${DRONE_TAG}-0.x86_64.rpm .
- cp -v build/whyblocked-${DRONE_TAG}-0.x86_64.rpm.sig .
- name: release
image: plugins/gitea-release
pull: always
settings:
base_url: https://schlomp.space base_url: https://schlomp.space
secrets: [ gitea_token ] api_key:
from_secret: gitea_token
title: ${DRONE_TAG} title: ${DRONE_TAG}
prerelease: true prerelease: true
files: files:
@ -193,11 +231,15 @@ pipeline:
- sha256 - sha256
- sha512 - sha512
notify: - name: notify
image: drillster/drone-email image: drillster/drone-email
pull: true pull: always
settings:
host: cryptoparty-celle.de host: cryptoparty-celle.de
secrets: [ email_username, email_password ] username:
from_secret: email_username
password:
from_secret: email_password
from: drone@tzend.de from: drone@tzend.de
when: when:
status: [ changed, failure ] status: [ changed, failure ]

View File

@ -53,10 +53,15 @@ add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_PROJECT_NAME} whyblocked-gui) COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_PROJECT_NAME} whyblocked-gui)
if(WITH_MAN) if(WITH_MAN)
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/whyblocked.1"
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
DEPENDS "${CMAKE_SOURCE_DIR}/whyblocked.1.adoc"
COMMAND ${CMAKE_SOURCE_DIR}/build_manpage.sh COMMAND ${CMAKE_SOURCE_DIR}/build_manpage.sh
ARGS ${PROJECT_VERSION}) ARGS ${PROJECT_VERSION})
add_custom_target(run ALL
DEPENDS "${PROJECT_BINARY_DIR}/whyblocked.1"
)
endif() endif()
install(TARGETS ${CMAKE_PROJECT_NAME} install(TARGETS ${CMAKE_PROJECT_NAME}

View File

@ -1,9 +1,9 @@
**Whyblocked** allows you to store the reason why you blocked someone, along **Whyblocked** allows you to store the reason why you blocked someone, along
with "receipts", URLs to the posts that led you to block them. with “receipts”, URLs to the posts that led you to block them.
It has a Qt-interface and uses an SQLite-database. It has a Qt-interface and uses an SQLite-database.
![Screenshot Qt interface](https://doc.schlomp.space/whyblocked/whyblocked_screenshot.png) ![Screenshot](https://doc.schlomp.space/whyblocked/whyblocked_screenshot.png)
## Usage ## Usage
@ -16,9 +16,12 @@ environment.
Every [release](https://schlomp.space/tastytea/whyblocked/releases) includes Every [release](https://schlomp.space/tastytea/whyblocked/releases) includes
a .deb-package, an .rpm-package and a .tar.gz-package with precompiled binaries a .deb-package, an .rpm-package and a .tar.gz-package with precompiled binaries
for x86_64(amd64) ([more info](https://schlomp.space/tastytea/whyblocked/wiki/Binary-Packages)). These are automatically built and not tested. You can install for x86_64(amd64)
them with `dpkg -i` or `rpm -i`, respectively. The packages are signed with the ([more info](https://schlomp.space/tastytea/whyblocked/wiki/Binary-Packages)).
PGP key [242E5AC4DA587BF9](https://tastytea.de/tastytea_autosign.asc) These are automatically built and not tested. You can install them with
`apt install ./whyblocked*.deb` or `yum install ./whyblocked*.rpm`,
respectively. The packages are signed with the PGP key
[242E5AC4DA587BF9](https://tastytea.de/tastytea_autosign.asc)
(Fingerprint: `F730 1ADF C9ED 2624 48C4 2B64 242E 5AC4 DA58 7BF9`). (Fingerprint: `F730 1ADF C9ED 2624 48C4 2B64 242E 5AC4 DA58 7BF9`).
Gentoo ebuilds are available via my Gentoo ebuilds are available via my
@ -28,32 +31,26 @@ Gentoo ebuilds are available via my
#### Dependencies #### Dependencies
* C++ compiler (tested: [gcc](https://gcc.gnu.org/) 6/7/8, * C++ compiler (tested: [gcc](https://gcc.gnu.org/) 6/8/9,
[clang](https://llvm.org/) 3/5/6) [clang](https://llvm.org/) 3/6)
* [cmake](https://cmake.org/) (at least 3.2) * [cmake](https://cmake.org/) (at least 3.2)
* [vsqlite++](http://vsqlite.virtuosic-bytes.com/) (tested: 0.3) * [vsqlite++](http://vsqlite.virtuosic-bytes.com/) (tested: 0.3)
* [libxdg-basedir](http://repo.or.cz/w/libxdg-basedir.git) (tested: 1.2) * [libxdg-basedir](http://repo.or.cz/w/libxdg-basedir.git) (tested: 1.2)
* [qtcore](https://www.qt.io/) (tested: 5.11/5.5) * [qtcore](https://www.qt.io/) (tested: 5.12/5.5)
* [qtwidgets](https://www.qt.io/) (tested: 5.11/5.5) * [qtwidgets](https://www.qt.io/) (tested: 5.12/5.5)
* [libconfig++](https://github.com/hyperrealm/libconfig) (tested: 1.5) * [libconfig++](https://github.com/hyperrealm/libconfig) (tested: 1.5)
* Optional * Optional
* Translations: [lupdate & lrelease](http://doc.qt.io/qt-5/linguist-manager.html) (tested: 5.11/5.5) * Translations: [lupdate & lrelease](http://doc.qt.io/qt-5/linguist-manager.html) (tested: 5.12/5.5)
* Manpage: [asciidoc](http://asciidoc.org/) (tested: 8.6) * Manpage: [asciidoc](http://asciidoc.org/) (tested: 8.6)
#### Get sourcecode #### Get sourcecode
Download the current Download the current
[release](https://schlomp.space/tastytea/whyblocked/releases) and copy [release](https://schlomp.space/tastytea/whyblocked/releases).
[xdgcfg](https://schlomp.space/tastytea/xdgcfg) into `xdgcfg/`.
If you clone from git, be sure to `git submodule init` and
`git submodule update` afterwards. See the [submodules article in the git book]
(https://git-scm.com/book/en/v2/Git-Tools-Submodules#_cloning_submodules) for
further info.
#### Compile #### Compile
```SH ``` zsh
mkdir build mkdir build
cd build cd build
cmake .. cmake ..
@ -92,14 +89,14 @@ Please report them on the
## Licence & Copyright ## Licence & Copyright
```PLAIN ``` plain
Copyright © 2018 tastytea <tastytea@tastytea.de>. Copyright © 2018 tastytea <tastytea@tastytea.de>.
License GPLv3: GNU GPL version 3 <https://www.gnu.org/licenses/gpl-3.0.html>. License GPLv3: GNU GPL version 3 <https://www.gnu.org/licenses/gpl-3.0.html>.
This program comes with ABSOLUTELY NO WARRANTY. This is free software, This program comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions. and you are welcome to redistribute it under certain conditions.
``` ```
The icon is derived from the icons `messagebox critical` and `help` of the The icon is derived from the icons *“messagebox critical”* and *“help”* of the
[Gartoon icon theme](https://commons.wikimedia.org/wiki/Gartoon_icons). The [Gartoon icon theme](https://commons.wikimedia.org/wiki/Gartoon_icons). The
original authors were Zeus, Patrick Yavitz and La Mula Francis, who released original authors were Zeus, Patrick Yavitz and La Mula Francis, who released
them under the terms of the them under the terms of the

View File

@ -1,5 +1,5 @@
/* This file is part of whyblocked. /* This file is part of whyblocked.
* Copyright © 2019 tastytea <tastytea@tastytea.de> * Copyright © 2019, 2020 tastytea <tastytea@tastytea.de>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -14,21 +14,24 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <QTranslator>
#include <QLibraryInfo>
#include "mainwindow.hpp" #include "mainwindow.hpp"
#include <QLibraryInfo>
#include <QLocale>
#include <QTranslator>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication app(argc, argv); QApplication app(argc, argv);
QCoreApplication::setApplicationName("Whyblocked"); QCoreApplication::setApplicationName("Whyblocked");
QTranslator qtTranslator; QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(), qtTranslator.load(QLocale(), "qt", "_",
QLibraryInfo::location(QLibraryInfo::TranslationsPath)); QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator); app.installTranslator(&qtTranslator);
QTranslator appTranslator; QTranslator appTranslator;
appTranslator.load("whyblocked_" + QLocale::system().name(), appTranslator.load(QLocale(), "whyblocked", "_",
QLibraryInfo::location(QLibraryInfo::TranslationsPath)); QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&appTranslator); app.installTranslator(&appTranslator);

View File

@ -1 +0,0 @@
../xdgcfg/src/xdgcfg.cpp

95
src/xdgcfg.cpp Normal file
View File

@ -0,0 +1,95 @@
/* Copyright © 2019 tastytea <tastytea@tastytea.de>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the BSD-3-Clause license.
*/
#include <basedir.h>
#include "xdgcfg.hpp"
xdgcfg::xdgcfg(const string &filename, const string &subdir)
: _cfg()
, _verbose(false)
{
xdgHandle xdg;
xdgInitHandle(&xdg);
_filepath = xdgConfigHome(&xdg);
xdgWipeHandle(&xdg);
if (!subdir.empty())
{
_filepath /= subdir;
}
if (!fs::exists(_filepath))
{
fs::create_directories(_filepath);
}
_filepath /= filename;
}
uint8_t xdgcfg::read()
{
try
{
_cfg.readFile(_filepath.c_str());
}
catch (const libconfig::FileIOException &e)
{
if (_verbose)
{
cerr << "I/O error while reading " << _filepath
<< " - " << e.what() << endl;
}
return 1;
}
catch (const libconfig::ParseException &e)
{
if (_verbose)
{
cerr << "Parse error at " << e.getFile() << ":" << e.getLine()
<< " - " << e.getError() << endl;
}
return 2;
}
return 0;
}
bool xdgcfg::write()
{
try
{
_cfg.writeFile(_filepath.c_str());
}
catch (const libconfig::FileIOException &e)
{
if (_verbose)
{
cerr << "I/O error while writing " << _filepath
<< " - " << e.what() << endl;
}
return false;
}
return true;
}
libconfig::Config &xdgcfg::get_cfg()
{
return _cfg;
}
const fs::path xdgcfg::get_filepath() const
{
return _filepath;
}
void xdgcfg::set_verbose(bool verbose)
{
_verbose = verbose;
}
bool xdgcfg::get_verbose() const
{
return _verbose;
}

View File

@ -1 +0,0 @@
../xdgcfg/src/xdgcfg.hpp

106
src/xdgcfg.hpp Normal file
View File

@ -0,0 +1,106 @@
/* Copyright © 2019 tastytea <tastytea@tastytea.de>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the BSD-3-Clause license.
*/
#ifndef XDGCFG_HPP
#define XDGCFG_HPP
#if __cplusplus >= 201703L
#include <filesystem>
#else
#include <experimental/filesystem>
#endif
#include <string>
#include <iostream>
#include <cstdint>
#include <libconfig.h++>
#if __cplusplus >= 201703L
namespace fs = std::filesystem;
#else
namespace fs = std::experimental::filesystem;
#endif
using std::string;
using std::uint8_t;
using std::cerr;
using std::endl;
class xdgcfg
{
public:
/*!
* @brief Checks if subdir is present, creates it if necessary
*
* Example:
* @code
* xdgcfg config("test.cfg", "subdirectory");
* @endcode
*
* @param filename The name of the file, including extension
* @param subdir The subdir (optional)
*/
explicit xdgcfg(const string &filename, const string &subdir = "");
/*!
* @brief Read the file
*
* @return 0 on success, 1 on I/O error, 2 on parse error.
*/
uint8_t read();
/*!
* @brief Write the file
*
* @return `true` on success
*/
bool write();
/*!
* @brief Returns a reference to the config as libconfig::Config
*
* Example:
* @code
* libconfig::Config &cfg = config.get_cfg();
* @endcode
*/
libconfig::Config &get_cfg();
/*!
* @brief Returns the complete filepath
*/
const fs::path get_filepath() const;
/*!
* @brief Sets verbosity
*/
void set_verbose(bool verbose);
/*!
* @brief Returns verbosity
*/
bool get_verbose() const;
private:
/*!
* Holds the contents of the CFG file
*/
libconfig::Config _cfg;
/*!
* Complete filepath
*/
fs::path _filepath;
/*!
* Print out error messages if true
*/
bool _verbose;
};
/*!
* @example example.cpp
*/
#endif // XDGCFG_HPP

View File

@ -1,7 +1,7 @@
= whyblocked(1) = whyblocked(1)
:Author: tastytea :Author: tastytea
:Email: tastytea@tastytea.de :Email: tastytea@tastytea.de
:Date: 2019-01-20 :Date: 2019-04-12
:Revision: 0.0.0 :Revision: 0.0.0
:man source: Whyblocked :man source: Whyblocked
:man version: {revision} :man version: {revision}
@ -24,6 +24,14 @@ Apart from the obvious method, you can add entries by dropping the link to a
profile into the main window. In the "Add entry" dialog, you can add receipts by profile into the main window. In the "Add entry" dialog, you can add receipts by
dropping links or text into the receipts list. dropping links or text into the receipts list.
== FILES
- *Configuration file*: `${XDG_CONFIG_HOME}/whyblocked.cfg`
- *Database*: `${XDG_DATA_HOME}/whyblocked/database.sqlite`
`${XDG_CONFIG_HOME}` is usually `~/.config` and `${XDG_DATA_HOME}` is usually
`~/.local/share`
== REPORTING BUGS == REPORTING BUGS
Bugtracker: https://schlomp.space/tastytea/whyblocked/issues Bugtracker: https://schlomp.space/tastytea/whyblocked/issues

1
xdgcfg

@ -1 +0,0 @@
Subproject commit e22f82fc6f1c40cda3d3ce5e671299f26f622528