diff --git a/.github/workflows/sdk-build.yml b/.github/workflows/sdk-build.yml index 895a608d..5c8798b6 100644 --- a/.github/workflows/sdk-build.yml +++ b/.github/workflows/sdk-build.yml @@ -38,6 +38,8 @@ jobs: pylint src --errors-only --disable=E0401,E0611 --ignore=build # check for lint pylint ./src --disable=all --enable=C0103,C0301 --ignore=build --max-line-length=127 + - name: Check license headers + run: python scripts/license_header.py src - name: Test with pytest run: | coverage run -m pytest ./tests/unit diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f172fbb..383982f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ All notable changes to the Zowe Client Python SDK will be documented in this fil - *Breaking*: Revised function names in `Logger` class and `files` class into snake_case. Enabled pylint rule to enforce function case. [#315] (https://github.com/zowe/zowe-client-python-sdk/issues/315) +- Added checks and auto addition for license headers on workflow. [#293] (https://github.com/zowe/zowe-client-python-sdk/issues/293) + ### Bug Fixes ## `1.0.0-dev18` diff --git a/scripts/license_header.py b/scripts/license_header.py new file mode 100644 index 00000000..be195de6 --- /dev/null +++ b/scripts/license_header.py @@ -0,0 +1,56 @@ +import os +import sys + +# Define the license header you expect in each file +LICENSE_HEADER = '''"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +"""''' + + +def check_and_add_license_header(file_path, write_header): + with open(file_path, "r+", encoding="utf-8") as file: + content = file.read() + if LICENSE_HEADER not in content: + if write_header: + print(f"Adding license header to: {file_path}") + file.seek(0, 0) + file.write(LICENSE_HEADER + "\n" + content) + return False + return True + + +def main(): + if len(sys.argv) > 3: + print("Usage: python check_license_header.py optional(W)") + sys.exit(1) + + directory = sys.argv[1] + write_header = True if len(sys.argv) == 3 and sys.argv[2] == "W" else False + all_files_passed = True + + for root, _, files in os.walk(directory): + if "build" in root.split(os.path.sep): + continue + for file in files: + if file.endswith(".py"): + file_path = os.path.join(root, file) + if not check_and_add_license_header(file_path, write_header): + print(f"License header missing in: {file_path}") + all_files_passed = False + + if not all_files_passed: + sys.exit(1) + else: + print("All files have the correct license header.") + + +if __name__ == "__main__": + main() diff --git a/src/_version.py b/src/_version.py index 26238316..715fc168 100644 --- a/src/_version.py +++ b/src/_version.py @@ -1 +1,12 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" __version__ = "1.0.0-dev18" diff --git a/src/core/setup.py b/src/core/setup.py index 98bd524d..b92b2a5b 100644 --- a/src/core/setup.py +++ b/src/core/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/core/zowe/core_for_zowe_sdk/__init__.py b/src/core/zowe/core_for_zowe_sdk/__init__.py index 55bf9068..798c95d9 100644 --- a/src/core/zowe/core_for_zowe_sdk/__init__.py +++ b/src/core/zowe/core_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - Core package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from .config_file import ConfigFile @@ -7,10 +15,10 @@ from .constants import constants from .credential_manager import CredentialManager from .exceptions import * +from .logger import Log from .profile_manager import ProfileManager from .request_handler import RequestHandler from .sdk_api import SdkApi from .session import Session from .session_constants import * from .zosmf_profile import ZosmfProfile -from .logger import Log \ No newline at end of file diff --git a/src/core/zowe/core_for_zowe_sdk/config_file.py b/src/core/zowe/core_for_zowe_sdk/config_file.py index bd12a91b..62e4ca18 100644 --- a/src/core/zowe/core_for_zowe_sdk/config_file.py +++ b/src/core/zowe/core_for_zowe_sdk/config_file.py @@ -9,7 +9,6 @@ Copyright Contributors to the Zowe Project. """ - import json import os.path import re diff --git a/src/core/zowe/core_for_zowe_sdk/custom_warnings.py b/src/core/zowe/core_for_zowe_sdk/custom_warnings.py index 23b14a73..12f7f567 100644 --- a/src/core/zowe/core_for_zowe_sdk/custom_warnings.py +++ b/src/core/zowe/core_for_zowe_sdk/custom_warnings.py @@ -1,4 +1,14 @@ -"""A public module for custom warnings.""" +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" class ProfileNotFoundWarning(Warning): diff --git a/src/core/zowe/core_for_zowe_sdk/logger.py b/src/core/zowe/core_for_zowe_sdk/logger.py index 11199456..c3f2cd7c 100644 --- a/src/core/zowe/core_for_zowe_sdk/logger.py +++ b/src/core/zowe/core_for_zowe_sdk/logger.py @@ -1,8 +1,13 @@ -""" -Logger module for handling application logging. +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 -This module provides the `Log` class which allows for registering, -setting levels, opening, and closing loggers. +Copyright Contributors to the Zowe Project. """ import logging diff --git a/src/secrets/zowe/secrets_for_zowe_sdk/__init__.py b/src/secrets/zowe/secrets_for_zowe_sdk/__init__.py index f80fb08b..823a1512 100644 --- a/src/secrets/zowe/secrets_for_zowe_sdk/__init__.py +++ b/src/secrets/zowe/secrets_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - Client Secrets package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from . import keyring diff --git a/src/setup.py b/src/setup.py index 32d9596d..4b0d4767 100644 --- a/src/setup.py +++ b/src/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import os.path import uuid diff --git a/src/zos_console/setup.py b/src/zos_console/setup.py index 8eb2c191..0336d0a7 100644 --- a/src/zos_console/setup.py +++ b/src/zos_console/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/zos_console/zowe/zos_console_for_zowe_sdk/__init__.py b/src/zos_console/zowe/zos_console_for_zowe_sdk/__init__.py index 80a76493..e119b351 100644 --- a/src/zos_console/zowe/zos_console_for_zowe_sdk/__init__.py +++ b/src/zos_console/zowe/zos_console_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - z/OS Console package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from .console import Console diff --git a/src/zos_console/zowe/zos_console_for_zowe_sdk/console.py b/src/zos_console/zowe/zos_console_for_zowe_sdk/console.py index 4deb850c..9865cd8c 100644 --- a/src/zos_console/zowe/zos_console_for_zowe_sdk/console.py +++ b/src/zos_console/zowe/zos_console_for_zowe_sdk/console.py @@ -1,4 +1,14 @@ -"""Public module for class Console.""" +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" from typing import Optional diff --git a/src/zos_files/setup.py b/src/zos_files/setup.py index 6f1ea48d..a4cf3ea3 100644 --- a/src/zos_files/setup.py +++ b/src/zos_files/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/zos_files/zowe/zos_files_for_zowe_sdk/__init__.py b/src/zos_files/zowe/zos_files_for_zowe_sdk/__init__.py index 1f695830..c04223ac 100644 --- a/src/zos_files/zowe/zos_files_for_zowe_sdk/__init__.py +++ b/src/zos_files/zowe/zos_files_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - z/OS Files package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from . import constants, exceptions diff --git a/src/zos_jobs/setup.py b/src/zos_jobs/setup.py index 72eeb803..c885b8ae 100644 --- a/src/zos_jobs/setup.py +++ b/src/zos_jobs/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/zos_jobs/zowe/zos_jobs_for_zowe_sdk/__init__.py b/src/zos_jobs/zowe/zos_jobs_for_zowe_sdk/__init__.py index e72a812f..102adc80 100644 --- a/src/zos_jobs/zowe/zos_jobs_for_zowe_sdk/__init__.py +++ b/src/zos_jobs/zowe/zos_jobs_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - z/OS Jobs package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from .jobs import Jobs diff --git a/src/zos_tso/setup.py b/src/zos_tso/setup.py index fc4ea7dc..46d96344 100644 --- a/src/zos_tso/setup.py +++ b/src/zos_tso/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/zos_tso/zowe/zos_tso_for_zowe_sdk/__init__.py b/src/zos_tso/zowe/zos_tso_for_zowe_sdk/__init__.py index c560ceb0..d9e5e2e5 100644 --- a/src/zos_tso/zowe/zos_tso_for_zowe_sdk/__init__.py +++ b/src/zos_tso/zowe/zos_tso_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - z/OS TSO package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from .tso import Tso diff --git a/src/zosmf/setup.py b/src/zosmf/setup.py index 57d65522..644192c1 100644 --- a/src/zosmf/setup.py +++ b/src/zosmf/setup.py @@ -1,3 +1,14 @@ +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. +""" import sys from setuptools import find_namespace_packages, setup diff --git a/src/zosmf/zowe/zosmf_for_zowe_sdk/__init__.py b/src/zosmf/zowe/zosmf_for_zowe_sdk/__init__.py index 4f058d65..9599fdb4 100644 --- a/src/zosmf/zowe/zosmf_for_zowe_sdk/__init__.py +++ b/src/zosmf/zowe/zosmf_for_zowe_sdk/__init__.py @@ -1,5 +1,13 @@ -""" -Zowe Python SDK - z/OSMF package +"""Zowe Python Client SDK. + +This program and the accompanying materials are made available under the terms of the +Eclipse Public License v2.0 which accompanies this distribution, and is available at + +https://www.eclipse.org/legal/epl-v20.html + +SPDX-License-Identifier: EPL-2.0 + +Copyright Contributors to the Zowe Project. """ from .zosmf import Zosmf diff --git a/src/zosmf/zowe/zosmf_for_zowe_sdk/zosmf.py b/src/zosmf/zowe/zosmf_for_zowe_sdk/zosmf.py index ed956d20..94a61389 100644 --- a/src/zosmf/zowe/zosmf_for_zowe_sdk/zosmf.py +++ b/src/zosmf/zowe/zosmf_for_zowe_sdk/zosmf.py @@ -7,7 +7,7 @@ SPDX-License-Identifier: EPL-2.0 -Copyright Contributors to the Zowe project. +Copyright Contributors to the Zowe Project. """ from zowe.core_for_zowe_sdk import SdkApi