146 lines
4.7 KiB
Python
146 lines
4.7 KiB
Python
# Based on Arma 3 make.py
|
|
# https://github.com/acemod/arma-project-template/blob/master/tools/make.py
|
|
|
|
__version__ = "0.1"
|
|
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
import os
|
|
|
|
# Check Python version
|
|
if sys.version_info[0] != 3:
|
|
print("Python 3 is required.")
|
|
sys.exit(1)
|
|
|
|
# Globals
|
|
push_commit = False
|
|
framework_version = "0.0.0.0"
|
|
|
|
|
|
def bump_version(version_increments=[]):
|
|
if not version_increments:
|
|
print("No increment was given. Please provide one of the following:")
|
|
print("'increment_major', 'increment_minor', 'increment_patch', 'increment_build'")
|
|
sys.exit(1)
|
|
|
|
global framework_version
|
|
version_stamp = framework_version
|
|
|
|
try:
|
|
from pathlib import Path
|
|
|
|
script_path = Path(__file__).parents[1]
|
|
script_version_path = os.path.join(script_path, "addons/main/script_version.hpp")
|
|
|
|
if os.path.isfile(script_version_path):
|
|
file = open(script_version_path, "r")
|
|
hpp_text = file.read()
|
|
file.close()
|
|
|
|
if hpp_text:
|
|
major_text = re.search(r"#define MAJOR (.*\b)", hpp_text).group(1)
|
|
minor_text = re.search(r"#define MINOR (.*\b)", hpp_text).group(1)
|
|
patch_text = re.search(r"#define PATCH (.*\b)", hpp_text).group(1)
|
|
build_text = re.search(r"#define BUILD (.*\b)", hpp_text).group(1)
|
|
|
|
print("Current version: {}.{}.{}.{}".format(major_text, minor_text, patch_text, build_text))
|
|
|
|
if version_increments:
|
|
if "major" in version_increments:
|
|
major_text = int(major_text) + 1
|
|
minor_text = 0
|
|
patch_text = 0
|
|
elif "minor" in version_increments:
|
|
minor_text = int(minor_text) + 1
|
|
patch_text = 0
|
|
elif "patch" in version_increments:
|
|
patch_text = int(patch_text) + 1
|
|
|
|
# Always increment build
|
|
build_text = int(build_text) + 1
|
|
|
|
version_stamp = "{}.{}.{}.{}".format(major_text, minor_text, patch_text, build_text)
|
|
print("Incrementing version to {}".format(version_stamp))
|
|
|
|
with open(script_version_path, "w", newline="\n") as file:
|
|
file.writelines([
|
|
"#define MAJOR {}\n".format(major_text),
|
|
"#define MINOR {}\n".format(minor_text),
|
|
"#define PATCH {}\n".format(patch_text),
|
|
"#define BUILD {}\n".format(build_text)
|
|
])
|
|
|
|
else:
|
|
print("Version file is missing or cannot be accessed.")
|
|
sys.exit(1)
|
|
|
|
except Exception as e:
|
|
print("Error in get_version(): {}".format(e))
|
|
print("Check the integrity of the file: {}".format(script_version_path))
|
|
print("Resetting to the default version stamp: {}".format(version_stamp))
|
|
sys.exit(1)
|
|
|
|
framework_version = version_stamp
|
|
|
|
# Set environment variable
|
|
subprocess.call("echo '::set-output name=VERSION::{}'".format(framework_version), shell=True)
|
|
|
|
git_push()
|
|
|
|
|
|
def git_push():
|
|
if not push_commit:
|
|
print("Skipping pushing commit...")
|
|
return
|
|
|
|
print("Pushing to remote...")
|
|
|
|
# Set up credentials
|
|
subprocess.call(["git", "config", "--local", "user.name", "github-actions"])
|
|
subprocess.call(["git", "config", "--local", "user.email", "actions@no-reply.github.com"])
|
|
|
|
# Push commit
|
|
commit_msg = "v" + ".".join(framework_version.split(".")[0:3]) + " Build " + framework_version.split(".")[3]
|
|
|
|
subprocess.call(["git", "add", "-A"])
|
|
subprocess.call(["git", "commit", "-m", commit_msg])
|
|
subprocess.call(["git", "push", "origin", "master"])
|
|
|
|
print("Pushed commit to master: {}".format(commit_msg))
|
|
|
|
|
|
def main(argv):
|
|
print("This is version_bumper.py for MalFramework, based on the original make.py script by Ryan Schultz.")
|
|
|
|
global push_commit
|
|
global framework_version
|
|
|
|
# Which part of the version should be incremented
|
|
version_increments = []
|
|
if "increment_build" in argv:
|
|
argv.remove("increment_build")
|
|
version_increments.append("build")
|
|
if "increment_patch" in argv:
|
|
argv.remove("increment_patch")
|
|
version_increments.append("patch")
|
|
if "increment_minor" in argv:
|
|
argv.remove("increment_minor")
|
|
version_increments.append("minor")
|
|
if "increment_major" in argv:
|
|
argv.remove("increment_major")
|
|
version_increments.append("major")
|
|
|
|
# Should push a commit to master
|
|
if "push_commit" in argv:
|
|
argv.remove("push_commit")
|
|
push_commit = True
|
|
|
|
bump_version(version_increments)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|
|
|
|
print("Building successful.")
|
|
sys.exit(0) |