Skip to content

Commit 0f7c9ea

Browse files
committed
CONSOLE: framework refactoring
1 parent f68208f commit 0f7c9ea

File tree

187 files changed

+27865
-1083
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+27865
-1083
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,6 @@
3535
[submodule "fst/css_plugin"]
3636
path = fst/css_plugin
3737
url = https://gitlab.cern.ch/eos/css_plugin.git
38+
[submodule "console/parser"]
39+
path = console/parser
40+
url = https://github.com/CLIUtils/CLI11.git

common/Logging.hh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ public:
305305
SetLogId(const char* newlogid)
306306
{
307307
if (newlogid && (strncmp(newlogid, logId, sizeof(logId) - 1) != 0)) {
308-
snprintf(logId, sizeof(logId), "%s", newlogid);
308+
// ensure bounded copy; accept truncation
309+
strncpy(logId, newlogid, sizeof(logId) - 1);
310+
logId[sizeof(logId) - 1] = '\0';
309311
}
310312
}
311313

@@ -316,7 +318,8 @@ public:
316318
SetLogId(const char* newlogid, const char* td)
317319
{
318320
if (newlogid && (newlogid != logId)) {
319-
snprintf(logId, sizeof(logId), "%s", newlogid);
321+
strncpy(logId, newlogid, sizeof(logId) - 1);
322+
logId[sizeof(logId) - 1] = '\0';
320323
}
321324

322325
if (td) {

console/CMakeLists.txt

Lines changed: 109 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,22 @@
2323

2424
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/commands/helpers/)
2525

26+
#-------------------------------------------------------------------------------
27+
# CLI11 parser submodule (console/parser)
28+
#-------------------------------------------------------------------------------
29+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/parser/CMakeLists.txt")
30+
set(CLI11_BUILD_TESTS OFF CACHE BOOL "Disable CLI11 tests" FORCE)
31+
set(CLI11_BUILD_EXAMPLES OFF CACHE BOOL "Disable CLI11 examples" FORCE)
32+
set(CLI11_BUILD_DOCS OFF CACHE BOOL "Disable CLI11 docs" FORCE)
33+
set(CLI11_INSTALL ON CACHE BOOL "Install CLI11 headers" FORCE)
34+
add_subdirectory(parser)
35+
endif()
36+
2637
#-------------------------------------------------------------------------------
2738
# eos executable
2839
#-------------------------------------------------------------------------------
2940
add_library(EosConsoleHelpers-Objects OBJECT
30-
commands/ICmdHelper.cc commands/ICmdHelper.hh
41+
commands/helpers/ICmdHelper.cc commands/helpers/ICmdHelper.hh
3142
commands/helpers/FsHelper.cc commands/helpers/FsHelper.hh
3243
commands/helpers/RecycleHelper.cc commands/helpers/RecycleHelper.hh
3344
commands/helpers/FsckHelper.cc commands/helpers/FsckHelper.hh
@@ -51,97 +62,115 @@ set_target_properties(EosConsoleHelpers-Objects PROPERTIES
5162
POSITION_INDEPENDENT_CODE TRUE)
5263

5364
add_library(EosConsoleCommands-Objects OBJECT
65+
# Core console framework
5466
ConsoleMain.cc ConsoleMain.hh
55-
ConsolePipe.cc ConsolePipe.hh
67+
CommandFramework.cc CommandFramework.hh
5668
ConsoleCompletion.cc ConsoleCompletion.hh
5769
RegexUtil.cc RegexUtil.hh
70+
71+
# Core/native base
72+
commands/native/CoreNativeCommands.cc
73+
commands/native/pwd-native.cc
74+
commands/native/status-native.cc
75+
76+
# Native aliases
77+
commands/native/info-alias.cc
78+
commands/native/fileinfo-alias.cc
79+
commands/native/mv-alias.cc
80+
commands/native/ls-compat.cc
81+
82+
# Native com wrappers
83+
commands/native/cat-com-native.cc
84+
commands/native/cp-cmd-native.cc
85+
commands/native/oldfind-cmd-native.cc
86+
commands/native/rclone-cmd-native.cc
87+
commands/native/squash-cmd-native.cc
88+
89+
# Native cmd implementations (mgm.cmd=...)
90+
commands/native/accounting-cmd-native.cc
91+
commands/native/archive-cmd-native.cc
92+
commands/native/attr-cmd-native.cc
93+
commands/native/backup-cmd-native.cc
94+
commands/native/cd-cmd-native.cc
95+
commands/native/chmod-cmd-native.cc
96+
commands/native/chown-cmd-native.cc
97+
commands/native/clear-cmd-native.cc
98+
commands/native/debug-cmd-native.cc
99+
commands/native/evict-cmd-native.cc
100+
commands/native/file-cmd-native.cc
101+
commands/native/geosched-cmd-native.cc
102+
commands/native/ln-cmd-native.cc
103+
commands/native/ls-cmd-native.cc
104+
commands/native/map-cmd-native.cc
105+
commands/native/member-cmd-native.cc
106+
commands/native/mkdir-cmd-native.cc
107+
commands/native/motd-cmd-native.cc
108+
commands/native/rmdir-cmd-native.cc
109+
commands/native/rtlog-cmd-native.cc
110+
commands/native/touch-cmd-native.cc
111+
commands/native/version-cmd-native.cc
112+
commands/native/vid-cmd-native.cc
113+
commands/native/who-cmd-native.cc
114+
commands/native/whoami-cmd-native.cc
115+
116+
# Native proto implementations
117+
commands/native/access-proto-native.cc
118+
commands/native/acl-proto-native.cc
119+
commands/native/config-proto-native.cc
120+
commands/native/convert-proto-native.cc
121+
commands/native/devices-proto-native.cc
122+
commands/native/df-proto-native.cc
123+
commands/native/du-proto-native.cc
124+
commands/native/find-proto-native.cc
125+
commands/native/fs-proto-native.cc
126+
commands/native/fsck-proto-native.cc
127+
commands/native/group-proto-native.cc
128+
commands/native/inspector-proto-native.cc
129+
commands/native/io-proto-native.cc
130+
commands/native/node-proto-native.cc
131+
commands/native/ns-proto-native.cc
132+
commands/native/quota-proto-native.cc
133+
commands/native/recycle-proto-native.cc
134+
commands/native/register-proto-native.cc
135+
commands/native/rm-proto-native.cc
136+
commands/native/route-proto-native.cc
137+
commands/native/sched-proto-native.cc
138+
commands/native/space-proto-native.cc
139+
commands/native/token-proto-native.cc
140+
commands/native/tracker-proto-native.cc
141+
142+
# Other native commands
143+
commands/native/daemon-native.cc
144+
commands/native/fuse-native.cc
145+
commands/native/fusex-cmd-native.cc
146+
commands/native/health-native.cc
147+
commands/native/license-native.cc
148+
commands/native/reconnect-native.cc
149+
commands/native/report-native.cc
150+
commands/native/role-native.cc
151+
commands/native/scitoken-native.cc
152+
commands/native/stat-native.cc
153+
commands/native/test-native.cc
154+
155+
# Legacy symbol aggregation
156+
commands/native/LegacySymbols.cc
157+
158+
# Shared helpers used by native/proto commands
58159
commands/helpers/NewfindHelper.cc commands/helpers/NewfindHelper.hh
59160
commands/helpers/AclHelper.cc commands/helpers/AclHelper.hh
60161
commands/HealthCommand.cc commands/HealthCommand.hh
61-
commands/com_accounting.cc
62-
commands/com_archive.cc
63-
commands/com_attr.cc
64-
commands/com_backup.cc
65-
commands/com_cd.cc
66-
commands/com_chmod.cc
67-
commands/com_chown.cc
68-
commands/com_clear.cc
69-
commands/com_cp.cc
70-
commands/com_daemon.cc
71-
commands/com_file.cc
72-
commands/com_old_find.cc
73-
commands/com_proto_find.cc
74-
commands/com_fuse.cc
75-
commands/com_fusex.cc
76-
commands/com_geosched.cc
77-
commands/com_health.cc
78-
commands/com_info.cc
79-
commands/com_inspector.cc
80-
commands/com_json.cc
81-
commands/com_license.cc
82-
commands/com_ls.cc
83-
commands/com_ln.cc
84-
commands/com_map.cc
85-
commands/com_member.cc
86-
commands/com_mkdir.cc
87-
commands/com_motd.cc
88-
commands/com_mv.cc
89-
commands/com_print.cc
90-
commands/com_pwd.cc
91-
commands/com_quit.cc
92-
commands/com_rclone.cc
93-
commands/com_report.cc
94-
commands/com_reconnect.cc
95-
commands/com_rmdir.cc
96-
commands/com_role.cc
97-
commands/com_rtlog.cc
98-
commands/com_scitoken.cc
99-
commands/com_silent.cc
100-
commands/com_stat.cc
101-
commands/com_status.cc
102-
commands/com_squash.cc
103-
commands/com_test.cc
104-
commands/com_timing.cc
105-
commands/com_touch.cc
106-
commands/com_proto_token.cc
107-
commands/com_tracker.cc
108-
commands/com_version.cc
109-
commands/com_vid.cc
110-
commands/com_whoami.cc
111-
commands/com_who.cc
112-
commands/com_proto_acl.cc
113-
commands/com_proto_convert.cc
114-
commands/com_proto_fs.cc
115-
commands/com_proto_route.cc
116-
commands/com_evict.cc
117-
commands/com_proto_ns.cc
118-
commands/com_proto_debug.cc
119-
commands/com_du.cc
120-
commands/com_proto_df.cc
121-
commands/com_proto_group.cc
122-
commands/com_proto_recycle.cc
123-
commands/com_proto_config.cc
124-
commands/com_proto_register.cc
125-
commands/com_proto_rm.cc
126-
#@todo (esindril) drop com_quota when move to 5.0.0
127-
commands/com_quota.cc
128-
commands/com_proto_quota.cc
129-
commands/com_proto_node.cc
130-
commands/com_proto_devices.cc
131-
commands/com_proto_space.cc
132-
commands/com_proto_io.cc
133-
#@todo (esindril) drop com_access when move to 5.0.0
134-
commands/com_access.cc
135-
commands/com_proto_access.cc
136-
commands/com_proto_fsck.cc
137-
commands/com_proto_sched.cc)
162+
)
138163

139164
target_link_libraries(EosConsoleCommands-Objects PUBLIC
140165
EosConsoleHelpers-Objects
141166
READLINE::READLINE
142167
JSONCPP::JSONCPP
143168
SCITOKENS::SCITOKENS
144-
XROOTD::UTILS)
169+
XROOTD::UTILS
170+
CLI11::CLI11)
171+
172+
target_include_directories(EosConsoleCommands-Objects PUBLIC
173+
${CMAKE_CURRENT_SOURCE_DIR}/parser/include)
145174

146175
set_target_properties(EosConsoleCommands-Objects PROPERTIES
147176
POSITION_INDEPENDENT_CODE TRUE)

0 commit comments

Comments
 (0)