diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6f2a7a2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.31) +project(bshell C) + +find_package(Python COMPONENTS Interpreter REQUIRED) + +execute_process( + COMMAND ${Python_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/tools/build-id.py + OUTPUT_VARIABLE bshell_version) + +file(GLOB_RECURSE bshell_sources + bshell/*.c + bshell/*.h) + +message(STATUS "B Shell version: ${bshell_version}") + +add_executable(bshell ${bshell_sources}) + +target_compile_definitions(bshell PUBLIC + BSHELL_VERSION="${bshell_version}") diff --git a/bshell/main.c b/bshell/main.c new file mode 100644 index 0000000..e69de29 diff --git a/doc/sample/simple.bshell b/doc/sample/simple.bshell new file mode 100644 index 0000000..8190a9c --- /dev/null +++ b/doc/sample/simple.bshell @@ -0,0 +1,8 @@ +func test-function($name) { + echo "Hello, $name!" +} + +# Example of instantiating an FX runtime object. +$obj = new-object -type-name fx.string -arguments "John Doe" + +test-function -name $obj diff --git a/tools/build-id.py b/tools/build-id.py new file mode 100755 index 0000000..a1bc1df --- /dev/null +++ b/tools/build-id.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +# vim: ft=python +# -*- mode: python -*- + +import subprocess +import sys +import os + +def is_arg_set(name): + for arg in sys.argv: + if arg == '--{}'.format(name): + return True + + return False + + +def get_arg(name): + ret_next = False + for arg in sys.argv: + if ret_next: + return arg + + if arg == '--{}'.format(name): + ret_next = True + + return '' + + +current_tag = subprocess.check_output(['git', 'describe', '--tags', '--abbrev=0']).decode('utf-8').strip() + +build_id = '{}'.format(current_tag) + +if sys.stdout.isatty(): + print('{}'.format(build_id)) +else: + print('{}'.format(build_id), end='')