consolidated command plumbing into one cogfile
This commit is contained in:
parent
d5ec9071ff
commit
f83b5eb6d4
@ -11,16 +11,18 @@
|
|||||||
using namespace cellar::commands;
|
using namespace cellar::commands;
|
||||||
|
|
||||||
namespace cellar {
|
namespace cellar {
|
||||||
namespace commands {
|
namespace core {
|
||||||
/*[[[cog
|
/*[[[cog
|
||||||
import cog
|
import cog
|
||||||
|
|
||||||
with open("src/commands.txt") as commandsfile:
|
with open("src/core/commands.txt") as commandsfile:
|
||||||
for line in commandsfile:
|
for line in commandsfile:
|
||||||
item = line.strip().split(" ")
|
item = line.strip().split(" ")
|
||||||
cog.outl("extern void {0} (int, vector<string>);".format(item[1]))
|
cog.outl("extern void {0} (int, vector<string>);".format(item[1]))
|
||||||
]]]*/
|
]]]*/
|
||||||
//[[[end]]]
|
//[[[end]]]
|
||||||
|
}
|
||||||
|
namespace commands {
|
||||||
extern map<string, cellar::commands::CommandFunction> core_commands();
|
extern map<string, cellar::commands::CommandFunction> core_commands();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
// vim: filetype=cpp :
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "bottles.hpp"
|
|
||||||
#include "internal/bottles.hpp"
|
|
||||||
#include "commands.hpp"
|
|
||||||
#include "help.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace cellar::bottles;
|
|
||||||
using namespace cellar::commands;
|
|
||||||
|
|
||||||
map<string, CommandFunction> cellar::commands::bottles_commands() {
|
|
||||||
map<string, CommandFunction> result;
|
|
||||||
/*[[[cog
|
|
||||||
import cog
|
|
||||||
import os
|
|
||||||
|
|
||||||
with open("src/bottles/commands.txt") as commandfile:
|
|
||||||
for line in commandfile:
|
|
||||||
linesplit = line.strip().split(" ")
|
|
||||||
name = linesplit[0]
|
|
||||||
func = linesplit[1]
|
|
||||||
|
|
||||||
cog.outl("result.insert(pair<string,CommandFunction>(\"{0}\", &{1}));".format(name, func))
|
|
||||||
|
|
||||||
if (len(linesplit) > 2):
|
|
||||||
desc = " ".join(linesplit[2:]) # Rest of line assumed to be description
|
|
||||||
cog.outl("cellar::help::set_description(\"{0}\", \"{1}\");"
|
|
||||||
.format(name, desc
|
|
||||||
.replace("\\", "\\\\")
|
|
||||||
.replace("\"", "\\\"")))
|
|
||||||
# the replace methods escape " and \ characters
|
|
||||||
else:
|
|
||||||
print("-- No description is available for the {0} command.".format(name))
|
|
||||||
|
|
||||||
if os.path.exists("src/bottles/help/" + name):
|
|
||||||
cog.out("cellar::help::set_details(\"{0}\", R\"(".format(name))
|
|
||||||
with open("src/bottles/help/" + name) as detailsfile:
|
|
||||||
for detail in detailsfile:
|
|
||||||
cog.out(detail, trimblanklines=True)
|
|
||||||
cog.out(")\");")
|
|
||||||
else:
|
|
||||||
print("-- No details are available for the {0} command.".format(name))
|
|
||||||
]]]*/
|
|
||||||
//[[[end]]]
|
|
||||||
return result;
|
|
||||||
}
|
|
@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
#include "commands.hpp"
|
#include "commands.hpp"
|
||||||
#include "internal/core.hpp"
|
#include "internal/core.hpp"
|
||||||
|
#include "internal/bottles.hpp"
|
||||||
|
#include "internal/launch.hpp"
|
||||||
#include "cellar.hpp"
|
#include "cellar.hpp"
|
||||||
#include "help.hpp"
|
#include "help.hpp"
|
||||||
|
|
||||||
@ -21,19 +23,29 @@ vector<string> cellar::commands::list_commands() {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
map<string, CommandFunction> cellar::commands::core_commands() {
|
|
||||||
map<string, CommandFunction> result;
|
|
||||||
/*[[[cog
|
/*[[[cog
|
||||||
import cog
|
import cog
|
||||||
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
with open("src/commands.txt") as commandfile:
|
def recurs_command_plumbing(dirname):
|
||||||
|
print(" -- Recursing into", dirname)
|
||||||
|
for diritem in os.listdir(dirname):
|
||||||
|
itempath = os.path.join(dirname, diritem)
|
||||||
|
if os.path.isdir(itempath):
|
||||||
|
recurs_command_plumbing(itempath)
|
||||||
|
elif diritem == "commands.txt":
|
||||||
|
print(" -- Found commands file in", dirname + ", processing...")
|
||||||
|
base = os.path.basename(dirname)
|
||||||
|
cog.outl("map<string, CommandFunction> cellar::commands::{0}_commands() ".format(base) + "{")
|
||||||
|
cog.outl(" map<string, CommandFunction> result;")
|
||||||
|
with open(os.path.join(dirname, "commands.txt")) as commandfile:
|
||||||
for line in commandfile:
|
for line in commandfile:
|
||||||
linesplit = line.strip().split(" ")
|
linesplit = line.strip().split(" ")
|
||||||
name = linesplit[0]
|
name = linesplit[0]
|
||||||
func = linesplit[1]
|
func = linesplit[1]
|
||||||
|
|
||||||
cog.outl("result.insert(pair<string,CommandFunction>(\"{0}\", &{1}));".format(name, func))
|
cog.outl("result.insert(pair<string,CommandFunction>(\"{0}\", &{2}::{1}));".format(name, func, base))
|
||||||
|
|
||||||
if (len(linesplit) > 2):
|
if (len(linesplit) > 2):
|
||||||
desc = " ".join(linesplit[2:]) # Rest of line assumed to be description
|
desc = " ".join(linesplit[2:]) # Rest of line assumed to be description
|
||||||
@ -45,15 +57,17 @@ map<string, CommandFunction> cellar::commands::core_commands() {
|
|||||||
else:
|
else:
|
||||||
print("-- No description is available for the {0} command.".format(name))
|
print("-- No description is available for the {0} command.".format(name))
|
||||||
|
|
||||||
if os.path.exists("src/help/" + name):
|
if os.path.exists("src/{0}/help/{1}".format(base, name)):
|
||||||
cog.out("cellar::help::set_details(\"{0}\", R\"(".format(name))
|
cog.out("cellar::help::set_details(\"{0}\", R\"(".format(name))
|
||||||
with open("src/help/" + name) as detailsfile:
|
with open("src/{0}/help/{1}".format(base, name)) as detailsfile:
|
||||||
for detail in detailsfile:
|
for detail in detailsfile:
|
||||||
cog.out(detail, trimblanklines=True)
|
cog.out(detail, trimblanklines=True)
|
||||||
cog.out(")\");")
|
cog.out(")\");")
|
||||||
else:
|
else:
|
||||||
print("-- No details are available for the {0} command.".format(name))
|
print("-- No details are available for the {0} command.".format(name))
|
||||||
|
cog.outl(" return result;")
|
||||||
|
cog.outl("}")
|
||||||
|
|
||||||
|
recurs_command_plumbing("src")
|
||||||
]]]*/
|
]]]*/
|
||||||
//[[[end]]]
|
//[[[end]]]
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace cellar;
|
using namespace cellar;
|
||||||
|
|
||||||
void cellar::commands::help_command(int argc, vector<string> argv) {
|
void cellar::core::help_command(int argc, vector<string> argv) {
|
||||||
vector<string> commands = list_commands();
|
vector<string> commands = list_commands();
|
||||||
cellar::print_header();
|
cellar::print_header();
|
||||||
|
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
// vim: filetype=cpp :
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "launch.hpp"
|
|
||||||
#include "internal/launch.hpp"
|
|
||||||
#include "commands.hpp"
|
|
||||||
#include "dll.hpp"
|
|
||||||
#include "help.hpp"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace cellar::launch;
|
|
||||||
using namespace cellar::commands;
|
|
||||||
|
|
||||||
DLL_PUBLIC map<string, CommandFunction> cellar::commands::launch_commands() {
|
|
||||||
map<string, CommandFunction> result;
|
|
||||||
/*[[[cog
|
|
||||||
import cog
|
|
||||||
import os
|
|
||||||
|
|
||||||
with open("src/launch/commands.txt") as commandfile:
|
|
||||||
for line in commandfile:
|
|
||||||
linesplit = line.strip().split(" ")
|
|
||||||
name = linesplit[0]
|
|
||||||
func = linesplit[1]
|
|
||||||
|
|
||||||
cog.outl("result.insert(pair<string,CommandFunction>(\"{0}\", &{1}));".format(name, func))
|
|
||||||
|
|
||||||
if (len(linesplit) > 2):
|
|
||||||
desc = " ".join(linesplit[2:]) # Rest of line assumed to be description
|
|
||||||
cog.outl("cellar::help::set_description(\"{0}\", \"{1}\");"
|
|
||||||
.format(name, desc
|
|
||||||
.replace("\\", "\\\\")
|
|
||||||
.replace("\"", "\\\"")))
|
|
||||||
# the replace methods escape " and \ characters
|
|
||||||
else:
|
|
||||||
print("-- No description is available for the {0} command.".format(name))
|
|
||||||
|
|
||||||
if os.path.exists("src/launch/help/" + name):
|
|
||||||
cog.out("cellar::help::set_details(\"{0}\", R\"(".format(name))
|
|
||||||
with open("src/launch/help/" + name) as detailsfile:
|
|
||||||
for detail in detailsfile:
|
|
||||||
cog.out(detail, trimblanklines=True)
|
|
||||||
cog.out(")\");")
|
|
||||||
else:
|
|
||||||
print("-- No details are available for the {0} command.".format(name))
|
|
||||||
]]]*/
|
|
||||||
//[[[end]]]
|
|
||||||
return result;
|
|
||||||
}
|
|
@ -43,6 +43,6 @@ string cellar::version::short_version() {
|
|||||||
//[[[end]]]
|
//[[[end]]]
|
||||||
}
|
}
|
||||||
|
|
||||||
void cellar::commands::print_version(int argc, vector<string> argv) {
|
void cellar::core::print_version(int argc, vector<string> argv) {
|
||||||
cellar::output::statement(short_version());
|
cellar::output::statement(short_version());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user