Skip to content

Commit 8f94786

Browse files
authored
Refactor CLI structure to match the include/src split that our other projects have. (#1573)
This PR refactors the CLI folder to use the same project split between include and src directories that we have for all the other artifacts in luau. It also includes the require-by-string implementation we already have as a feature of `Luau.CLI.lib`. Both of these changes are targeted at making it easier for embedding projects to setup an effective equivalent to the standalone `luau` executable with whatever runtime libraries they need attached and without having to unnecessarily duplicate code from luau itself.
1 parent 7ab3482 commit 8f94786

24 files changed

+64
-66
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

CLI/Repl.h CLI/include/Luau/Repl.h

File renamed without changes.
File renamed without changes.

CLI/Analyze.cpp CLI/src/Analyze.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
#include "Luau/TypeAttach.h"
88
#include "Luau/Transpiler.h"
99

10-
#include "FileUtils.h"
11-
#include "Flags.h"
12-
#include "Require.h"
10+
#include "Luau/FileUtils.h"
11+
#include "Luau/Flags.h"
12+
#include "Luau/Require.h"
1313

1414
#include <condition_variable>
1515
#include <functional>

CLI/Ast.cpp CLI/src/Ast.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include "Luau/ParseOptions.h"
99
#include "Luau/ToString.h"
1010

11-
#include "FileUtils.h"
11+
#include "Luau/FileUtils.h"
1212

1313
static void displayHelp(const char* argv0)
1414
{

CLI/Bytecode.cpp CLI/src/Bytecode.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
#include "Luau/BytecodeBuilder.h"
88
#include "Luau/Parser.h"
99
#include "Luau/BytecodeSummary.h"
10-
#include "FileUtils.h"
11-
#include "Flags.h"
10+
#include "Luau/FileUtils.h"
11+
#include "Luau/Flags.h"
1212

1313
#include <memory>
1414

CLI/Compile.cpp CLI/src/Compile.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
#include "Luau/Parser.h"
99
#include "Luau/TimeTrace.h"
1010

11-
#include "FileUtils.h"
12-
#include "Flags.h"
11+
#include "Luau/FileUtils.h"
12+
#include "Luau/Flags.h"
1313

1414
#include <memory>
1515

CLI/Coverage.cpp CLI/src/Coverage.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2-
#include "Coverage.h"
2+
#include "Luau/Coverage.h"
33

44
#include "lua.h"
55

CLI/FileUtils.cpp CLI/src/FileUtils.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2-
#include "FileUtils.h"
2+
#include "Luau/FileUtils.h"
33

44
#include "Luau/Common.h"
55

CLI/Flags.cpp CLI/src/Flags.cpp

File renamed without changes.
File renamed without changes.

CLI/Reduce.cpp CLI/src/Reduce.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include "Luau/Parser.h"
66
#include "Luau/Transpiler.h"
77

8-
#include "FileUtils.h"
8+
#include "Luau/FileUtils.h"
99

1010
#include <algorithm>
1111
#include <stdio.h>

CLI/Repl.cpp CLI/src/Repl.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2-
#include "Repl.h"
2+
#include "Luau/Repl.h"
33

44
#include "Luau/Common.h"
55
#include "lua.h"
@@ -10,11 +10,11 @@
1010
#include "Luau/Parser.h"
1111
#include "Luau/TimeTrace.h"
1212

13-
#include "Coverage.h"
14-
#include "FileUtils.h"
15-
#include "Flags.h"
16-
#include "Profiler.h"
17-
#include "Require.h"
13+
#include "Luau/Coverage.h"
14+
#include "Luau/FileUtils.h"
15+
#include "Luau/Flags.h"
16+
#include "Luau/Profiler.h"
17+
#include "Luau/Require.h"
1818

1919
#include "isocline.h"
2020

CLI/ReplEntry.cpp CLI/src/ReplEntry.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2-
#include "Repl.h"
2+
#include "Luau/Repl.h"
33

44
int main(int argc, char** argv)
55
{

CLI/Require.cpp CLI/src/Require.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2-
#include "Require.h"
2+
#include "Luau/Require.h"
33

4-
#include "FileUtils.h"
4+
#include "Luau/FileUtils.h"
55
#include "Luau/Common.h"
66
#include "Luau/Config.h"
77

@@ -301,4 +301,4 @@ bool RequireResolver::parseConfigInDirectory(const std::string& directory)
301301
}
302302

303303
return true;
304-
}
304+
}

