aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--src/main.cpp10
-rw-r--r--src/options.cpp8
-rw-r--r--src/options.h1
-rw-r--r--tests/009-version_option.sh9
5 files changed, 30 insertions, 0 deletions
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 <iostream>
+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;
}
@@ -93,6 +95,12 @@ OptionParser::isHelp(int argc, char **argv)
}
bool
+OptionParser::isVersion(int argc, char **argv)
+{
+ return isOperation(argc, argv, "version");
+}
+
+bool
OptionParser::isBackup(int argc, char **argv)
{
return isOperation(argc, argv, "backup");
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