Skip to content

Commit 584bd58

Browse files
committed
Use C++17 variant and optional. Improve sw uri run. Implement unidiff patches.
1 parent ba8721e commit 584bd58

36 files changed

Lines changed: 183 additions & 112 deletions

cppan.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ projects:
167167
- pvt.cppan.demo.boost.assign: 1
168168
- pvt.cppan.demo.microsoft.gsl: "*"
169169
private:
170+
- name: pvt.egorpugin.primitives.patch
171+
version: master
172+
local: primitives.patch
170173
- name: tools.self_builder
171174
ref: self_builder
172175
- pvt.cppan.demo.boost.uuid: 1

include/sw/builder/build.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,6 @@ SW_BUILDER_API
4444
bool run(const PackageId &package);
4545

4646
SW_BUILDER_API
47-
optional<String> read_config(const path &file_or_dir);
47+
std::optional<String> read_config(const path &file_or_dir);
4848

4949
}

include/sw/builder/driver.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ struct SW_BUILDER_API Driver
6262
virtual FilesOrdered getAvailableFrontends() const = 0;
6363

6464
/// try to find config in this dir or subdirs
65-
optional<path> findConfig(const path &dir) const;
65+
std::optional<path> findConfig(const path &dir) const;
6666

6767
/// read config from dir
68-
optional<String> readConfig(const path &file_or_dir) const;
68+
std::optional<String> readConfig(const path &file_or_dir) const;
6969

7070
/// only build script file, without loading
7171
///

include/sw/driver/cpp/driver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct SW_DRIVER_CPP_API CppDriver : ::sw::Driver
2828
String getName() const override { return "cpp"; }
2929

3030
private:
31-
optional<path> resolveConfig(const path &file_or_dir) const;
31+
std::optional<path> resolveConfig(const path &file_or_dir) const;
3232
};
3333

3434
} // namespace sw::driver

src/builder/build.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ bool run(const PackageId &package)
143143
throw SW_RUNTIME_ERROR("Unknown package driver");
144144
}
145145

146-
optional<String> read_config(const path &file_or_dir)
146+
std::optional<String> read_config(const path &file_or_dir)
147147
{
148148
auto &drivers = getDrivers();
149149
for (auto &d : drivers)

src/builder/command.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,8 @@ void Command::afterCommand()
438438
fr.data->refreshed = false;
439439
fr.isChanged();
440440
fr.updateLwt();
441+
if (!fs::exists(i))
442+
throw SW_RUNTIME_ERROR("Output file was not created: " + normalize_path(i));
441443
mtime = std::max(mtime, fr.getMaxTime());
442444
};
443445

src/builder/driver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ Drivers &getDrivers()
1515
return drivers;
1616
}
1717

18-
optional<path> Driver::findConfig(const path &dir) const
18+
std::optional<path> Driver::findConfig(const path &dir) const
1919
{
2020
for (auto &fn : getAvailableFrontends())
2121
if (fs::exists(dir / fn))
2222
return dir / fn;
2323
return {};
2424
}
2525

26-
optional<String> Driver::readConfig(const path &file_or_dir) const
26+
std::optional<String> Driver::readConfig(const path &file_or_dir) const
2727
{
2828
auto f = findConfig(file_or_dir);
2929
if (!f)

src/client/client.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,10 @@ static cl::opt<bool> list_overridden_packages("list-overridden-remote-packages",
311311
static cl::opt<String> delete_overridden_package("delete-overridden-remote-package", cl::value_desc("package"), cl::desc("Delete overridden package from index"));
312312
static cl::opt<path> delete_overridden_package_dir("delete-overridden-remote-package-dir", cl::value_desc("sdir"), cl::desc("Delete overridden dir packages"));
313313

314+
// uri commands
315+
extern bool gRunAppInContainer;
316+
static cl::opt<bool, true> run_app_in_container("in-container", cl::desc("Print file with build graph"), cl::location(gRunAppInContainer), cl::sub(subcommand_uri));
317+
314318
extern bool gUseLockFile;
315319

316320
//static cl::list<String> builtin_function("internal-call-builtin-function", cl::desc("Call built-in function"), cl::Hidden);

src/driver/cpp/checks.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ struct SW_DRIVER_CPP_API Check : CommandData<Check>
8383
CheckParameters Parameters;
8484

8585
// result value
86-
mutable optional<CheckValue> Value;
86+
mutable std::optional<CheckValue> Value;
8787

8888
CheckSet *check_set = nullptr;
8989

src/driver/cpp/driver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ FilesOrdered CppDriver::getAvailableFrontends() const
2323
return Build::getAvailableFrontendConfigFilenames();
2424
}
2525

26-
optional<path> CppDriver::resolveConfig(const path &file_or_dir) const
26+
std::optional<path> CppDriver::resolveConfig(const path &file_or_dir) const
2727
{
2828
auto f = file_or_dir;
2929
if (f.empty())

0 commit comments

Comments
 (0)