Apply obsidian-dotfiles template structure to repository#28
Apply obsidian-dotfiles template structure to repository#28professoroakz merged 5 commits intomainfrom
Conversation
Co-authored-by: professoroakz <6593422+professoroakz@users.noreply.github.com>
The comment appears to be incomplete ("Make sure running"). I've verified that the Makefile and scripts are working correctly:
Could you please clarify what you'd like me to ensure is running? For example:
I'll continue completing the remaining tasks from the PR while awaiting your clarification. |
professoroakz
left a comment
There was a problem hiding this comment.
Fix all situations and make sure running + building + making + package.
professoroakz
left a comment
There was a problem hiding this comment.
Fix my situation up and make sure running compiling and packaging.
…es template Co-authored-by: professoroakz <6593422+professoroakz@users.noreply.github.com>
Co-authored-by: professoroakz <6593422+professoroakz@users.noreply.github.com>
Co-authored-by: professoroakz <6593422+professoroakz@users.noreply.github.com>
|
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
There was a problem hiding this comment.
Pull request overview
Applies a standardized “obsidian-dotfiles” template to this repo to add consistent automation, packaging scaffolding, and GitHub community/CI configuration.
Changes:
- Adds a large Makefile and cross-platform install scripts to automate common repo tasks and packaging.
- Introduces Python + Homebrew packaging scaffolding and related metadata files.
- Adds GitHub workflows and community health files (CI, CodeQL, dependency checks, templates).
Reviewed changes
Copilot reviewed 30 out of 31 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| setup.py | Adds setuptools-based packaging entrypoint. |
| pyproject.toml | Adds PEP 621 project metadata + tool configs (black/mypy/pytest). |
| requirements-dev.txt | Adds Python dev tool dependencies. |
| Makefile | Adds extensive automation targets (git ops, npm/python/docker/brew, stats/backup). |
| scripts/install.sh | Adds interactive *nix installer (npm global/local). |
| scripts/install.ps1 | Adds interactive PowerShell installer (npm global/local). |
| scripts/install.bat | Adds interactive Windows batch installer (npm global/local). |
| Formula/github-config.rb | Adds Homebrew formula for distribution. |
| homebrew/github-config.rb | Adds duplicate Homebrew formula under alternate path. |
| .github/workflows/ci.yml | Adds CI workflow running basic validation/tests + markdown lint. |
| .github/workflows/codeql.yml | Adds CodeQL scanning workflow. |
| .github/workflows/dependency-check.yml | Adds scheduled dependency check that files issues. |
| .github/pull_request_template.md | Adds PR template. |
| .github/ISSUE_TEMPLATE/bug_report.md | Adds bug report template. |
| .github/ISSUE_TEMPLATE/feature_request.md | Adds feature request template. |
| .github/ISSUE_TEMPLATE/documentation.md | Adds documentation issue template. |
| .github/ISSUE_TEMPLATE/config.yml | Configures issue template contact links / disables blank issues. |
| .github/CODEOWNERS | Adds default codeowner rules. |
| .github/FUNDING.yml | Adds funding configuration. |
| SECURITY.md | Adds security policy and reporting guidance. |
| CONTRIBUTING.md | Adds contribution guidelines and dev workflow. |
| CHANGELOG.md | Adds Keep-a-Changelog formatted changelog. |
| .gitignore | Expands ignore rules for build artifacts, env files, editors, etc. |
| .gitattributes | Adds line ending normalization and linguist hints. |
| .editorconfig | Adds editor defaults per file type. |
| .markdownlint.json | Adds markdownlint configuration. |
| .env.example | Adds baseline env var template. |
| .env.example.extended | Adds extended env var template for automation/publishing. |
| .bashrc.local | Adds bash aliases/functions for working with the repo. |
| .zshrc.local | Adds zsh aliases/functions for working with the repo. |
| .gitconfig.local | Adds optional local git configuration template. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| long_description=open("README.md").read(), | ||
| long_description_content_type="text/markdown", |
There was a problem hiding this comment.
long_description=open("README.md").read() leaves the file handle unclosed and relies on default encoding, which can break on Windows. Use a context manager to read README.md with an explicit encoding (e.g., UTF-8) so packaging is deterministic.
| [project] | ||
| name = "professoroakz-github" | ||
| version = "1.3.37" | ||
| description = "GitHub configuration repository containing profile settings, workflows, and project configurations" |
There was a problem hiding this comment.
The package version is defined in multiple places (VERSION file read in setup.py vs a hard-coded [project].version in pyproject.toml). This can easily drift and produce inconsistent artifacts depending on which build path is used; pick a single source of truth (prefer pyproject.toml) and derive the other from it, or configure setuptools to read the version dynamically from VERSION.
| [tool.setuptools] | ||
| packages = [] | ||
|
|
There was a problem hiding this comment.
[tool.setuptools] packages = [] means the built wheel/sdist will not contain any importable modules, and (without additional config like package-data/manifest rules) will likely ship only metadata. If the intent is to distribute config/assets via PyPI, add an actual package (even a small one) and include the required files as package data, or remove the Python packaging scaffolding to avoid publishing an empty artifact.
| [tool.setuptools] | |
| packages = [] |
| desc "GitHub configuration repository containing profile settings, workflows, and project configurations" | ||
| homepage "https://github.com/professoroakz/.github" | ||
| url "https://github.com/professoroakz/.github/archive/refs/tags/v1.3.37.tar.gz" | ||
| sha256 "" # To be filled when creating actual releases |
There was a problem hiding this comment.
The formula has an empty sha256, which makes it invalid for Homebrew and prevents installation/auditing. Homebrew formulas should pin a real tarball checksum (or use head for unreleased builds) and update it on each release.
| sha256 "" # To be filled when creating actual releases | |
| sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |
| def install | ||
| # Install npm package globally | ||
| system "npm", "install", "-g", "@professoroakz/github" | ||
|
|
There was a problem hiding this comment.
Running npm install -g @professoroakz/github during brew install will fetch from the network and install globally, which is not acceptable for reproducible Homebrew builds and may fail in the sandbox. Instead, vendor the npm artifact (or use npm install against a local tarball) and install into libexec/bin per Homebrew Node formula conventions.
| url "https://github.com/professoroakz/.github/archive/refs/tags/v1.3.37.tar.gz" | ||
| sha256 "" # To be filled when creating actual releases |
There was a problem hiding this comment.
The formula has an empty sha256, which makes it invalid for Homebrew and prevents installation/auditing. Homebrew formulas should pin a real tarball checksum (or use head for unreleased builds) and update it on each release.
| url "https://github.com/professoroakz/.github/archive/refs/tags/v1.3.37.tar.gz" | |
| sha256 "" # To be filled when creating actual releases | |
| head "https://github.com/professoroakz/.github.git", branch: "main" |
| def install | ||
| # Install npm package globally | ||
| system "npm", "install", "-g", "@professoroakz/github" | ||
|
|
There was a problem hiding this comment.
Running npm install -g @professoroakz/github during brew install will fetch from the network and install globally, which is not acceptable for reproducible Homebrew builds and may fail in the sandbox. Instead, vendor the npm artifact (or use npm install against a local tarball) and install into libexec/bin per Homebrew Node formula conventions.
| id: npm-deps | ||
| run: | | ||
| if [ -f package.json ]; then | ||
| npm outdated || echo "updates_available=true" >> $GITHUB_OUTPUT |
There was a problem hiding this comment.
npm outdated returns a non-zero exit code both when updates exist and when an error occurs (e.g., registry/network issues). With the current npm outdated || echo ... logic, transient failures will be treated as “updates available” and create noisy issues. Capture and parse npm outdated --json (or check stderr/exit code separately) to distinguish real updates from errors.
| npm outdated || echo "updates_available=true" >> $GITHUB_OUTPUT | |
| # Run npm outdated in JSON mode, capturing stdout and stderr separately. | |
| # Do not rely on the exit code, since it is non-zero both for updates and for errors. | |
| OUTDATED_JSON=$(npm outdated --json 2>npm_outdated_err.log || true) | |
| # If there was any error output, treat this as a transient failure and do not mark updates as available. | |
| if [ -s npm_outdated_err.log ]; then | |
| echo "npm outdated encountered an error; skipping dependency update issue." | |
| echo "Error details:" | |
| cat npm_outdated_err.log | |
| exit 0 | |
| fi | |
| # If JSON output is non-empty and not an empty object, consider that updates are available. | |
| if [ -n "$OUTDATED_JSON" ] && [ "$OUTDATED_JSON" != "{}" ]; then | |
| echo "updates_available=true" >> "$GITHUB_OUTPUT" | |
| fi |
Description
Applied professoroakz/obsidian-dotfiles template structure to standardize repository automation, configuration, and tooling. Added 31 files (2,148 lines) implementing comprehensive build automation, multi-platform support, and CI/CD pipelines.
Configuration & Automation
.bashrc.local,.zshrc.local,.gitconfig.localfor environment setup.editorconfig,.gitattributes, enhanced.gitignore,.markdownlint.json.env.examplewith extended variant for comprehensive configurationGitHub Infrastructure
CODEOWNERS,FUNDING.yml, PR template, issue templates (bug/feature/docs)CHANGELOG.mdfollowing Keep a Changelog formatMulti-Platform Distribution
install.sh(Linux/Unix/Mac),install.bat,install.ps1(Windows)pyproject.toml,setup.py,requirements-dev.txtFormula/github-config.rbfor tap distributionKey Makefile Commands
Type of Change
How Has This Been Tested?
help,test,build,package,clean,verify,ci,info,stats)Checklist
Additional Notes
Template source: https://github.com/professoroakz/obsidian-dotfiles
Repository now supports:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.