aboutsummaryrefslogtreecommitdiff
path: root/bdep/config.hxx
blob: 2b4788af3eb3757d874d3f599555504fe6bf0ee4 (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
// file      : bdep/config.hxx -*- C++ -*-
// license   : MIT; see accompanying LICENSE file

#ifndef BDEP_CONFIG_HXX
#define BDEP_CONFIG_HXX

#include <bdep/types.hxx>
#include <bdep/utility.hxx>

#include <bdep/project.hxx>
#include <bdep/config-options.hxx>

namespace bdep
{
  // If type is nullopt, then assume that an existing configuration is being
  // added. If that's the case, query the bpkg configuration type and links
  // and warn the user if any host or build2 configurations are linked, unless
  // they are already associated with the project. If dry_run is true, then
  // make sure the configuration can be added without path/name/id clash but
  // don't actually add anything, returning NULL.
  //
  shared_ptr<configuration>
  cmd_config_add (const common_options&,
                  const configuration_add_options&,
                  const dir_path&           prj,
                  const package_locations&,
                  database&,
                  dir_path                  path,
                  optional<string>          name,
                  optional<string>          type,
                  optional<uint64_t>        id = nullopt,
                  const char*               what = "added",
                  bool                      dry_run = false);

  // Configuration directory should exist and its path should be absolute and
  // normalized.
  //
  shared_ptr<configuration>
  cmd_config_add (const dir_path&         prj,
                  transaction&,
                  const dir_path&         path,
                  const optional<string>& name,
                  string                  type,
                  bool                    default_ = true,
                  bool                    forward = true,
                  bool                    auto_sync = true,
                  optional<uint64_t>      id = nullopt,
                  bool                    dry_run = false);

  void
  cmd_config_add_print (diag_record&,
                        const dir_path&         prj,
                        const dir_path&,
                        const optional<string>& name,
                        bool                    default_ = true,
                        bool                    forward = true,
                        bool                    auto_sync = true);

  shared_ptr<configuration>
  cmd_config_create (const common_options&,
                     const configuration_add_options&,
                     const dir_path&           prj,
                     const package_locations&,
                     database&,
                     dir_path                  path,
                     const strings&            args,
                     optional<string>          name,
                     string                    type,
                     optional<uint64_t>        id = nullopt);

  // Configuration directory path should be absolute and normalized.
  //
  shared_ptr<configuration>
  cmd_config_create (const common_options&,
                     const dir_path&         prj,
                     transaction&,
                     const dir_path&         path,
                     const optional<string>& name,
                     string                  type,
                     bool                    default_ = true,
                     bool                    forward = true,
                     bool                    auto_sync = true,
                     bool                    existing = false,
                     bool                    wipe = false,
                     const strings&          args = {},
                     optional<uint64_t>      id = nullopt);

  void
  cmd_config_create_print (diag_record&,
                           const dir_path&         prj,
                           const dir_path&,
                           const optional<string>& name,
                           const string&           type,
                           bool                    default_ = true,
                           bool                    forward = true,
                           bool                    auto_sync = true,
                           const strings&          args = {});

  void
  cmd_config_link (const common_options&,
                   const shared_ptr<configuration>&,
                   const shared_ptr<configuration>&);

  int
  cmd_config (cmd_config_options&&, cli::scanner& args);

  // Validate returning one of the options or NULL if none specified.
  //
  const char*
  cmd_config_validate_add (const configuration_add_options&);

  // Validate setting configuration name and/or id if specified.
  //
  void
  cmd_config_validate_add (const configuration_name_options&,
                           const char* what,
                           optional<string>& name,
                           optional<uint64_t>& id);

  default_options_files
  options_files (const char* cmd,
                 const cmd_config_options&,
                 const strings& args);

  cmd_config_options
  merge_options (const default_options<cmd_config_options>&,
                 const cmd_config_options&);
}

#endif // BDEP_CONFIG_HXX