mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
fe816ebb71
They are no longer used, since we can't use them when we use docker containers for linux ci.
(cherry picked from commit 45c055dc0c)
118 lines
5.0 KiB
Python
Executable File
118 lines
5.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
def _sprun(cmd: list, *args, **kwargs):
|
|
print("+ " + " ".join(cmd))
|
|
subprocess.run(cmd, check=True, *args, **kwargs)
|
|
|
|
def _sprun_shell(cmd: str, *args, **kwargs):
|
|
print("+ " + cmd)
|
|
subprocess.run(cmd, check=True, shell=True, *args, **kwargs)
|
|
|
|
def _ci_before_deploy():
|
|
docs_json_file = open("docs.json", "w")
|
|
_sprun(["sourcekitten", "doc", "--spm", "--module-name", "SWCompression"], stdout=docs_json_file)
|
|
docs_json_file.close()
|
|
_sprun(["jazzy"])
|
|
|
|
def _ci_install_macos():
|
|
script = """if brew ls --versions "git-lfs" >/dev/null; then
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade "git-lfs"
|
|
else
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install "git-lfs"
|
|
fi"""
|
|
_sprun_shell(script)
|
|
_sprun(["git", "lfs", "install"])
|
|
|
|
def _ci_script_macos():
|
|
_sprun_shell("xcodebuild -version")
|
|
_sprun(["swift", "--version"])
|
|
xcodebuild_command_parts = ["xcodebuild", "-quiet", "-project", "SWCompression.xcodeproj", "-scheme", "SWCompression"]
|
|
destinations_actions = [(["-destination 'platform=OS X'"], ["clean", "test"]),
|
|
(["-destination 'platform=iOS Simulator,name=iPhone 8'"], ["clean", "test"]),
|
|
(["-destination 'platform=watchOS Simulator,name=" + os.environ["WATCHOS_SIMULATOR"] + "'"], [os.environ["WATCHOS_ACTIONS"]]),
|
|
(["-destination 'platform=tvOS Simulator,name=Apple TV'"], ["clean", "test"])]
|
|
|
|
for destination, actions in destinations_actions:
|
|
xcodebuild_command = xcodebuild_command_parts + destination + actions
|
|
# If xcodebuild is not run inside shell, then destination parameters are ignored for some reason.
|
|
_sprun_shell(" ".join(xcodebuild_command))
|
|
|
|
def action_ci(args):
|
|
if args.cmd == "before-deploy":
|
|
_ci_before_deploy()
|
|
elif args.cmd == "install-macos":
|
|
_ci_install_macos()
|
|
elif args.cmd == "script-macos":
|
|
_ci_script_macos()
|
|
else:
|
|
raise Exception("Unknown CI command")
|
|
|
|
def action_cw(args):
|
|
_sprun(["rm", "-rf", "build/"])
|
|
_sprun(["rm", "-rf", "Carthage/"])
|
|
_sprun(["rm", "-rf", "docs/"])
|
|
_sprun(["rm", "-rf", "Pods/"])
|
|
_sprun(["rm", "-rf", ".build/"])
|
|
_sprun(["rm", "-f", "Cartfile.resolved"])
|
|
_sprun(["rm", "-f", "docs.json"])
|
|
_sprun(["rm", "-f", "Package.resolved"])
|
|
_sprun(["rm", "-f", "SWCompression.framework.zip"])
|
|
|
|
def _pw_macos(debug, xcf):
|
|
print("=> Downloading dependency (BitByteData) using Carthage")
|
|
script = ["carthage", "bootstrap", "--no-use-binaries"]
|
|
if debug:
|
|
script += ["--configuration", "Debug"]
|
|
if xcf:
|
|
script += ["--use-xcframeworks"]
|
|
_sprun(script)
|
|
|
|
def action_pw(args):
|
|
if args.os == "macos":
|
|
_pw_macos(args.debug, args.xcf)
|
|
elif args.os == "other":
|
|
pass
|
|
else:
|
|
raise Exception("Unknown OS")
|
|
if not args.no_test_files:
|
|
print("=> Downloading files used for testing")
|
|
_sprun(["git", "submodule", "update", "--init", "--recursive"])
|
|
_sprun(["cp", "Tests/Test Files/gitattributes-copy", "Tests/Test Files/.gitattributes"])
|
|
_sprun(["git", "lfs", "pull"], cwd="Tests/Test Files/")
|
|
_sprun(["git", "lfs", "checkout"], cwd="Tests/Test Files/")
|
|
|
|
parser = argparse.ArgumentParser(description="A tool with useful commands for developing SWCompression")
|
|
subparsers = parser.add_subparsers(title="commands", help="a command to perform", metavar="CMD")
|
|
|
|
# Parser for 'ci' command.
|
|
parser_ci = subparsers.add_parser("ci", help="a subset of commands used by CI",
|
|
description="a subset of commands used by CI")
|
|
parser_ci.add_argument("cmd", choices=["before-deploy", "install-macos", "script-macos"],
|
|
help="a command to perform on CI", metavar="CI_CMD")
|
|
parser_ci.set_defaults(func=action_ci)
|
|
|
|
# Parser for 'cleanup-workspace' command.
|
|
parser_cw = subparsers.add_parser("cleanup-workspace", help="cleanup workspace",
|
|
description="cleans workspace from files produced by various build systems")
|
|
parser_cw.set_defaults(func=action_cw)
|
|
|
|
# Parser for 'prepare-workspace' command.
|
|
parser_pw = subparsers.add_parser("prepare-workspace", help="prepare workspace",
|
|
description="prepares workspace for developing SWCompression")
|
|
parser_pw.add_argument("os", choices=["macos", "other"], help="development operating system", metavar="OS")
|
|
parser_pw.add_argument("--no-test-files", "-T", action="store_true", dest="no_test_files",
|
|
help="don't download example files used for testing")
|
|
parser_pw.add_argument("--debug", "-d", action="store_true", dest="debug",
|
|
help="build BitByteData in Debug configuration")
|
|
parser_pw.add_argument("--xcf", action="store_true", dest="xcf",
|
|
help="build BitByteData as a XCFramework")
|
|
parser_pw.set_defaults(func=action_pw)
|
|
|
|
args = parser.parse_args()
|
|
args.func(args)
|