From cbf5629a2cfde155924d2a173111cc473f30b693 Mon Sep 17 00:00:00 2001 From: Jan Sucan Date: Sat, 18 Jan 2025 14:26:31 +0100 Subject: Add version command line option --- README.md | 2 ++ src/main.cpp | 10 ++++++++++ src/options.cpp | 8 ++++++++ src/options.h | 1 + tests/009-version_option.sh | 9 +++++++++ 5 files changed, 30 insertions(+) create mode 100644 tests/009-version_option.sh diff --git a/README.md b/README.md index 1b07d13..480b2df 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ utility. > diff-dd help +> diff-dd version + > diff-dd backup [-B BUFFER_SIZE] -i INFILE -b BASEFILE -o OUTFILE > diff-dd restore [-B BUFFER_SIZE] -d DIFFFILE -o OUTFILE diff --git a/src/main.cpp b/src/main.cpp index 8f6dac5..9b74c08 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,14 +29,24 @@ #include "options.h" #include "restore.h" +#include "program_info.h" + #include +void +print_version() +{ + std::cout << PROGRAM_NAME_STR << " " << PROGRAM_VERSION_STR << std::endl; +} + int main(int argc, char **argv) { try { if (OptionParser::isHelp(argc, argv)) { OptionParser::printUsage(); + } else if (OptionParser::isVersion(argc, argv)) { + print_version(); } else if (OptionParser::isBackup(argc, argv)) { backup(OptionParser::parseBackup(argc, argv)); } else if (OptionParser::isRestore(argc, argv)) { diff --git a/src/options.cpp b/src/options.cpp index c44fd06..a5912b6 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -83,6 +83,8 @@ OptionParser::printUsage() std::cout << " Or: " << PROGRAM_NAME_STR << " restore"; std::cout << "[-B BUFFER_SIZE] -d DIFFFILE -o OUTFILE" << std::endl; + std::cout << " Or: " << PROGRAM_NAME_STR << " version" << std::endl; + std::cout << " Or: " << PROGRAM_NAME_STR << " help" << std::endl; } @@ -92,6 +94,12 @@ OptionParser::isHelp(int argc, char **argv) return isOperation(argc, argv, "help"); } +bool +OptionParser::isVersion(int argc, char **argv) +{ + return isOperation(argc, argv, "version"); +} + bool OptionParser::isBackup(int argc, char **argv) { diff --git a/src/options.h b/src/options.h index 80cb8f8..ba7e7ac 100644 --- a/src/options.h +++ b/src/options.h @@ -90,6 +90,7 @@ class OptionParser public: static void printUsage(); static bool isHelp(int argc, char **argv); + static bool isVersion(int argc, char **argv); static bool isBackup(int argc, char **argv); static bool isRestore(int argc, char **argv); ; diff --git a/tests/009-version_option.sh b/tests/009-version_option.sh new file mode 100644 index 0000000..2dc32f5 --- /dev/null +++ b/tests/009-version_option.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +source ./assert.sh + +PROGRAM_EXEC="$1" + +assert "diff-dd 3.0.0-prealpha" "" 0 $PROGRAM_EXEC version + +exit 0 -- cgit v1.2.3