From 652627bd79e0cad5f73b9e78fa35e485719a5e94 Mon Sep 17 00:00:00 2001 From: Lucas <169063936+mustbeperfect@users.noreply.github.com> Date: Sat, 22 Mar 2025 14:54:59 -0700 Subject: [PATCH] Added dynamic project count and minor fixes --- assets/osi_symbol.webp | Bin 0 -> 15292 bytes assets/readme.md | 1 - readmes/linux.md | 7 +++++ readmes/macos.md | 7 +++++ readmes/selfhost.md | 7 +++++ readmes/windows.md | 7 +++++ source/components/footer.md | 1 + source/components/header.md | 36 ++++++++++++++++-------- source/components/linuxheader.md | 3 ++ source/components/macosheader.md | 3 ++ source/components/selfhostheader.md | 3 ++ source/components/tags.md | 4 ++- source/components/windowsheader.md | 3 ++ source/scripts/mainheader_generator.py | 25 +++++++++++++++++ source/scripts/readme_generator.py | 9 ++++-- source/testing/test.md | 37 ++++++++++++++++++++++--- 16 files changed, 134 insertions(+), 19 deletions(-) create mode 100644 assets/osi_symbol.webp delete mode 100644 assets/readme.md create mode 100644 source/scripts/mainheader_generator.py diff --git a/assets/osi_symbol.webp b/assets/osi_symbol.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a0eeb545ee98dc4cf4a482c61cac82dd17cade8 GIT binary patch literal 15292 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%0D5D_^)GR1 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 O&n}nAe literal 0 HcmV?d00001 diff --git a/assets/readme.md b/assets/readme.md deleted file mode 100644 index 8b13789..0000000 --- a/assets/readme.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/readmes/linux.md b/readmes/linux.md index 9028d41..be37a57 100644 --- a/readmes/linux.md +++ b/readmes/linux.md @@ -1,4 +1,7 @@ +

[ Linux ]

+

Filtered for Linux and cross-platform apps