CLI/Web.cpp CLI/src/Web.cpp

File renamed without changes.

CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ include(Sources.cmake)
6868
target_include_directories(Luau.Common INTERFACE Common/include)
6969

7070
target_compile_features(Luau.CLI.lib PUBLIC cxx_std_17)
71-
target_link_libraries(Luau.CLI.lib PRIVATE Luau.Common)
71+
target_include_directories(Luau.CLI.lib PUBLIC CLI/include)
72+
target_link_libraries(Luau.CLI.lib PRIVATE Luau.Common Luau.Config)
7273

7374
target_compile_features(Luau.Ast PUBLIC cxx_std_17)
7475
target_include_directories(Luau.Ast PUBLIC Ast/include)

Makefile

+10-10
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,23 @@ ISOCLINE_SOURCES=extern/isocline/src/isocline.c
4242
ISOCLINE_OBJECTS=$(ISOCLINE_SOURCES:%=$(BUILD)/%.o)
4343
ISOCLINE_TARGET=$(BUILD)/libisocline.a
4444

45-
TESTS_SOURCES=$(wildcard tests/*.cpp) CLI/FileUtils.cpp CLI/Flags.cpp CLI/Profiler.cpp CLI/Coverage.cpp CLI/Repl.cpp CLI/Require.cpp
45+
TESTS_SOURCES=$(wildcard tests/*.cpp) CLI/src/FileUtils.cpp CLI/src/Flags.cpp CLI/src/Profiler.cpp CLI/src/Coverage.cpp CLI/src/Repl.cpp CLI/src/Require.cpp
4646
TESTS_OBJECTS=$(TESTS_SOURCES:%=$(BUILD)/%.o)
4747
TESTS_TARGET=$(BUILD)/luau-tests
4848

49-
REPL_CLI_SOURCES=CLI/FileUtils.cpp CLI/Flags.cpp CLI/Profiler.cpp CLI/Coverage.cpp CLI/Repl.cpp CLI/ReplEntry.cpp CLI/Require.cpp
49+
REPL_CLI_SOURCES=CLI/src/FileUtils.cpp CLI/src/Flags.cpp CLI/src/Profiler.cpp CLI/src/Coverage.cpp CLI/src/Repl.cpp CLI/src/ReplEntry.cpp CLI/src/Require.cpp
5050
REPL_CLI_OBJECTS=$(REPL_CLI_SOURCES:%=$(BUILD)/%.o)
5151
REPL_CLI_TARGET=$(BUILD)/luau
5252

53-
ANALYZE_CLI_SOURCES=CLI/FileUtils.cpp CLI/Flags.cpp CLI/Require.cpp CLI/Analyze.cpp
53+
ANALYZE_CLI_SOURCES=CLI/src/FileUtils.cpp CLI/src/Flags.cpp CLI/src/Require.cpp CLI/src/Analyze.cpp
5454
ANALYZE_CLI_OBJECTS=$(ANALYZE_CLI_SOURCES:%=$(BUILD)/%.o)
5555
ANALYZE_CLI_TARGET=$(BUILD)/luau-analyze
5656

57-
COMPILE_CLI_SOURCES=CLI/FileUtils.cpp CLI/Flags.cpp CLI/Compile.cpp
57+
COMPILE_CLI_SOURCES=CLI/src/FileUtils.cpp CLI/src/Flags.cpp CLI/src/Compile.cpp
5858
COMPILE_CLI_OBJECTS=$(COMPILE_CLI_SOURCES:%=$(BUILD)/%.o)
5959
COMPILE_CLI_TARGET=$(BUILD)/luau-compile
6060

61-
BYTECODE_CLI_SOURCES=CLI/FileUtils.cpp CLI/Flags.cpp CLI/Bytecode.cpp
61+
BYTECODE_CLI_SOURCES=CLI/src/FileUtils.cpp CLI/src/Flags.cpp CLI/src/Bytecode.cpp
6262
BYTECODE_CLI_OBJECTS=$(BYTECODE_CLI_SOURCES:%=$(BUILD)/%.o)
6363
BYTECODE_CLI_TARGET=$(BUILD)/luau-bytecode
6464

@@ -149,11 +149,11 @@ $(EQSAT_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IEqSat/include
149149
$(CODEGEN_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -ICodeGen/include -IVM/include -IVM/src # Code generation needs VM internals
150150
$(VM_OBJECTS): CXXFLAGS+=-std=c++11 -ICommon/include -IVM/include
151151
$(ISOCLINE_OBJECTS): CXXFLAGS+=-Wno-unused-function -Iextern/isocline/include
152-
$(TESTS_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IConfig/include -IAnalysis/include -IEqSat/include -ICodeGen/include -IVM/include -ICLI -Iextern -DDOCTEST_CONFIG_DOUBLE_STRINGIFY
153-
$(REPL_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include -Iextern -Iextern/isocline/include
154-
$(ANALYZE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -IAnalysis/include -IEqSat/include -IConfig/include -Iextern
155-
$(COMPILE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include
156-
$(BYTECODE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include
152+
$(TESTS_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IConfig/include -IAnalysis/include -IEqSat/include -ICodeGen/include -IVM/include -ICLI/include -Iextern -DDOCTEST_CONFIG_DOUBLE_STRINGIFY
153+
$(REPL_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include -Iextern -Iextern/isocline/include -ICLI/include
154+
$(ANALYZE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -IAnalysis/include -IEqSat/include -IConfig/include -Iextern -ICLI/include
155+
$(COMPILE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include -ICLI/include
156+
$(BYTECODE_CLI_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IVM/include -ICodeGen/include -ICLI/include
157157
$(FUZZ_OBJECTS): CXXFLAGS+=-std=c++17 -ICommon/include -IAst/include -ICompiler/include -IAnalysis/include -IEqSat/include -IVM/include -ICodeGen/include -IConfig/include
158158

159159
$(TESTS_TARGET): LDFLAGS+=-lpthread

Sources.cmake

+27-24
Original file line numberDiff line numberDiff line change
@@ -389,36 +389,39 @@ target_sources(isocline PRIVATE
389389

390390
# Common sources shared between all CLI apps
391391
target_sources(Luau.CLI.lib PRIVATE
392-
CLI/FileUtils.cpp
393-
CLI/Flags.cpp
394-
CLI/Flags.h
395-
CLI/FileUtils.h
392+
CLI/include/Luau/FileUtils.h
393+
CLI/include/Luau/Flags.h
394+
CLI/include/Luau/Require.h
395+
396+
CLI/src/FileUtils.cpp
397+
CLI/src/Flags.cpp
398+
CLI/src/Require.cpp
396399
)
397400

398401
if(TARGET Luau.Repl.CLI)
399402
# Luau.Repl.CLI Sources
400403
target_sources(Luau.Repl.CLI PRIVATE
401-
CLI/Coverage.h
402-
CLI/Coverage.cpp
403-
CLI/Profiler.h
404-
CLI/Profiler.cpp
405-
CLI/Repl.cpp
406-
CLI/ReplEntry.cpp
407-
CLI/Require.cpp)
404+
CLI/include/Luau/Coverage.h
405+
CLI/include/Luau/Profiler.h
406+
407+
CLI/src/Coverage.cpp
408+
CLI/src/Profiler.cpp
409+
CLI/src/Repl.cpp
410+
CLI/src/ReplEntry.cpp
411+
)
408412
endif()
409413

410414
if(TARGET Luau.Analyze.CLI)
411415
# Luau.Analyze.CLI Sources
412416
target_sources(Luau.Analyze.CLI PRIVATE
413-
CLI/Analyze.cpp
414-
CLI/Require.cpp
417+
CLI/src/Analyze.cpp
415418
)
416419
endif()
417420

418421
if(TARGET Luau.Ast.CLI)
419422
# Luau.Ast.CLI Sources
420423
target_sources(Luau.Ast.CLI PRIVATE
421-
CLI/Ast.cpp
424+
CLI/src/Ast.cpp
422425
)
423426
endif()
424427

@@ -543,12 +546,12 @@ endif()
543546
if(TARGET Luau.CLI.Test)
544547
# Luau.CLI.Test Sources
545548
target_sources(Luau.CLI.Test PRIVATE
546-
CLI/Coverage.h
547-
CLI/Coverage.cpp
548-
CLI/Profiler.h
549-
CLI/Profiler.cpp
550-
CLI/Repl.cpp
551-
CLI/Require.cpp
549+
CLI/include/Luau/Coverage.h
550+
CLI/include/Luau/Profiler.h
551+
552+
CLI/src/Coverage.cpp
553+
CLI/src/Profiler.cpp
554+
CLI/src/Repl.cpp
552555

553556
tests/RegisterCallbacks.h
554557
tests/RegisterCallbacks.cpp
@@ -560,24 +563,24 @@ endif()
560563
if(TARGET Luau.Web)
561564
# Luau.Web Sources
562565
target_sources(Luau.Web PRIVATE
563-
CLI/Web.cpp)
566+
CLI/src/Web.cpp)
564567
endif()
565568

566569
if(TARGET Luau.Reduce.CLI)
567570
# Luau.Reduce.CLI Sources
568571
target_sources(Luau.Reduce.CLI PRIVATE
569-
CLI/Reduce.cpp
572+
CLI/src/Reduce.cpp
570573
)
571574
endif()
572575

573576
if(TARGET Luau.Compile.CLI)
574577
# Luau.Compile.CLI Sources
575578
target_sources(Luau.Compile.CLI PRIVATE
576-
CLI/Compile.cpp)
579+
CLI/src/Compile.cpp)
577580
endif()
578581

579582
if(TARGET Luau.Bytecode.CLI)
580583
# Luau.Bytecode.CLI Sources
581584
target_sources(Luau.Bytecode.CLI PRIVATE
582-
CLI/Bytecode.cpp)
585+
CLI/src/Bytecode.cpp)
583586
endif()

tests/Repl.test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include "lua.h"
33
#include "lualib.h"
44

5-
#include "Repl.h"
5+
#include "Luau/Repl.h"
66
#include "ScopedFlags.h"
77

88
#include "doctest.h"

tests/RequireByString.test.cpp

+3-9
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
#include "lua.h"
77
#include "lualib.h"
88

9-
#include "Repl.h"
10-
#include "FileUtils.h"
9+
#include "Luau/Repl.h"
10+
#include "Luau/FileUtils.h"
1111

1212
#include "doctest.h"
1313

@@ -116,7 +116,7 @@ class ReplWithPathFixture
116116
for (int i = 0; i < 20; ++i)
117117
{
118118
bool engineTestDir = isDirectory(luauDirAbs + "/Client/Luau/tests");
119-
bool luauTestDir = isDirectory(luauDirAbs + "/luau/tests/require");
119+
bool luauTestDir = isDirectory(luauDirAbs + "/tests/require");
120120

121121
if (engineTestDir || luauTestDir)
122122
{
@@ -125,12 +125,6 @@ class ReplWithPathFixture
125125
luauDirRel += "/Client/Luau";
126126
luauDirAbs += "/Client/Luau";
127127
}
128-
else
129-
{
130-
luauDirRel += "/luau";
131-
luauDirAbs += "/luau";
132-
}
133-
134128

135129
if (type == PathType::Relative)
136130
return luauDirRel;

0 commit comments

Comments
 (0)