41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
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) |