Skip to content

Commit 3f7e5cf

Browse files
committed
add: Makefile & clang-format templates
1 parent 64d08c8 commit 3f7e5cf

File tree

4 files changed

+282
-0
lines changed

4 files changed

+282
-0
lines changed

internal/program.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ var gitignoreTmpl string
2323
//go:embed templates/main.cpp.tmpl
2424
var mainTmpl string
2525

26+
//go:embed templates/Makefile.tmpl
27+
var makefileTmpl string
28+
29+
//go:embed templates/.clang-format.tmpl
30+
var clangFormatTmpl string
31+
2632
type Project struct {
2733
ProjectName string
2834
AbsolutePath string
@@ -84,6 +90,18 @@ func (p *Project) CreateProjectStructure() error {
8490
return err
8591
}
8692

93+
// Create Makefile
94+
if err := p.CreateFileFromTemplate(makefileTmpl, projectPath, "Makefile"); err != nil {
95+
log.Printf("Error creating Makefile: %v\n", err)
96+
return err
97+
}
98+
99+
// Create clang-format file
100+
if err := p.CreateFileFromTemplate(clangFormatTmpl, projectPath, ".clang-format"); err != nil {
101+
log.Printf("Error creating clang-format: %v\n", err)
102+
return err
103+
}
104+
87105
// Initialize the project with a commit
88106
if err := ExecuteCmd("git", []string{"add", "-A"}, projectPath); err != nil {
89107
log.Printf("Error adding files to git repository: %v\n", err)

internal/templates/.clang-format

Whitespace-only changes.
Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
---
2+
Language: Cpp
3+
# BasedOnStyle: Microsoft
4+
AccessModifierOffset: -2
5+
AlignAfterOpenBracket: Align
6+
AlignArrayOfStructures: None
7+
AlignConsecutiveAssignments:
8+
Enabled: false
9+
AcrossEmptyLines: false
10+
AcrossComments: false
11+
AlignCompound: false
12+
AlignFunctionPointers: false
13+
PadOperators: true
14+
AlignConsecutiveBitFields:
15+
Enabled: false
16+
AcrossEmptyLines: false
17+
AcrossComments: false
18+
AlignCompound: false
19+
AlignFunctionPointers: false
20+
PadOperators: false
21+
AlignConsecutiveDeclarations:
22+
Enabled: false
23+
AcrossEmptyLines: false
24+
AcrossComments: false
25+
AlignCompound: false
26+
AlignFunctionPointers: false
27+
PadOperators: false
28+
AlignConsecutiveMacros:
29+
Enabled: false
30+
AcrossEmptyLines: false
31+
AcrossComments: false
32+
AlignCompound: false
33+
AlignFunctionPointers: false
34+
PadOperators: false
35+
AlignConsecutiveShortCaseStatements:
36+
Enabled: false
37+
AcrossEmptyLines: false
38+
AcrossComments: false
39+
AlignCaseColons: false
40+
AlignEscapedNewlines: Right
41+
AlignOperands: Align
42+
AlignTrailingComments:
43+
Kind: Always
44+
OverEmptyLines: 0
45+
AllowAllArgumentsOnNextLine: true
46+
AllowAllParametersOfDeclarationOnNextLine: true
47+
AllowBreakBeforeNoexceptSpecifier: Never
48+
AllowShortBlocksOnASingleLine: Never
49+
AllowShortCaseLabelsOnASingleLine: false
50+
AllowShortCompoundRequirementOnASingleLine: true
51+
AllowShortEnumsOnASingleLine: false
52+
AllowShortFunctionsOnASingleLine: None
53+
AllowShortIfStatementsOnASingleLine: Never
54+
AllowShortLambdasOnASingleLine: All
55+
AllowShortLoopsOnASingleLine: false
56+
AlwaysBreakAfterDefinitionReturnType: None
57+
AlwaysBreakAfterReturnType: None
58+
AlwaysBreakBeforeMultilineStrings: false
59+
AlwaysBreakTemplateDeclarations: MultiLine
60+
AttributeMacros:
61+
- __capability
62+
BinPackArguments: true
63+
BinPackParameters: true
64+
BitFieldColonSpacing: Both
65+
BraceWrapping:
66+
AfterCaseLabel: false
67+
AfterClass: true
68+
AfterControlStatement: Always
69+
AfterEnum: true
70+
AfterExternBlock: true
71+
AfterFunction: true
72+
AfterNamespace: true
73+
AfterObjCDeclaration: true
74+
AfterStruct: true
75+
AfterUnion: false
76+
BeforeCatch: true
77+
BeforeElse: true
78+
BeforeLambdaBody: false
79+
BeforeWhile: false
80+
IndentBraces: false
81+
SplitEmptyFunction: true
82+
SplitEmptyRecord: true
83+
SplitEmptyNamespace: true
84+
BreakAdjacentStringLiterals: true
85+
BreakAfterAttributes: Leave
86+
BreakAfterJavaFieldAnnotations: false
87+
BreakArrays: true
88+
BreakBeforeBinaryOperators: None
89+
BreakBeforeConceptDeclarations: Always
90+
BreakBeforeBraces: Custom
91+
BreakBeforeInlineASMColon: OnlyMultiline
92+
BreakBeforeTernaryOperators: true
93+
BreakConstructorInitializers: BeforeColon
94+
BreakInheritanceList: BeforeColon
95+
BreakStringLiterals: true
96+
ColumnLimit: 120
97+
CommentPragmas: '^ IWYU pragma:'
98+
CompactNamespaces: false
99+
ConstructorInitializerIndentWidth: 4
100+
ContinuationIndentWidth: 4
101+
Cpp11BracedListStyle: true
102+
DerivePointerAlignment: false
103+
DisableFormat: false
104+
EmptyLineAfterAccessModifier: Never
105+
EmptyLineBeforeAccessModifier: LogicalBlock
106+
ExperimentalAutoDetectBinPacking: false
107+
FixNamespaceComments: true
108+
ForEachMacros:
109+
- foreach
110+
- Q_FOREACH
111+
- BOOST_FOREACH
112+
IfMacros:
113+
- KJ_IF_MAYBE
114+
IncludeBlocks: Preserve
115+
IncludeCategories:
116+
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
117+
Priority: 2
118+
SortPriority: 0
119+
CaseSensitive: false
120+
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
121+
Priority: 3
122+
SortPriority: 0
123+
CaseSensitive: false
124+
- Regex: '.*'
125+
Priority: 1
126+
SortPriority: 0
127+
CaseSensitive: false
128+
IncludeIsMainRegex: '(Test)?$'
129+
IncludeIsMainSourceRegex: ''
130+
IndentAccessModifiers: false
131+
IndentCaseBlocks: false
132+
IndentCaseLabels: true
133+
IndentExternBlock: AfterExternBlock
134+
IndentGotoLabels: true
135+
IndentPPDirectives: None
136+
IndentRequiresClause: true
137+
IndentWidth: 4
138+
IndentWrappedFunctionNames: false
139+
InsertBraces: false
140+
InsertNewlineAtEOF: false
141+
InsertTrailingCommas: None
142+
IntegerLiteralSeparator:
143+
Binary: 0
144+
BinaryMinDigits: 0
145+
Decimal: 0
146+
DecimalMinDigits: 0
147+
Hex: 0
148+
HexMinDigits: 0
149+
JavaScriptQuotes: Leave
150+
JavaScriptWrapImports: true
151+
KeepEmptyLinesAtTheStartOfBlocks: true
152+
KeepEmptyLinesAtEOF: false
153+
LambdaBodyIndentation: Signature
154+
LineEnding: DeriveLF
155+
MacroBlockBegin: ''
156+
MacroBlockEnd: ''
157+
MaxEmptyLinesToKeep: 1
158+
NamespaceIndentation: None
159+
ObjCBinPackProtocolList: Auto
160+
ObjCBlockIndentWidth: 2
161+
ObjCBreakBeforeNestedBlockParam: true
162+
ObjCSpaceAfterProperty: false
163+
ObjCSpaceBeforeProtocolList: true
164+
PackConstructorInitializers: BinPack
165+
PenaltyBreakAssignment: 2
166+
PenaltyBreakBeforeFirstCallParameter: 19
167+
PenaltyBreakComment: 300
168+
PenaltyBreakFirstLessLess: 120
169+
PenaltyBreakOpenParenthesis: 0
170+
PenaltyBreakScopeResolution: 500
171+
PenaltyBreakString: 1000
172+
PenaltyBreakTemplateDeclaration: 10
173+
PenaltyExcessCharacter: 1000000
174+
PenaltyIndentedWhitespace: 0
175+
PenaltyReturnTypeOnItsOwnLine: 1000
176+
PointerAlignment: Right
177+
PPIndentWidth: -1
178+
QualifierAlignment: Leave
179+
ReferenceAlignment: Pointer
180+
ReflowComments: true
181+
RemoveBracesLLVM: false
182+
RemoveParentheses: Leave
183+
RemoveSemicolon: false
184+
RequiresClausePosition: OwnLine
185+
RequiresExpressionIndentation: OuterScope
186+
SeparateDefinitionBlocks: Leave
187+
ShortNamespaceLines: 1
188+
SkipMacroDefinitionBody: false
189+
SortIncludes: CaseSensitive
190+
SortJavaStaticImport: Before
191+
SortUsingDeclarations: LexicographicNumeric
192+
SpaceAfterCStyleCast: false
193+
SpaceAfterLogicalNot: false
194+
SpaceAfterTemplateKeyword: true
195+
SpaceAroundPointerQualifiers: Default
196+
SpaceBeforeAssignmentOperators: true
197+
SpaceBeforeCaseColon: false
198+
SpaceBeforeCpp11BracedList: false
199+
SpaceBeforeCtorInitializerColon: true
200+
SpaceBeforeInheritanceColon: true
201+
SpaceBeforeJsonColon: false
202+
SpaceBeforeParens: ControlStatements
203+
SpaceBeforeParensOptions:
204+
AfterControlStatements: true
205+
AfterForeachMacros: true
206+
AfterFunctionDefinitionName: false
207+
AfterFunctionDeclarationName: false
208+
AfterIfMacros: true
209+
AfterOverloadedOperator: false
210+
AfterPlacementOperator: true
211+
AfterRequiresInClause: false
212+
AfterRequiresInExpression: false
213+
BeforeNonEmptyParentheses: false
214+
SpaceBeforeRangeBasedForLoopColon: true
215+
SpaceBeforeSquareBrackets: false
216+
SpaceInEmptyBlock: false
217+
SpacesBeforeTrailingComments: 1
218+
SpacesInAngles: Never
219+
SpacesInContainerLiterals: true
220+
SpacesInLineCommentPrefix:
221+
Minimum: 1
222+
Maximum: -1
223+
SpacesInParens: Never
224+
SpacesInParensOptions:
225+
InCStyleCasts: false
226+
InConditionalStatements: false
227+
InEmptyParentheses: false
228+
Other: false
229+
SpacesInSquareBrackets: false
230+
Standard: Latest
231+
StatementAttributeLikeMacros:
232+
- Q_EMIT
233+
StatementMacros:
234+
- Q_UNUSED
235+
- QT_REQUIRE_VERSION
236+
TabWidth: 4
237+
UseTab: Never
238+
VerilogBreakBetweenInstancePorts: true
239+
WhitespaceSensitiveMacros:
240+
- BOOST_PP_STRINGIZE
241+
- CF_SWIFT_NAME
242+
- NS_SWIFT_NAME
243+
- PP_STRINGIZE
244+
- STRINGIZE
245+
...
246+

internal/templates/Makefile.tmpl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
CC=g++
2+
FLAGS=-O2 -Wall -Wextra -Wfatal-errors -pedantic
3+
BIN_DIR=bin
4+
SRC_DIR=src
5+
INCLUDE_DIR=include
6+
7+
all: build
8+
9+
build:
10+
@$(CC) $(FLAGS) -I$(INCLUDE_DIR) $(SRC_DIR)/*.cpp -o $(BIN_DIR)/main
11+
12+
clean:
13+
@rm -f $(BIN_DIR)/*
14+
15+
run:
16+
@./$(BIN_DIR)/main
17+
18+
.PHONY: all build run clean

0 commit comments

Comments
 (0)