pressing supports dry runs
This commit is contained in:
		| @@ -7,6 +7,7 @@ | |||||||
| #include "json.hpp" | #include "json.hpp" | ||||||
|  |  | ||||||
| #include "bottles.hpp" | #include "bottles.hpp" | ||||||
|  | #include "cellar.hpp" | ||||||
| #include "internal/bottles.hpp" | #include "internal/bottles.hpp" | ||||||
| #include "launch.hpp" | #include "launch.hpp" | ||||||
| #include "internal/launch.hpp" | #include "internal/launch.hpp" | ||||||
| @@ -24,31 +25,43 @@ void cellar::bottles::press(string exec, vector<string> args, bool noexec) { | |||||||
|     string homedir = getenv("HOME"); |     string homedir = getenv("HOME"); | ||||||
|     string datadir = homedir + "/.local/share/cellar"; |     string datadir = homedir + "/.local/share/cellar"; | ||||||
|     string presseddir = datadir + "/pressed"; |     string presseddir = datadir + "/pressed"; | ||||||
|  |  | ||||||
|  |     output::statement("making sure " + presseddir + " exists", true); | ||||||
|  |     if (!dryrun) { | ||||||
|         if (!boost::filesystem::exists(datadir)) { boost::filesystem::create_directory(datadir); } |         if (!boost::filesystem::exists(datadir)) { boost::filesystem::create_directory(datadir); } | ||||||
|         if (!boost::filesystem::exists(presseddir)) { boost::filesystem::create_directory(presseddir); } |         if (!boost::filesystem::exists(presseddir)) { boost::filesystem::create_directory(presseddir); } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     string filename = boost::filesystem::path(exec).filename().native(); |     string filename = boost::filesystem::path(exec).filename().native(); | ||||||
|     auto pressedpath = boost::filesystem::path(presseddir); |     auto pressedpath = boost::filesystem::path(presseddir); | ||||||
|     string pressedfile = (pressedpath / filename).native(); |     string pressedfile = (pressedpath / filename).native(); | ||||||
|     if (boost::filesystem::exists(pressedfile)) { |     if (boost::filesystem::exists(pressedfile)) { | ||||||
|         output::warning("clobbering existing version of " + filename); |         output::warning("clobbering existing version of " + filename); | ||||||
|         boost::filesystem::remove(pressedfile); |         if (!dryrun) { boost::filesystem::remove(pressedfile); } | ||||||
|     } |     } | ||||||
|     boost::filesystem::copy(exec, pressedfile); |     output::statement("copying " + exec + " to " + pressedfile); | ||||||
|  |     if (!dryrun) { boost::filesystem::copy(exec, pressedfile); } | ||||||
|  |  | ||||||
|     vector<string> argv; |     vector<string> argv; | ||||||
|     argv.push_back("wine"); |     argv.push_back("wine"); | ||||||
|     argv.push_back(pressedfile); |     argv.push_back(pressedfile); | ||||||
|  |  | ||||||
|     if (!noexec) { launch::popen(argv); } |     if (!noexec) {  | ||||||
|  |         output::statement("launching " + pressedfile, true); | ||||||
|  |         if (!dryrun) { launch::popen(argv); } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if (active_bottle.config.find("pressed") == active_bottle.config.end()) { |     if (active_bottle.config.find("pressed") == active_bottle.config.end()) { | ||||||
|         json pressed; |         json pressed; | ||||||
|         active_bottle.config["pressed"] = pressed; |         output::statement("no pressed object in json, creating", true); | ||||||
|  |         if (!dryrun) { active_bottle.config["pressed"] = pressed; } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     output::statement("recording pressed installer", true); | ||||||
|  |     if (!dryrun) { | ||||||
|         active_bottle.config["pressed"].emplace(filename, args); |         active_bottle.config["pressed"].emplace(filename, args); | ||||||
|         active_bottle.save_config(); |         active_bottle.save_config(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cellar::bottles::press_command(int argc, vector<string> argv) { | void cellar::bottles::press_command(int argc, vector<string> argv) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user