@@ -21,6 +21,7 @@ class prog_args
2121 int compression_level_ = -1 ;
2222 std::uint16_t block_size_ = default_block_size;
2323 bool help_ = false ;
24+ bool version_ = false ;
2425 savvy::fmt format_ = savvy::fmt::allele;
2526public:
2627 prog_args () :
@@ -29,6 +30,7 @@ class prog_args
2930 {" block-size" , required_argument, 0 , ' b' },
3031 {" format" , required_argument, 0 , ' f' },
3132 {" help" , no_argument, 0 , ' h' },
33+ {" version" , no_argument, 0 , ' v' },
3234 {0 , 0 , 0 , 0 }
3335 })
3436 {
@@ -40,6 +42,7 @@ class prog_args
4042 std::uint16_t block_size () const { return block_size_; }
4143 savvy::fmt format () const { return format_; }
4244 bool help_is_set () const { return help_; }
45+ bool version_is_set () const { return version_; }
4346
4447 void print_usage (std::ostream& os)
4548 {
@@ -50,6 +53,7 @@ class prog_args
5053 os << " -b, --block-size : Number of markers in compression block (0-65535, default: " << default_block_size << " )\n " ;
5154 os << " -f, --format : Format field to copy (GT or GP, default: GT)\n " ;
5255 os << " -h, --help : Print usage\n " ;
56+ os << " -v, --version : Print version\n " ;
5357 os << " ----------------------------------------------\n " ;
5458 os << std::flush;
5559 }
@@ -58,7 +62,7 @@ class prog_args
5862 {
5963 int long_index = 0 ;
6064 int opt = 0 ;
61- while ((opt = getopt_long (argc, argv, " 0123456789b:f:h " , long_options_.data (), &long_index )) != -1 )
65+ while ((opt = getopt_long (argc, argv, " 0123456789b:f:hv " , long_options_.data (), &long_index )) != -1 )
6266 {
6367 std::string str_opt_arg (optarg ? optarg : " " );
6468 char copt = char (opt & 0xFF );
@@ -96,6 +100,9 @@ class prog_args
96100 case ' h' :
97101 help_ = true ;
98102 break ;
103+ case ' v' :
104+ version_ = true ;
105+ break ;
99106 default :
100107 return false ;
101108 }
@@ -149,6 +156,12 @@ int main(int argc, char** argv)
149156 return EXIT_SUCCESS;
150157 }
151158
159+ if (args.version_is_set ())
160+ {
161+ std::cout << " vcf2sav v" << savvy::version << std::endl;
162+ return EXIT_SUCCESS;
163+ }
164+
152165 savvy::vcf::reader<1 > input (args.input_path (), args.format ());
153166
154167 if (input.good ())
0 commit comments