diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3cd9a1b..11549ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,22 +1,27 @@ image: danger89/gtk3-docker-cmake-ninja:2.1 +stages: + - build + - test + - upload + - release + variables: GIT_SUBMODULE_STRATEGY: recursive - -static_code_analysis: - script: ./check.sh + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/dweb-browser/${CI_COMMIT_TAG}" doxygen: - #stage: analysis - before_script: - - mkdir -p build/docs - script: - - doxygen docs/Doxyfile - artifacts: - paths: - - build/docs/html/ + stage: build + before_script: + - mkdir -p build/docs + script: + - doxygen docs/Doxyfile + artifacts: + paths: + - build/docs/html/ build: + stage: build script: ./scripts/build_prod.sh artifacts: name: "Packages" @@ -25,9 +30,43 @@ build: - build_prod/browser-*.deb - build_prod/browser-*.rpm - build_prod/browser-*.tar.gz - cache: - key: "$CI_PIPELINE_ID" - paths: - - build_prod/bin - policy: push + after_script: + - echo "JOB_ID=$CI_JOB_ID" >> job.env + artifacts: + reports: + dotenv: job.env + +static_code_analysis: + stage: test + script: ./check.sh + +#unit_test: +# stage: test +# script : + +upload: + stage: upload + image: curlimages/curl:latest + rules: + - if: $CI_COMMIT_TAG + script: + - 'curl --location --output Packages.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${JOB_ID}/artifacts?job_token=${CI_JOB_TOKEN}' + - unzip Packages.zip + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build_prod/browser-v${CI_COMMIT_TAG}.deb ${PACKAGE_REGISTRY_URL}/browser-v${CI_COMMIT_TAG}.deb' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build_prod/browser-v${CI_COMMIT_TAG}.rpm ${PACKAGE_REGISTRY_URL}/browser-v${CI_COMMIT_TAG}.rpm' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file build_prod/browser-v${CI_COMMIT_TAG}.tar.gz ${PACKAGE_REGISTRY_URL}/browser-v${CI_COMMIT_TAG}.tar.gz' + +release: + # Caution, as of 2021-02-02 these assets links require a login, see: + # https://gitlab.com/gitlab-org/gitlab/-/issues/299384 + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_TAG + script: + - | + release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \ + --assets-link "{\"name\":\"DWeb Browser (Debian/Ubuntu/Linux Mint)\",\"url\":\"${PACKAGE_REGISTRY_URL}/browser-${CI_COMMIT_TAG}.deb\"}" \ + --assets-link "{\"name\":\"DWeb Browser (Red-Hat/Fedora/openSUSE)\",\"url\":\"${PACKAGE_REGISTRY_URL}/browser-${CI_COMMIT_TAG}.rpm\"}" \ + --assets-link "{\"name\":\"DWeb Browser (Compressed binary)\",\"url\":\"${PACKAGE_REGISTRY_URL}/browser-${CI_COMMIT_TAG}.tar.gz\"}" diff --git a/.vscode/settings.json b/.vscode/settings.json index 44a2689..1dd3190 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -77,6 +77,7 @@ "*.inc": "cpp", "syntax_extension.h": "c", "render.h": "c", - "node.h": "c" + "node.h": "c", + "*.in": "cpp" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 428c8d3..77f1718 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required (VERSION 3.11.0) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") -# Get VERSION from most recent git tag include(git_version) project (browser diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8604f7b..b180306 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -39,6 +39,8 @@ if(NOT json_POPULATED) add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL) endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/project_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/project_config.h) + if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") # Include CPack packaging settings #include(packaging) diff --git a/src/about.cc b/src/about.cc index 1bd7288..f4197fc 100644 --- a/src/about.cc +++ b/src/about.cc @@ -1,4 +1,5 @@ #include "about.h" +#include "project_config.h" About::About() { @@ -7,7 +8,7 @@ About::About() logo.set("../../images/browser_logo_small.png"); set_program_name("DWeb Browser"); - set_version("0.6.0"); + set_version(PROJECT_VER); set_comments("The fastest decentralized & distributed Browser on planet Earth."); set_logo(logo.get_pixbuf()); set_website("https://melroy.org/"); diff --git a/src/ipfs.cc b/src/ipfs.cc index 834dda4..d2fe1bb 100644 --- a/src/ipfs.cc +++ b/src/ipfs.cc @@ -17,7 +17,10 @@ namespace n_fs = ::std::filesystem; int IPFS::startIPFSDaemon() { // Be sure to kill any running daemons - std::system("killall -q ipfs"); + int res = std::system("killall -q ipfs"); + if (res != 0) { + // ignore + } /// open /dev/null for writing int fd = open("/dev/null", O_WRONLY); diff --git a/src/main.cc b/src/main.cc index cec6ed1..1c8e19d 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,9 +1,31 @@ #include "mainwindow.h" #include "ipfs.h" +#include "project_config.h" +#include #include int main(int argc, char *argv[]) { + // Any arguments provided? + if (argc > 1) + { + int opt; + while ((opt = getopt(argc, argv, ":v")) != EOF) // -v is optional + switch (opt) + { + case 'v': + // Display version, and directly exit the program. + std::cout << "DWeb Browser " << PROJECT_VER << std::endl; + exit(EXIT_SUCCESS); + break; + case 'h': + case '?': // Unknown + fprintf(stderr, "Usuage: browser [-v] \nDecentralized Web Browser\n\nOptions are:\n -v : output version information and exit\n\n"); + exit(EXIT_SUCCESS); + break; + } + } + pid_t child_pid = fork(); if (child_pid == 0) {