+ ## Tags ### Alerts @@ -12,6 +15,8 @@ `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -42,6 +47,7 @@ `CLI+` - CLI in addition to GUI `Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` + ## Table of Contents
@@ -1036,6 +1042,7 @@ | [XPipe](https://github.com/xpipe-io/xpipe) | Your entire server infrastructure at your fingertips | `Cross` | ![GitHub Repo stars](https://img.shields.io/github/stars/xpipe-io/xpipe?style=for-the-badge&label=%20&color=white) | + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post! diff --git a/readmes/macos.md b/readmes/macos.md index 57c5d6f..ae91d7d 100644 --- a/readmes/macos.md +++ b/readmes/macos.md @@ -1,4 +1,7 @@ +

[ MacOS ]

+

Filtered for MacOS and cross-platform apps

+ ## Tags ### Alerts @@ -12,6 +15,8 @@ `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -42,6 +47,7 @@ `CLI+` - CLI in addition to GUI `Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` + ## Table of Contents
@@ -1058,6 +1064,7 @@ | [XPipe](https://github.com/xpipe-io/xpipe) | Your entire server infrastructure at your fingertips | `Cross` | ![GitHub Repo stars](https://img.shields.io/github/stars/xpipe-io/xpipe?style=for-the-badge&label=%20&color=white) | + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post! diff --git a/readmes/selfhost.md b/readmes/selfhost.md index 87b7965..f63cae5 100644 --- a/readmes/selfhost.md +++ b/readmes/selfhost.md @@ -1,4 +1,7 @@ +

[ SelfHosted ]

+

Filtered for selfhosted apps

+ ## Tags ### Alerts @@ -12,6 +15,8 @@ `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -42,6 +47,7 @@ `CLI+` - CLI in addition to GUI `Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` + ## Table of Contents
@@ -930,6 +936,7 @@ | --- | --- | --- | --- | + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post! diff --git a/readmes/windows.md b/readmes/windows.md index 42699fd..968a1b5 100644 --- a/readmes/windows.md +++ b/readmes/windows.md @@ -1,4 +1,7 @@ +

[ Windows ]

+

Filtered for Windows and cross-platform apps

+ ## Tags ### Alerts @@ -12,6 +15,8 @@ `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -42,6 +47,7 @@ `CLI+` - CLI in addition to GUI `Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` + ## Table of Contents
@@ -1031,6 +1037,7 @@ | [XPipe](https://github.com/xpipe-io/xpipe) | Your entire server infrastructure at your fingertips | `Cross` | ![GitHub Repo stars](https://img.shields.io/github/stars/xpipe-io/xpipe?style=for-the-badge&label=%20&color=white) | + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post! diff --git a/source/components/footer.md b/source/components/footer.md index 09ebc03..97445d7 100644 --- a/source/components/footer.md +++ b/source/components/footer.md @@ -1,3 +1,4 @@ + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post! diff --git a/source/components/header.md b/source/components/header.md index e889c52..1eb7e16 100644 --- a/source/components/header.md +++ b/source/components/header.md @@ -1,15 +1,4 @@ - - - - -
πŸ‡ΊπŸ‡¦ v0.5.2-beta
- -

[ definitive-opensource ]

-

A definitive list of the best of everything open source

- -

Status: Active - Projects: 422

- > [!TIP] > Discussions and contributions are welcome! This project is in it's early stages and a lot hasn't been ironed out yet. For more information on [contributing](.github/CONTRIBUTING.md) and [guidelines](resources/dev/GUIDELINES.md) for open-source software submissions, consult their respective pages. @@ -44,6 +33,31 @@ This list aims to serve as a single centralized location for the best of open so Although the list is called definitive, in this context it doesn't quite mean the implied dictionary definition of finality. This project can only survive and thrive through continuous contributions by the community, as this list is, in itself, open source.
+
+ How The List Works
+ + Definitive-opensource was initially a single markdown file that was edited directly. However, as the list scaled, this manual approach proved cumbersome and limited. Additionally, as popularity increased, we recieved many requests for README's of individual platforms - something that would be not be realistic to do manually. +

 

+ As of v0.6.2-beta, the project was fundamentally re-made. Categories and applications were put in categories.json and applications.json, respectively. Python scripts were made to generate one main list and more platform-specific lists. This was paired with GitHub actions to run the scripts when any changes were made. This makes refactoring the list format far easier and eliminates typos. This new system also opens the door to +

 

+ The project architecture is as follows: + ```text + definitive-opensource/ + β”œβ”€β”€ assets/ + β”œβ”€β”€ readmes/ + β”œβ”€β”€ resources/ + β”‚ β”œβ”€β”€ backup/ + β”‚ └── dev/ + β”œβ”€β”€ source/ + β”‚ β”œβ”€β”€ components/ + β”‚ β”œβ”€β”€ data/ + β”‚ β”œβ”€β”€ scripts/ + | └── utils/ + β”‚ └── testing/ + └── README.md + ``` +
+ ## Project Status ```css Active - Active Development diff --git a/source/components/linuxheader.md b/source/components/linuxheader.md index e69de29..8b63825 100644 --- a/source/components/linuxheader.md +++ b/source/components/linuxheader.md @@ -0,0 +1,3 @@ + +

[ Linux ]

+

Filtered for Linux and cross-platform apps

diff --git a/source/components/macosheader.md b/source/components/macosheader.md index e69de29..5279545 100644 --- a/source/components/macosheader.md +++ b/source/components/macosheader.md @@ -0,0 +1,3 @@ + +

[ MacOS ]

+

Filtered for MacOS and cross-platform apps

diff --git a/source/components/selfhostheader.md b/source/components/selfhostheader.md index e69de29..cc758ac 100644 --- a/source/components/selfhostheader.md +++ b/source/components/selfhostheader.md @@ -0,0 +1,3 @@ + +

[ SelfHosted ]

+

Filtered for selfhosted apps

diff --git a/source/components/tags.md b/source/components/tags.md index f7ca52d..afd4afb 100644 --- a/source/components/tags.md +++ b/source/components/tags.md @@ -11,6 +11,8 @@ `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -40,4 +42,4 @@ `CLI+` - CLI in addition to GUI -`Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` \ No newline at end of file +`Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` diff --git a/source/components/windowsheader.md b/source/components/windowsheader.md index e69de29..1f9e93a 100644 --- a/source/components/windowsheader.md +++ b/source/components/windowsheader.md @@ -0,0 +1,3 @@ + +

[ Windows ]

+

Filtered for Windows and cross-platform apps

diff --git a/source/scripts/mainheader_generator.py b/source/scripts/mainheader_generator.py new file mode 100644 index 0000000..2fc2c86 --- /dev/null +++ b/source/scripts/mainheader_generator.py @@ -0,0 +1,25 @@ +import json + +def generate_mainheader(): + with open("source/data/applications.json", "r", encoding="utf-8") as f: + data = json.load(f) + + project_count = len(data.get("applications", [])) + + header_content = f""" + + + + +
πŸ‡ΊπŸ‡¦ v0.5.2-beta
+ +

[ definitive-opensource ]

+

A definitive list of the best of everything open source

+ +

Status: Active - Projects: {project_count}

+""" + + return header_content + +if __name__ == "__main__": + generate_mainheader() diff --git a/source/scripts/readme_generator.py b/source/scripts/readme_generator.py index 7be5691..39207fa 100644 --- a/source/scripts/readme_generator.py +++ b/source/scripts/readme_generator.py @@ -1,6 +1,7 @@ import os from tableofcontents_generator import generate_table_of_contents from contents_generator import generate_contents +from mainheader_generator import generate_mainheader # List of target platforms platforms = ["all", "windows", "macos", "linux", "selfhost"] @@ -17,6 +18,10 @@ header_files = { def generate_readme_for_platform(platform): content = "" header_file = header_files.get(platform, "source/components/header.md") + + # Inject mainheader with dynamic project count + if platform == "all": + content += generate_mainheader() # Inject header (for 'all', use header.md; for others, use the platform-specific header) with open(header_file, "r", encoding="utf-8") as f: @@ -30,7 +35,7 @@ def generate_readme_for_platform(platform): toc_md = generate_table_of_contents() content += toc_md + "\n" - # Generate the actual list of contents (Markdown list) for the given platform + # Generate the actual markdown list of contents for the given platform contents_md = generate_contents(platform) content += contents_md + "\n" @@ -38,7 +43,7 @@ def generate_readme_for_platform(platform): with open("source/components/footer.md", "r", encoding="utf-8") as f: content += f.read() + "\n" - # Write output file; for "all" use README.md, otherwise README-.md + # Write output file output_filename = "source/testing/test.md" if platform == "all" else f"readmes/{platform}.md" with open(output_filename, "w", encoding="utf-8") as f: f.write(content) diff --git a/source/testing/test.md b/source/testing/test.md index 99c22ce..06e28c4 100644 --- a/source/testing/test.md +++ b/source/testing/test.md @@ -1,14 +1,14 @@ - + - +
πŸ‡ΊπŸ‡¦ v0.5.2-beta

[ definitive-opensource ]

-

A definitive list of the best of everything open source

+

A definitive list of the best of everything open source

-

Status: Active - Projects: 422

+

Status: Active - Projects: 421

> [!TIP] > Discussions and contributions are welcome! This project is in it's early stages and a lot hasn't been ironed out yet. For more information on [contributing](.github/CONTRIBUTING.md) and [guidelines](resources/dev/GUIDELINES.md) for open-source software submissions, consult their respective pages. @@ -44,6 +44,31 @@ This list aims to serve as a single centralized location for the best of open so Although the list is called definitive, in this context it doesn't quite mean the implied dictionary definition of finality. This project can only survive and thrive through continuous contributions by the community, as this list is, in itself, open source.
+
+ How The List Works
+ + Definitive-opensource was initially a single markdown file that was edited directly. However, as the list scaled, this manual approach proved cumbersome and limited. Additionally, as popularity increased, we recieved many requests for README's of individual platforms - something that would be not be realistic to do manually. +

 

+ As of v0.6.2-beta, the project was fundamentally re-made. Categories and applications were put in categories.json and applications.json, respectively. Python scripts were made to generate one main list and more platform-specific lists. This was paired with GitHub actions to run the scripts when any changes were made. This makes refactoring the list format far easier and eliminates typos. This new system also opens the door to +

 

+ The project architecture is as follows: + ```text + definitive-opensource/ + β”œβ”€β”€ assets/ + β”œβ”€β”€ readmes/ + β”œβ”€β”€ resources/ + β”‚ β”œβ”€β”€ backup/ + β”‚ └── dev/ + β”œβ”€β”€ source/ + β”‚ β”œβ”€β”€ components/ + β”‚ β”œβ”€β”€ data/ + β”‚ β”œβ”€β”€ scripts/ + | └── utils/ + β”‚ └── testing/ + └── README.md + ``` +
+ ## Project Status ```css Active - Active Development @@ -74,6 +99,8 @@ Abandoned - Development Halted `πŸŸ₯` - Corporate influence +`πŸ”Ί` - Commercial + `πŸ§ͺ` - Experimental (Pre-Alpha) `🚧` - Critically unstable/buggy @@ -104,6 +131,7 @@ Abandoned - Development Halted `CLI+` - CLI in addition to GUI `Windows`, `MacOS`, `Linux`, `Android`, `IOS`, `CLI`, `SelfHost`, `Web`, `VSCode`, `JetBrains`, `Chromium`, `Firefox`, `Plugin`, `Extension`, `N/A` + ## Table of Contents
@@ -1276,6 +1304,7 @@ Abandoned - Development Halted | [XPipe](https://github.com/xpipe-io/xpipe) | Your entire server infrastructure at your fingertips | `Cross` | ![GitHub Repo stars](https://img.shields.io/github/stars/xpipe-io/xpipe?style=for-the-badge&label=%20&color=white) | + ## Honorable Mentions of Closed-Source Software Some proprietary software just deserve recognition. - [Davinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) - Professional Editing, Color, Effects and Audio Post!