diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-09-14 12:00:03 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-09-14 12:00:03 +0200 |
commit | 0c370d056fe0848c8a9cf11c48e423f3f2e97264 (patch) | |
tree | d68548fb60758c0f027cb7ca024a9e1e290321fd | |
parent | 71a46a05f30f6f02186ba2a03b29fae37bf9e585 (diff) |
Use options parsing from database instead of our own
-rw-r--r-- | build/import/cli/LICENSE | 21 | ||||
-rw-r--r-- | build/import/cli/cli-cxx.make | 45 | ||||
-rw-r--r-- | build/import/cli/configuration-rules.make | 15 | ||||
-rwxr-xr-x | build/import/cli/configure | 55 | ||||
-rw-r--r-- | build/import/cli/stub.make | 30 | ||||
-rw-r--r-- | libcommon/common/common.cxx | 55 | ||||
-rw-r--r-- | libcommon/common/common.hxx | 2 | ||||
-rw-r--r-- | libcommon/common/makefile | 42 | ||||
-rw-r--r-- | libcommon/common/options.cli | 58 |
9 files changed, 28 insertions, 295 deletions
diff --git a/build/import/cli/LICENSE b/build/import/cli/LICENSE deleted file mode 100644 index db16aa3..0000000 --- a/build/import/cli/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2009-2010 Code Synthesis Tools CC. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/build/import/cli/cli-cxx.make b/build/import/cli/cli-cxx.make deleted file mode 100644 index cb60d37..0000000 --- a/build/import/cli/cli-cxx.make +++ /dev/null @@ -1,45 +0,0 @@ -# file : build/import/cli/cli-cxx.make -# author : Boris Kolpackov <boris@codesynthesis.com> -# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -# license : MIT; see accompanying LICENSE file - -# Here we are operating in the importing project's space, not in -# cli's. -# - -# Get the C++ file extensions. -# -$(call include,$(bld_root)/cxx/configuration-static.make) - -cli_pattern := \ -$(out_base)/%.$(cxx_s_suffix) \ -$(out_base)/%.$(cxx_h_suffix) \ -$(out_base)/%.$(cxx_i_suffix) - -$(cli_pattern): cli_options := \ ---hxx-suffix .$(cxx_h_suffix) \ ---ixx-suffix .$(cxx_i_suffix) \ ---cxx-suffix .$(cxx_s_suffix) - -.PRECIOUS: $(cli_pattern) - -ifeq ($(out_base),$(src_base)) - -$(cli_pattern): $(src_base)/%.cli - $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<) - -else - -$(cli_pattern): $(src_base)/%.cli | $$(dir $$@). - $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<) - -$(cli_pattern): $(out_base)/%.cli | $$(dir $$@). - $(call message,cli $<,$(cli) $(cli_options) --output-dir $(dir $@) $<) -endif - -.PHONY: $(out_base)/%.cxx.cli.clean - -$(out_base)/%.cxx.cli.clean: - $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_s_suffix))) - $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_h_suffix))) - $(call message,rm $$1,rm -f $$1,$(@:.cxx.cli.clean=.$(cxx_i_suffix))) diff --git a/build/import/cli/configuration-rules.make b/build/import/cli/configuration-rules.make deleted file mode 100644 index 52c334d..0000000 --- a/build/import/cli/configuration-rules.make +++ /dev/null @@ -1,15 +0,0 @@ -# file : build/import/cli/configuration-rules.make -# author : Boris Kolpackov <boris@codesynthesis.com> -# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -# license : MIT; see accompanying LICENSE file - -$(dcf_root)/import/cli/configuration-dynamic.make: | $(dcf_root)/import/cli/. - $(call message,,$(scf_root)/import/cli/configure $@) - -ifndef %foreign% - -$(dcf_root)/.disfigure:: - $(call message,rm $(dcf_root)/import/cli/configuration-dynamic.make,\ -rm -f $(dcf_root)/import/cli/configuration-dynamic.make) - -endif diff --git a/build/import/cli/configure b/build/import/cli/configure deleted file mode 100755 index 21a09c5..0000000 --- a/build/import/cli/configure +++ /dev/null @@ -1,55 +0,0 @@ -#! /usr/bin/env bash - -# file : build/import/cli/configure -# author : Boris Kolpackov <boris@codesynthesis.com> -# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -# license : MIT; see accompanying LICENSE file - - -# $1 - out file -# -# bld_root - build root -# project_name - project name -# - -source $bld_root/dialog.bash - - -$echo -$echo "Configuring external dependency on 'cli' for '$project_name'." -$echo - -$echo -$echo "Would you like to configure dependency on the installed " -$echo "version of 'cli' as opposed to the development build?" -$echo - -installed=`read_y_n y` - -path= - -if [ "$installed" = "n" ]; then - -$echo -$echo "Please enter the src_root for 'cli'." -$echo - -src_root=`read_path --directory --exist` - -$echo -$echo "Please enter the out_root for 'cli'." -$eche - -out_root=`read_path --directory $src_root` - -fi - -echo cli_installed := $installed >$1 - -if [ "$installed" = "n" ]; then - -echo src_root := $src_root >>$1 -echo scf_root := \$\(src_root\)/build >>$1 -echo out_root := $out_root >>$1 - -fi diff --git a/build/import/cli/stub.make b/build/import/cli/stub.make deleted file mode 100644 index 250a5ee..0000000 --- a/build/import/cli/stub.make +++ /dev/null @@ -1,30 +0,0 @@ -# file : build/import/cli/stub.make -# author : Boris Kolpackov <boris@codesynthesis.com> -# copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -# license : MIT; see accompanying LICENSE file - -$(call include-once,$(scf_root)/import/cli/configuration-rules.make,$(dcf_root)) - -cli_installed := - -$(call -include,$(dcf_root)/import/cli/configuration-dynamic.make) - -ifdef cli_installed - -ifeq ($(cli_installed),y) - -$(call export,cli: cli,cli-rules: $(scf_root)/import/cli/cli-cxx.make) - -else - -# Include export stub. -# -$(call include,$(scf_root)/export/cli/stub.make) - -endif - -else - -.NOTPARALLEL: - -endif diff --git a/libcommon/common/common.cxx b/libcommon/common/common.cxx index ed8be69..730b8ce 100644 --- a/libcommon/common/common.cxx +++ b/libcommon/common/common.cxx @@ -10,58 +10,39 @@ # include <common/config.h> #endif -#ifdef DB_ID_MYSQL +#if defined(DB_ID_MYSQL) # include <odb/mysql/database.hxx> # include <odb/mysql/connection-factory.hxx> +#else +# error unknown database #endif #include <common/common.hxx> -#include <common/options.hxx> using namespace std; using namespace odb; auto_ptr<database> -create_database (int argc, char* argv[], size_t max_connections) +create_database (int& argc, char* argv[], size_t max_connections) { - try + if (argc > 1 && argv[1] == string ("--help")) { -#ifdef DB_ID_MYSQL - cli::argv_file_scanner scan (argc, argv, "--options-file"); - cli::mysql_options ops (scan); + cerr << "Usage: " << argv[0] << " [options]" << endl + << "Options:" << endl; - if (ops.help ()) - { - cerr << "Usage: " << argv[0] << " [options]" << endl - << "Options:" << endl; - cli::mysql_options::print_usage (cerr); - exit (0); - } +#if defined(DB_ID_MYSQL) + mysql::database::print_usage (cerr); +#endif - auto_ptr<mysql::connection_factory> f; + exit (0); + } - if (max_connections != 0) - f.reset (new mysql::connection_pool_factory (max_connections)); +#if defined(DB_ID_MYSQL) + auto_ptr<mysql::connection_factory> f; - return auto_ptr<database> ( - new mysql::database ( - ops.user (), - ops.password_specified () ? &ops.password () : 0, - ops.database (), - ops.host (), - ops.port (), - ops.socket_specified () ? &ops.socket () : 0, - 0, - f)); -#else - return auto_ptr<database> (0); -#endif - } - catch (const cli::exception& e) - { - cerr << e.what () << endl; - exit (1); - } + if (max_connections != 0) + f.reset (new mysql::connection_pool_factory (max_connections)); - return auto_ptr<database> (0); + return auto_ptr<database> (new mysql::database (argc, argv, false, 0, f)); +#endif } diff --git a/libcommon/common/common.hxx b/libcommon/common/common.hxx index 57069dc..2a02a12 100644 --- a/libcommon/common/common.hxx +++ b/libcommon/common/common.hxx @@ -14,6 +14,6 @@ #include <common/export.hxx> LIBCOMMON_EXPORT std::auto_ptr<odb::database> -create_database (int argc, char* argv[], std::size_t max_connections = 0); +create_database (int& argc, char* argv[], std::size_t max_connections = 0); #endif // LIBCOMMON_COMMON_COMMON_HXX diff --git a/libcommon/common/makefile b/libcommon/common/makefile index 27e0bf2..41bb776 100644 --- a/libcommon/common/makefile +++ b/libcommon/common/makefile @@ -5,12 +5,9 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make -# Options file. -# -cli_tun := options.cli cxx_tun := common.cxx -cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(cli_tun:.cli=.o)) +cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) cxx_od := $(cxx_obj:.o=.o.d) common.l := $(out_base)/common.l @@ -23,10 +20,6 @@ clean := $(out_base)/.clean # Import. # $(call import,\ - $(scf_root)/import/cli/stub.make,\ - cli: cli,cli-rules: cli_rules) - -$(call import,\ $(scf_root)/import/libodb/stub.make,\ l: odb.l,cpp-options: odb.l.cpp-options) @@ -48,18 +41,6 @@ $(cxx_obj) $(cxx_od): $(common.l.cpp-options) $(out_base)/config.h $(common.l.cpp-options): value := -I$(out_root)/libcommon -I$(src_root)/libcommon $(common.l.cpp-options): $(odb_db.l.cpp-options) $(odb.l.cpp-options) -genf := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) $(cli_tun:.cli=.cxx) -gen := $(addprefix $(out_base)/,$(genf)) - -$(gen): $(cli) -$(gen): cli := $(cli) -$(gen): cli_options += \ ---generate-specifier \ ---generate-file-scanner \ ---guard-prefix LIBCOMMON_COMMON - -$(call include-dep,$(cxx_od),$(cxx_obj),$(gen)) - $(out_base)/config.h: $(dcf_root)/configuration-dynamic.make @echo '// file : libcommon/config.h' >$@ @echo '// author : automatically generated' >>$@ @@ -73,26 +54,23 @@ endif @echo '' >>$@ @echo '#endif // LIBCOMMON_COMMON_CONFIG_H' >>$@ +$(call include-dep,$(cxx_od),$(cxx_obj),$(out_base)/config.h) + # Convenience alias for default target. # $(out_base)/: $(common.l) # Dist. # -$(dist): sources_dist := $(cxx_tun) -$(dist): export sources := $(sources_dist) $(cli_tun:.cli=.cxx) -$(dist): headers_dist = $(subst $(src_base)/,,$(shell find $(src_base) \ +$(dist): export sources := $(cxx_tun) +$(dist): export headers = $(subst $(src_base)/,,$(shell find $(src_base) \ -name '*.hxx' -o -name '*.ixx' -o -name '*.txx')) -$(dist): gen_headers := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) -$(dist): export headers = $(sort $(headers_dist) $(gen_headers)) -$(dist): gen_dist := $(gen) -$(dist): data_dist := $(cli_tun) config.h.in +$(dist): data_dist := config.h.in $(dist): export extra_dist := $(data_dist) $(call vc9projs,libcommon) \ $(call vc10projs,libcommon) -$(dist): $(gen) - $(call dist-data,$(sources_dist) $(headers_dist) $(data_dist)) - $(call dist-data,$(gen_dist)) +$(dist): + $(call dist-data,$(sources) $(headers) $(data_dist)) $(call meta-automake) $(call meta-vc9projs,libcommon) $(call meta-vc10projs,libcommon) @@ -103,7 +81,6 @@ $(clean): $(common.l).o.clean \ $(common.l.cpp-options).clean \ $(addsuffix .cxx.clean,$(cxx_obj)) \ $(addsuffix .cxx.clean,$(cxx_od)) \ - $(addprefix $(out_base)/,$(cli_tun:.cli=.cxx.cli.clean)) $(call message,rm $$1,rm -f $$1,$(out_base)/config.h) # Generated .gitignore. @@ -111,7 +88,7 @@ $(clean): $(common.l).o.clean \ ifeq ($(out_base),$(src_base)) $(common.l): | $(out_base)/.gitignore -$(out_base)/.gitignore: files := config.h $(genf) +$(out_base)/.gitignore: files := config.h $(clean): $(out_base)/.gitignore.clean $(call include,$(bld_root)/git/gitignore.make) @@ -124,7 +101,6 @@ $(call include,$(bld_root)/meta/vc9proj.make) $(call include,$(bld_root)/meta/vc10proj.make) $(call include,$(bld_root)/meta/automake.make) -$(call include,$(cli_rules)) $(call include,$(bld_root)/cxx/cxx-d.make) $(call include,$(bld_root)/cxx/cxx-o.make) $(call include,$(bld_root)/cxx/o-l.make) diff --git a/libcommon/common/options.cli b/libcommon/common/options.cli deleted file mode 100644 index b5db026..0000000 --- a/libcommon/common/options.cli +++ /dev/null @@ -1,58 +0,0 @@ -// file : libcommon/common/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>; - -namespace cli -{ - class mysql_options - { - bool --help {"Print usage information and exit."}; - - std::string --user - { - "<name>", - "MySQL database user." - }; - - std::string --password - { - "<str>", - "MySQL database password" - }; - - std::string --database - { - "<name>", - "MySQL database name." - }; - - std::string --host - { - "<addr>", - "MySQL database host name or address (localhost by default)." - }; - - unsigned int --port = 0 - { - "<integer>", - "MySQL database port number." - }; - - std::string --socket - { - "<name>", - "MySQL database socket name." - }; - - std::string --options-file - { - "<file>", - "Read additional options from <file>. Each option appearing on a separate - line optionally followed by space and an option value. Empty lines and - lines starting with \cb{#} are ignored." - }; - }; -} |