-
-
Notifications
You must be signed in to change notification settings - Fork 798
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' of https://github.com/nitishkumar333/talawa-admin
- Loading branch information
Showing
153 changed files
with
25,494 additions
and
4,189 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: UTF-8 -*- | ||
"""Script to limit number of file changes in single PR. | ||
Methodology: | ||
Analyses the Pull request to find if the count of file changed in a pr | ||
exceeds a pre-defined nummber 20 | ||
This scripts encourages contributors to align with project practices, | ||
reducing the likelihood of unintentional merges into incorrect branches. | ||
NOTE: | ||
This script complies with our python3 coding and documentation standards. | ||
It complies with: | ||
1) Pylint | ||
2) Pydocstyle | ||
3) Pycodestyle | ||
4) Flake8 | ||
""" | ||
|
||
import sys | ||
import argparse | ||
import subprocess | ||
|
||
|
||
def _count_changed_files(base_branch, pr_branch): | ||
""" | ||
Count the number of changed files between two branches. | ||
Args: | ||
base_branch (str): The base branch. | ||
pr_branch (str): The PR branch. | ||
Returns: | ||
int: The number of changed files. | ||
Raises: | ||
SystemExit: If an error occurs during execution. | ||
""" | ||
base_branch = f"origin/{base_branch}" | ||
pr_branch = f"origin/{pr_branch}" | ||
|
||
command = f"git diff --name-only {base_branch}...{pr_branch} | wc -l" | ||
|
||
try: | ||
# Run git command to get the list of changed files | ||
process = subprocess.Popen( | ||
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE | ||
) | ||
output, error = process.communicate() | ||
except Exception as e: | ||
print(f"Error: {e}") | ||
sys.exit(1) | ||
|
||
file_count = int(output.strip()) | ||
return file_count | ||
|
||
def _arg_parser_resolver(): | ||
"""Resolve the CLI arguments provided by the user. | ||
Args: | ||
None | ||
Returns: | ||
result: Parsed argument object | ||
""" | ||
parser = argparse.ArgumentParser() | ||
parser.add_argument( | ||
"--base_branch", | ||
type=str, | ||
required=True, | ||
help="Base branch where pull request should be made." | ||
), | ||
parser.add_argument( | ||
"--pr_branch", | ||
type=str, | ||
required=True, | ||
help="PR branch from where the pull request is made.", | ||
), | ||
parser.add_argument( | ||
"--file_count", | ||
type=int, | ||
default=20, | ||
help="Number of files changes allowed in a single commit") | ||
return parser.parse_args() | ||
|
||
|
||
def main(): | ||
""" | ||
Execute the script's main functionality. | ||
This function serves as the entry point for the script. It performs | ||
the following tasks: | ||
1. Validates and retrieves the base branch and PR commit from | ||
command line arguments. | ||
2. Counts the number of changed files between the specified branches. | ||
3. Checks if the count of changed files exceeds the acceptable | ||
limit (20). | ||
4. Provides informative messages based on the analysis. | ||
Raises: | ||
SystemExit: If an error occurs during execution. | ||
""" | ||
|
||
args = _arg_parser_resolver() | ||
|
||
base_branch = args.base_branch | ||
pr_branch = args.pr_branch | ||
|
||
print(f"You are trying to merge on branch: {base_branch}") | ||
print(f"You are making commit from your branch: {pr_branch}") | ||
|
||
# Count changed files | ||
file_count = _count_changed_files(base_branch, pr_branch) | ||
print(f"Number of changed files: {file_count}") | ||
|
||
# Check if the count exceeds 20 | ||
if file_count > args.file_count: | ||
print("Error: Too many files (greater than 20) changed in the pull request.") | ||
print("Possible issues:") | ||
print("- Contributor may be merging into an incorrect branch.") | ||
print("- Source branch may be incorrect please use develop as source branch.") | ||
sys.exit(1) | ||
|
||
|
||
if __name__ == "__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: UTF-8 -*- | ||
""" | ||
Script to make Markdown files MPX compatible. | ||
This script scans Markdown files and escapes special characters (<, >, {, }) | ||
to make them compatible with the MPX standard used in Docusaurus v3. | ||
This script complies with: | ||
1) Pylint | ||
2) Pydocstyle | ||
3) Pycodestyle | ||
4) Flake8 | ||
""" | ||
|
||
import os | ||
import argparse | ||
import re | ||
|
||
def escape_mpx_characters(text): | ||
""" | ||
Escape special characters in a text string for MPX compatibility. | ||
Avoids escaping already escaped characters. | ||
Args: | ||
text: A string containing the text to be processed. | ||
Returns: | ||
A string with special characters (<, >, {, }) escaped, avoiding | ||
double escaping. | ||
""" | ||
# Regular expressions to find unescaped special characters | ||
patterns = { | ||
"<": r"(?<!\\)<", | ||
">": r"(?<!\\)>", | ||
"{": r"(?<!\\){", | ||
"}": r"(?<!\\)}" | ||
} | ||
|
||
# Replace unescaped special characters | ||
for char, pattern in patterns.items(): | ||
text = re.sub(pattern, f"\\{char}", text) | ||
|
||
return text | ||
|
||
def process_file(filepath): | ||
""" | ||
Process a single Markdown file for MPX compatibility. | ||
Args: | ||
filepath: The path to the Markdown file to process. | ||
Returns: | ||
None, writes the processed content back to the file only if there are changes. | ||
""" | ||
with open(filepath, 'r', encoding='utf-8') as file: | ||
content = file.read() | ||
|
||
# Escape MPX characters | ||
new_content = escape_mpx_characters(content) | ||
|
||
# Write the processed content back to the file only if there is a change | ||
if new_content != content: | ||
with open(filepath, 'w', encoding='utf-8') as file: | ||
file.write(new_content) | ||
|
||
def main(): | ||
""" | ||
Main function to process all Markdown files in a given directory. | ||
Scans for all Markdown files in the specified directory and processes each | ||
one for MPX compatibility. | ||
Args: | ||
None | ||
Returns: | ||
None | ||
""" | ||
parser = argparse.ArgumentParser(description="Make Markdown files MPX compatible.") | ||
parser.add_argument( | ||
"--directory", | ||
type=str, | ||
required=True, | ||
help="Directory containing Markdown files to process." | ||
) | ||
|
||
args = parser.parse_args() | ||
|
||
# Process each Markdown file in the directory | ||
for root, _, files in os.walk(args.directory): | ||
for file in files: | ||
if file.lower().endswith(".md"): | ||
process_file(os.path.join(root, file)) | ||
|
||
if __name__ == "__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.