Inital commit
This commit is contained in:
46
kibot_resources/scripts/docker_kibot_linux.sh
Executable file
46
kibot_resources/scripts/docker_kibot_linux.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Default image version
|
||||
IMAGE="ghcr.io/inti-cmnb/kicad8_auto_full:dev"
|
||||
|
||||
# Parse the optional -v flag
|
||||
while getopts "v:" opt; do
|
||||
case "$opt" in
|
||||
v)
|
||||
if [ "$OPTARG" = "9" ]; then
|
||||
IMAGE="ghcr.io/inti-cmnb/kicad9_auto_full:dev"
|
||||
else
|
||||
echo "Unsupported version: $OPTARG" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [-v 9]" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
export USER_ID=$(id -u)
|
||||
export GROUP_ID=$(id -g)
|
||||
export USER_NAME=$(whoami)
|
||||
|
||||
docker run --rm -it \
|
||||
--user "$USER_ID:$GROUP_ID" \
|
||||
--env NO_AT_BRIDGE=1 \
|
||||
--env DISPLAY="$DISPLAY" \
|
||||
--workdir="/home/$USER_NAME" \
|
||||
--volume=/tmp/.X11-unix:/tmp/.X11-unix \
|
||||
--volume="/etc/group:/etc/group:ro" \
|
||||
--volume="/etc/passwd:/etc/passwd:ro" \
|
||||
--volume="/etc/shadow:/etc/shadow:ro" \
|
||||
--volume="/home/$USER_NAME:/home/$USER_NAME:rw" \
|
||||
-p 8000:8000 \
|
||||
--entrypoint /bin/bash \
|
||||
"$IMAGE" -c "
|
||||
if ! id $USER_NAME &>/dev/null; then
|
||||
echo \"Creating user $USER_NAME ($USER_ID:$GROUP_ID)...\"
|
||||
useradd -u $USER_ID -g $GROUP_ID -d /home/$USER_NAME -m $USER_NAME
|
||||
chown -R $USER_ID:$GROUP_ID /home/$USER_NAME
|
||||
fi
|
||||
exec su - $USER_NAME"
|
||||
28
kibot_resources/scripts/docker_kibot_windows.bat
Normal file
28
kibot_resources/scripts/docker_kibot_windows.bat
Normal file
@@ -0,0 +1,28 @@
|
||||
@echo off
|
||||
REM Set variables for display and user name
|
||||
set DISPLAY=host.docker.internal:0.0
|
||||
set USER_NAME=%USERNAME%
|
||||
|
||||
REM Set default image
|
||||
set "IMAGE=ghcr.io/inti-cmnb/kicad8_auto_full:dev"
|
||||
|
||||
REM Check for optional -v flag and version number
|
||||
if /I "%~1"=="-v" (
|
||||
if "%~2"=="9" (
|
||||
set "IMAGE=ghcr.io/inti-cmnb/kicad9_auto_full:dev"
|
||||
) else (
|
||||
echo Unsupported version: %~2
|
||||
goto :eof
|
||||
)
|
||||
)
|
||||
|
||||
REM Run the Docker container with mounted volumes
|
||||
docker run --rm -it ^
|
||||
--env NO_AT_BRIDGE=1 ^
|
||||
--env DISPLAY=%DISPLAY% ^
|
||||
--workdir="/home/%USER_NAME%" ^
|
||||
--volume=C:\Users\%USER_NAME%:/home/%USER_NAME%:rw ^
|
||||
--volume=/tmp/.X11-unix:/tmp/.X11-unix ^
|
||||
--entrypoint /bin/bash ^
|
||||
-p 8000:8000 ^
|
||||
%IMAGE%
|
||||
49
kibot_resources/scripts/get_changelog.py
Normal file
49
kibot_resources/scripts/get_changelog.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import argparse
|
||||
import re
|
||||
import sys
|
||||
|
||||
def parse_changelog(file_path, version, title_only, extra_spaces, separators):
|
||||
try:
|
||||
with open(file_path, 'r') as f:
|
||||
changelog = f.read()
|
||||
except FileNotFoundError:
|
||||
print(f"Error: File '{file_path}' not found.")
|
||||
sys.exit(1)
|
||||
|
||||
# Regex to match the version block and stop at the next version or any line with square brackets
|
||||
version_pattern = re.compile(rf"## \[{version}\] - (\d{{4}}-\d{{2}}-\d{{2}})\n(.*?)(?=## \[|\[Unreleased\]:|\[\d+\.\d+\.\d+\]:|$)", re.DOTALL)
|
||||
match = version_pattern.search(changelog)
|
||||
|
||||
if not match:
|
||||
print(f"Version {version} not found.")
|
||||
return
|
||||
|
||||
date, content = match.groups()
|
||||
|
||||
if title_only:
|
||||
print(f"Version {version} - {date}")
|
||||
else:
|
||||
|
||||
if separators is not None:
|
||||
content = re.sub(r'^(###.*?)$', '_' * separators + r'\n\1', content, flags=re.MULTILINE)
|
||||
|
||||
cleaned_content = re.sub(r'### ', '', content) # Remove ###
|
||||
|
||||
if extra_spaces:
|
||||
cleaned_content = re.sub(r'(?<!\n)\n(?!\n)', '\n\n', cleaned_content)
|
||||
|
||||
print(cleaned_content)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Extract and format a specific version from CHANGELOG.md")
|
||||
parser.add_argument("-v", "--version", required=True, help="Version to extract (e.g., 1.0.1)")
|
||||
parser.add_argument("-f", "--file", required=True, help="Path to CHANGELOG.md file")
|
||||
parser.add_argument("-t", "--title-only", action="store_true", help="Print the title only")
|
||||
parser.add_argument("-s", "--extra-spaces", action="store_true", help="Add extra spaces between lines")
|
||||
parser.add_argument("-a", "--separators", type=int, required=False, help="Number of underscores for separators")
|
||||
|
||||
args = parser.parse_args()
|
||||
parse_changelog(args.file, args.version, args.title_only, args.extra_spaces, args.separators)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
41
kibot_resources/scripts/get_changelog_version.py
Normal file
41
kibot_resources/scripts/get_changelog_version.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import re
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
def get_last_version(file_path):
|
||||
try:
|
||||
with open(file_path, 'r') as file:
|
||||
content = file.read()
|
||||
|
||||
# Regex to match version entries
|
||||
version_pattern = r"## \[(.*?)\]"
|
||||
versions = re.findall(version_pattern, content)
|
||||
|
||||
if not versions:
|
||||
return "N/A"
|
||||
|
||||
# Check the last entry
|
||||
last_version = versions[0] # First match is the most recent
|
||||
|
||||
if last_version.lower() == "unreleased":
|
||||
if len(versions) > 1:
|
||||
second_last_version = versions[1]
|
||||
return f"{second_last_version}+ (Unreleased)"
|
||||
else:
|
||||
return "(Unreleased)"
|
||||
else:
|
||||
return last_version
|
||||
|
||||
except FileNotFoundError:
|
||||
return f"File '{file_path}' not found."
|
||||
except Exception as e:
|
||||
return f"An error occurred: {e}"
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Get the latest version from a changelog file.")
|
||||
parser.add_argument("-f", "--file", required=True, help="Path to the changelog file.")
|
||||
args = parser.parse_args()
|
||||
|
||||
version = get_last_version(args.file)
|
||||
if version:
|
||||
print(version)
|
||||
49
kibot_resources/scripts/get_sheet_title.py
Normal file
49
kibot_resources/scripts/get_sheet_title.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import argparse
|
||||
import xml.etree.ElementTree as ET
|
||||
import sys
|
||||
|
||||
def get_sheet_title(file_path, page_number, dots_number):
|
||||
try:
|
||||
tree = ET.parse(file_path)
|
||||
root = tree.getroot()
|
||||
|
||||
page_number = str(page_number)
|
||||
titles = []
|
||||
|
||||
for sheet in root.findall(".//sheet"):
|
||||
number = sheet.get("number")
|
||||
if number == page_number:
|
||||
# Get the last part of the 'name' attribute after '/'
|
||||
name = sheet.get("name")
|
||||
title_block = sheet.find("title_block")
|
||||
title = title_block.find("title").text if title_block is not None else None
|
||||
if name:
|
||||
titles.append(name.split("/")[-2 if name.endswith("/") else -1])
|
||||
|
||||
if not titles:
|
||||
print('.'*dots_number)
|
||||
|
||||
elif len(set(titles)) > 1:
|
||||
print("Conflicting page numbers")
|
||||
else:
|
||||
print(titles[0])
|
||||
except ET.ParseError:
|
||||
print("Error: Invalid XML format")
|
||||
except FileNotFoundError:
|
||||
print("Error: XML File not found")
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Get the sheet title based on page number from a KiCad XML file")
|
||||
parser.add_argument("-p", "--page-number", type=int, required=True, help="Page number to search")
|
||||
parser.add_argument("-f", "--file", type=str, required=True, help="Path to the schematic XML file")
|
||||
parser.add_argument("-d", "--dots-number", type=int, required=True, help="Number of dots for empty lines")
|
||||
|
||||
args = parser.parse_args()
|
||||
get_sheet_title(args.file, args.page_number, args.dots_number)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user