is An Python Package to manipulate C/C++ buildings and PipeLines providing easy automation tools to increase your code pipelines with amalgamations, black box testing, and readme replacment
for install the lib from pip call
pip install CToolKit
clone the repo into your machine with:
git clone https://github.com/OUIsolutions/CTolkitBuild.git
Then install with:
cd CTolkitBuild/
pip install .
type the following comand to install from github
pip install git+https://github.com/OUIsolutions/CTolkitBuild.git
for amalgamate an C lib its super easy, just call
import CToolKit as ct
STARTER = f'test.h'
OUTPUT = 'amalgamated.h'
amalgamated_code = ct.generate_amalgamated_code(STARTER)
with open(OUTPUT,'w') as arq:
arq.write(amalgamated_code)
or even more implicit:
import CToolKit as ct
STARTER = f'CTextEngine/CTextEngineMain.h'
OUTPUT = 'amalgamated.h'
amalgamated_code = ct.generate_amalgamated_code(STARTER,OUTPUT)
it wil copile the given file
import CToolKit as ct
COMPILER = 'gcc'
FILE = 'test.c'
OUTPUT = 'test.out'
ct.compile_project(
FILE,
COMPILER,
OUTPUT,
raise_errors=True,
raise_warnings=True
)
Execute an valgrind testing of the given binary ( you need to have valgrind installed in your os)
import CToolKit as ct
COMPILER = 'gcc'
FILE = 'test.c'
OUTPUT = 'test.out'
ct.compile_project(
COMPILER,
FILE,
OUTPUT,
raise_errors=True,
raise_warnings=True
)
FLAGS = ['-libcur']
ct.test_binary_with_valgrind(OUTPUT, FLAGS)
Executing copilation and test with file with a single comand
import CToolKit as ct
COMPILER = 'gcc'
FILE = 'test.c'
ct.execute_test_for_file(FILE,COMPILER)
Executing Test with all .c or .cpp files in the given folder
import CToolKit as ct
test = ct.FolderTestPreset(folder='tests/main_test',side_effect_folder='tests/target')
# wil create non existent outputs
test.generate_ouptut()
# will start the test
test.start_test()
you can execute an binary with the ComandLine Execution class
import CToolKit as ct
COMPILER = 'gcc'
FILE = 'test.c'
OUTPUT = 'test.out'
ct.compile_project(
FILE,
COMPILER,
OUTPUT,
raise_errors=True,
raise_warnings=True
)
execution = ct.ComandLineExecution(f'./{OUTPUT}')
print('output:', execution.output)
print('statuscode:', execution.status_code)
you can replace readme content with code system for these just tipe: < + !--codeof:test.c-->, you can see these example in the following lib: https://github.com/OUIsolutions/CTextEngine
Will free the memory
<!--codeof:exemples/free.c-->
import CToolKit as ct
ct.include_code_in_markdown('README.md')