consolidated command plumbing into one cogfile
This commit is contained in:
parent
d5ec9071ff
commit
f83b5eb6d4
@ -11,16 +11,18 @@
|
||||
using namespace cellar::commands;
|
||||
|
||||
namespace cellar {
|
||||
namespace commands {
|
||||
namespace core {
|
||||
/*[[[cog
|
||||
import cog
|
||||
|
||||
with open("src/commands.txt") as commandsfile:
|
||||
with open("src/core/commands.txt") as commandsfile:
|
||||
for line in commandsfile:
|
||||
item = line.strip().split(" ")
|
||||
cog.outl("extern void {0} (int, vector<string>);".format(item[1]))
|
||||
]]]*/
|
||||
//[[[end]]]
|
||||
}
|
||||
namespace 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 "internal/core.hpp"
|
||||
#include "internal/bottles.hpp"
|
||||
#include "internal/launch.hpp"
|
||||
#include "cellar.hpp"
|
||||
#include "help.hpp"
|
||||
|
||||
@ -21,19 +23,29 @@ vector<string> cellar::commands::list_commands() {
|
||||
return result;
|
||||
}
|
||||
|
||||
map<string, CommandFunction> cellar::commands::core_commands() {
|
||||
map<string, CommandFunction> result;
|
||||
/*[[[cog
|
||||
import cog
|
||||
import os
|
||||
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:
|
||||
linesplit = line.strip().split(" ")
|
||||
name = linesplit[0]
|
||||
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):
|
||||
desc = " ".join(linesplit[2:]) # Rest of line assumed to be description
|
||||
@ -45,15 +57,17 @@ map<string, CommandFunction> cellar::commands::core_commands() {
|
||||
else:
|
||||
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))
|
||||
with open("src/help/" + name) as detailsfile:
|
||||
with open("src/{0}/help/{1}".format(base, 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))
|
||||
cog.outl(" return result;")
|
||||
cog.outl("}")
|
||||
|
||||
recurs_command_plumbing("src")
|
||||
]]]*/
|
||||
//[[[end]]]
|
||||
return result;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
using namespace std;
|
||||
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();
|
||||
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]]]
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user