aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bdep/new.cxx69
1 files changed, 36 insertions, 33 deletions
diff --git a/bdep/new.cxx b/bdep/new.cxx
index 67d00fe..dc86b72 100644
--- a/bdep/new.cxx
+++ b/bdep/new.cxx
@@ -4,6 +4,8 @@
#include <bdep/new.hxx>
+#include <libbutl/project-name.mxx>
+
#include <bdep/project.hxx>
#include <bdep/project-email.hxx>
#include <bdep/database.hxx>
@@ -16,7 +18,7 @@ using namespace std;
namespace bdep
{
- using bpkg::package_name;
+ using butl::project_name;
using type = cmd_new_type;
using lang = cmd_new_lang;
@@ -83,7 +85,7 @@ namespace bdep
// Validate vcs options.
//
- const vcs& v (o.vcs ());
+ const vcs& vc (o.vcs ());
// Validate argument.
//
@@ -116,6 +118,7 @@ namespace bdep
//
const string& n (pkgn.string ());
const string& b (pkgn.base ());
+ const string& v (pkgn.variable ());
string s (b);
switch (t)
@@ -217,7 +220,7 @@ namespace bdep
//
if (!pkg)
{
- switch (v)
+ switch (vc)
{
case vcs::git: run ("git", "init", "-q", out); break;
case vcs::none: break;
@@ -233,7 +236,7 @@ namespace bdep
//
// See also tests/.gitignore below.
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
// Use POSIX directory separators here.
//
@@ -317,7 +320,7 @@ namespace bdep
// There was also an idea to warn if the project name ends with a digit
// (think libfoo and libfoo2).
//
- optional<string> prjn;
+ optional<project_name> prjn;
if (o.package ())
{
@@ -327,14 +330,14 @@ namespace bdep
{
try
{
- prjn = package_name (move (p)).string (); // Roundtrip.
+ prjn = project_name (move (p));
}
catch (const invalid_argument& e)
{
warn << "project name '" << p << "' is invalid: " << e <<
info << "leaving the 'project' manifest value empty";
- prjn = "";
+ prjn = project_name ();
}
}
}
@@ -348,18 +351,18 @@ namespace bdep
}
os.open (f = out / "manifest");
- os << ": 1" << endl
- << "name: " << n << endl
- << "version: 0.1.0-a.0.z" << endl;
+ os << ": 1" << endl
+ << "name: " << n << endl
+ << "version: 0.1.0-a.0.z" << endl;
if (prjn)
- os << "project: " << *prjn << endl;
- os << "summary: " << s << " " << t << endl
- << "license: TODO" << endl
- << "url: https://example.org/" << (prjn ? *prjn : n) << endl
- << "email: " << email << endl
- << "depends: * build2 >= 0.8.0-" << endl
- << "depends: * bpkg >= 0.8.0-" << endl
- << "#depends: libhello ^1.0.0" << endl;
+ os << "project: " << *prjn << endl;
+ os << "summary: " << s << " " << t << endl
+ << "license: TODO" << endl
+ << "url: https://example.org/" << (prjn ? prjn->string () : n) << endl
+ << "email: " << email << endl
+ << "depends: * build2 >= 0.8.0-" << endl
+ << "depends: * bpkg >= 0.8.0-" << endl
+ << "#depends: libhello ^1.0.0" << endl;
os.close ();
// build/
@@ -425,7 +428,7 @@ namespace bdep
// build/.gitignore
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
os.open (f = bd / ".gitignore");
os << "config.build" << endl
@@ -542,7 +545,7 @@ namespace bdep
// <base>/.gitignore
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
os.open (f = sd / ".gitignore");
os << s << endl;
@@ -733,6 +736,7 @@ namespace bdep
// version.h[??].in
//
os.open (f = sd / ver + ".in");
+
os << "#pragma once" << endl
<< endl
<< "// The numeric version format is AAABBBCCCDDDE where:"<< endl
@@ -754,19 +758,18 @@ namespace bdep
<< "// 3.0.0-b.2 0029999995020" << endl
<< "// 2.2.0-a.1.z 0020019990011" << endl
<< "//" << endl
- //@@ TODO: these need to be sanitized like we do in config.import.*
- << "#define " << m << "_VERSION $" << n << ".version.project_number$ULL" << endl
- << "#define " << m << "_VERSION_STR \"$" << n << ".version.project$\"" << endl
- << "#define " << m << "_VERSION_ID \"$" << n << ".version.project_id$\"" << endl
+ << "#define " << m << "_VERSION $" << v << ".version.project_number$ULL" << endl
+ << "#define " << m << "_VERSION_STR \"$" << v << ".version.project$\"" << endl
+ << "#define " << m << "_VERSION_ID \"$" << v << ".version.project_id$\"" << endl
<< endl
- << "#define " << m << "_VERSION_MAJOR $" << n << ".version.major$" << endl
- << "#define " << m << "_VERSION_MINOR $" << n << ".version.minor$" << endl
- << "#define " << m << "_VERSION_PATCH $" << n << ".version.patch$" << endl
+ << "#define " << m << "_VERSION_MAJOR $" << v << ".version.major$" << endl
+ << "#define " << m << "_VERSION_MINOR $" << v << ".version.minor$" << endl
+ << "#define " << m << "_VERSION_PATCH $" << v << ".version.patch$" << endl
<< endl
- << "#define " << m << "_PRE_RELEASE $" << n << ".version.pre_release$" << endl
+ << "#define " << m << "_PRE_RELEASE $" << v << ".version.pre_release$" << endl
<< endl
- << "#define " << m << "_SNAPSHOT_SN $" << n << ".version.snapshot_sn$ULL" << endl
- << "#define " << m << "_SNAPSHOT_ID \"$" << n << ".version.snapshot_id$\"" << endl;
+ << "#define " << m << "_SNAPSHOT_SN $" << v << ".version.snapshot_sn$ULL" << endl
+ << "#define " << m << "_SNAPSHOT_ID \"$" << v << ".version.snapshot_id$\"" << endl;
os.close ();
// buildfile
@@ -839,7 +842,7 @@ namespace bdep
// <base>/.gitignore
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
os.open (f = sd / ".gitignore");
os << "# Generated version header." << endl
@@ -926,7 +929,7 @@ namespace bdep
// tests/build/.gitignore
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
os.open (f = tbd / ".gitignore");
os << "config.build" << endl
@@ -943,7 +946,7 @@ namespace bdep
// tests/.gitignore
//
- if (v == vcs::git)
+ if (vc == vcs::git)
{
os.open (f = td / ".gitignore");
os << "# Test executables." << endl