winetricks support
This commit is contained in:
parent
26dc361eec
commit
70fa9f4cf7
@ -12,6 +12,8 @@ using namespace cellar::commands;
|
||||
|
||||
namespace cellar {
|
||||
namespace launch {
|
||||
extern void popen(string);
|
||||
|
||||
/*[[[cog
|
||||
import cog
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
launch launch_command Launch a program in WINE.
|
||||
winecfg launch_winecfg Launch winecfg.
|
||||
regedit launch_regedit Launch regedit.
|
||||
winetricks winetricks Launch winetricks.
|
||||
|
@ -15,10 +15,9 @@ using namespace cellar;
|
||||
void cellar::launch::launch_program(vector<string> args) {
|
||||
vector<string> wineargs = args;
|
||||
wineargs[0] = "wine";
|
||||
|
||||
|
||||
string winelaunch = boost::algorithm::join(wineargs, " ");
|
||||
auto wine = subprocess::Popen(winelaunch);
|
||||
wine.wait();
|
||||
launch::popen(winelaunch);
|
||||
}
|
||||
|
||||
void cellar::launch::launch_command(int argc, vector<string> args) {
|
||||
@ -28,3 +27,9 @@ void cellar::launch::launch_command(int argc, vector<string> args) {
|
||||
}
|
||||
launch::launch_program(args);
|
||||
}
|
||||
|
||||
// BULLSHIT: subprocess.hpp throws linker errors if included in multiple files
|
||||
void cellar::launch::popen(string argv) {
|
||||
auto wine = subprocess::Popen(argv);
|
||||
wine.wait();
|
||||
}
|
||||
|
39
src/launch/winetricks.cpp
Normal file
39
src/launch/winetricks.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/algorithm/string/join.hpp>
|
||||
// linker claims the one time in launch.cpp was enough, we'll believe it
|
||||
//#include "subprocess.hpp"
|
||||
|
||||
#include "bottles.hpp"
|
||||
#include "cellar.hpp"
|
||||
#include "launch.hpp"
|
||||
#include "internal/launch.hpp"
|
||||
#include "output.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace cellar;
|
||||
|
||||
void cellar::launch::winetricks(int argc, vector<string> argv) {
|
||||
if (argc == 1) {
|
||||
output::error("");
|
||||
return;
|
||||
}
|
||||
|
||||
auto winetricks_argv = argv;
|
||||
winetricks_argv[0] = "winetricks";
|
||||
string winetricks_str = boost::algorithm::join(winetricks_argv, " ");
|
||||
//output::statement(winetricks_str);
|
||||
launch::popen(winetricks_str);
|
||||
|
||||
if (cellar::active_bottle.config.find("winetricks") == cellar::active_bottle.config.end()) {
|
||||
cellar::active_bottle.config.emplace("winetricks", vector<string>());
|
||||
}
|
||||
for (string winetrick : winetricks_argv) {
|
||||
if (winetrick == "winetricks") { continue; }
|
||||
else if (winetrick.substr(0,1) == "-") { continue; } // opts don't get saved
|
||||
else { cellar::active_bottle.config["winetricks"].push_back(winetrick); }
|
||||
}
|
||||
|
||||
cellar::active_bottle.save_config();
|
||||
}
|
Loading…
Reference in New Issue
Block a user