Files

56 lines
1.5 KiB
Python

#!/usr/bin/env python
"""Create a new CODESYS project via ScriptEngine."""
from __future__ import print_function
import os
from _common import emit, load_payload
def main():
payload = load_payload()
project_name = payload.get("project_name")
output_dir = payload.get("output_dir")
template = payload.get("template", "standard")
overwrite = bool(payload.get("overwrite", False))
if not project_name or not output_dir:
raise ValueError("project_name and output_dir are required.")
project_path = os.path.join(output_dir, "{0}.project".format(project_name))
if os.path.exists(project_path) and not overwrite:
raise RuntimeError("Project already exists: {0}".format(project_path))
if not os.path.exists(output_dir):
os.makedirs(output_dir)
if "projects" not in globals():
raise RuntimeError(
"CODESYS ScriptEngine globals not found. "
"Run this script through CODESYS.exe --runscript."
)
if projects.primary:
projects.primary.close()
if os.path.exists(project_path) and overwrite:
os.remove(project_path)
proj = projects.create(project_path, primary=True)
proj.save()
proj.close()
emit(
{
"ok": True,
"action": "create_project",
"project_name": project_name,
"template": template,
"project_path": project_path,
}
)
if __name__ == "__main__":
main()