summaryrefslogtreecommitdiff
path: root/odb/options.cli
blob: ebe65e593c1688a083da7e151cd4eca851fb3554 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// file      : odb/options.cli
// author    : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC
// license   : GNU GPL v2; see accompanying LICENSE file

include <string>;
include <vector>;

include <odb/database.hxx>;

class options
{
  //
  // Wrapper options. These are not passed to the plugin.
  //

  bool --help {"Print usage information and exit."};
  bool --version {"Print version and exit."};

  //
  // Plugin options.
  //
  ::database --database | -d
  {
    "<db>",
    "Generate code for the <db> database. Valid values are \cb{mysql} and
     \cb{tracer}."
  };

  bool --generate-schema
  {
    "Generate database schema. The resulting SQL file creates database
     tables required to store classes defined in the file being compiled.
     Note that all the existing information stored in such tables will be
     lost."
  };

  std::string --output-dir | -o
  {
    "<dir>",
    "Write the generated files to <dir> instead of the current directory."
  };

  std::string --odb-file-suffix = "-odb"
  {
    "<suffix>",
    "Use <suffix> instead of the default \cb{-odb} to construct the names
     of the generated C++ files."
  };

  std::string --hxx-suffix = ".hxx"
  {
    "<suffix>",
    "Use <suffix> instead of the default \cb{.hxx} to construct the name of
     the generated C++ header file."
  };

  std::string --ixx-suffix = ".ixx"
  {
    "<suffix>",
    "Use <suffix> instead of the default \cb{.ixx} to construct the name of
     the generated C++ inline file."
  };

  std::string --cxx-suffix = ".cxx"
  {
    "<suffix>",
    "Use <suffix> instead of the default \cb{.cxx} to construct the name of
     the generated C++ source file."
  };

  std::string --sql-suffix = ".sql"
  {
    "<suffix>",
    "Use <suffix> instead of the default \cb{.sql} to construct the name of
     the generated database schema file."
  };

  bool --include-with-brackets
  {
    "Use angle brackets (<>) instead of quotes (\"\") in the generated
     \cb{#include} directives."
  };

  std::string --include-prefix
  {
    "<prefix>",
    "Add <prefix> to the generated \cb{#include} directive paths."
  };

  std::string --guard-prefix
  {
    "<prefix>",
    "Add <prefix> to the generated header inclusion guards. The prefix is
     transformed to upper case and characters that are illegal in a
     preprocessor macro name are replaced with underscores."
  };

  // This is a "fake" option in that it is actually handled by
  // argv_file_scanner. We have it here to get the documentation.
  //
  std::string --options-file
  {
    "<file>",
    "Read additional options from <file> with each option appearing on a
     separate line optionally followed by space and an option value. Empty
     lines and lines starting with \cb{#} are ignored. Option values can
     be enclosed in double (\cb{\"}) or single (\cb{'}) quotes  to preserve
     leading and trailing whitespaces as well as to specify empty values.
     If the value itself contains trailing or leading quotes, enclose it
     with an extra pair of quotes, for example \cb{'\"x\"'}. Non-leading
     and non-trailing quotes are interpreted as being part of the option
     value.

     The semantics of providing options in a file is equivalent to providing
     the same set of options in the same order on the command line at the
     point where the \cb{--options-file} option is specified except that
     the shell escaping and quoting is not required. Repeat this option
     to specify more than one options files."
  };

  bool --trace {"Trace the compilation process."};

  //
  // MySQL-specific options.
  //

  std::string --mysql-engine = "InnoDB"
  {
    "<engine>",
    "Use <engine> instead of the default \cb{InnoDB} in the generated
     database schema file. For more information on the storage engine
     options see the MySQL documentation. If you would like to use the
     database-default engine, pass \cb{default} as the value for this
     option."
  };
};