Skip to content

Commit bcb40d9

Browse files
committed
Add final enterprise features and comprehensive tooling
Program.cs Enhancements: - Integrated stats, export, and import commands - Added beautiful formatted statistics output with emojis - Implemented export command with multiple format support (CSV, Markdown, JSON) - Implemented import command with confirmation prompt - Updated help text with all new commands - Registered ExportService and StatisticsService in DI container GitHub Templates & Workflows: - Bug report template with detailed sections - Feature request template with use case analysis - Documentation issue template - Pull request template with comprehensive checklist - Release workflow with automated builds for all platforms - Automated changelog extraction for releases - NuGet package publishing support Community & Governance: - SECURITY.md with responsible disclosure policy - Safe harbor for security researchers - Security best practices for users - CODE_OF_CONDUCT.md (Contributor Covenant 2.1) - Community impact guidelines - Clear enforcement procedures Build & Development Tools: - Makefile with 20+ commands for cross-platform development - Color-coded output for better visibility - Docker build and run targets - Example commands for quick testing - Install/uninstall targets for global tool - Code formatting and linting targets Shell Completions: - Bash completion script with command and option completion - Zsh completion script with descriptions - Installation instructions for multiple shells - Oh My Zsh integration support - Completion for file paths and formats README Enhancements: - Added 6 status badges (build, license, .NET version, version, PRs, CoC) - Prominent visibility of project health and status - Professional appearance for repository Documentation: - Comprehensive API documentation (docs/API.md) - Detailed interface descriptions - Method documentation with parameters and examples - Model documentation - Service usage examples - Error handling guidelines - Thread safety notes - Performance considerations Features Summary: - 🎯 Fully functional stats, export, and import commands - 📋 Professional GitHub templates for issues and PRs - 🔒 Security policy and code of conduct - 🛠️ Makefile for easy development - 💻 Shell completions for bash and zsh - 🚀 Automated release workflow - 📚 Complete API documentation - ⭐ README badges for professional appearance This update elevates the project to enterprise-grade with comprehensive tooling, documentation, and community governance structures.
1 parent 8ebd317 commit bcb40d9

File tree

14 files changed

+1987
-0
lines changed

14 files changed

+1987
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug or unexpected behavior
4+
title: '[BUG] '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Bug Description
10+
A clear and concise description of what the bug is.
11+
12+
## Steps To Reproduce
13+
1. Run command '...'
14+
2. With arguments '...'
15+
3. See error
16+
17+
## Expected Behavior
18+
A clear and concise description of what you expected to happen.
19+
20+
## Actual Behavior
21+
A clear and concise description of what actually happened.
22+
23+
## Environment
24+
- OS: [e.g., Windows 11, Ubuntu 22.04, macOS 14]
25+
- .NET Version: [e.g., .NET 8.0]
26+
- Task Manager Version: [e.g., 2.0.0]
27+
- Installation Method: [e.g., built from source, Docker, global tool]
28+
29+
## Tasks File (if relevant)
30+
```json
31+
// Paste relevant content from your tasks.json file
32+
```
33+
34+
## Error Messages
35+
```
36+
Paste any error messages or stack traces here
37+
```
38+
39+
## Screenshots
40+
If applicable, add screenshots to help explain your problem.
41+
42+
## Additional Context
43+
Add any other context about the problem here.
44+
45+
## Possible Solution
46+
If you have ideas on how to fix this, please share them here.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
name: Documentation Issue
3+
about: Report missing, incorrect, or unclear documentation
4+
title: '[DOCS] '
5+
labels: documentation
6+
assignees: ''
7+
---
8+
9+
## Documentation Issue
10+
Which documentation needs improvement?
11+
12+
- [ ] README.md
13+
- [ ] QUICKSTART.md
14+
- [ ] CONTRIBUTING.md
15+
- [ ] ARCHITECTURE.md
16+
- [ ] EXAMPLES.md
17+
- [ ] Code comments
18+
- [ ] Other: _______
19+
20+
## Current Documentation
21+
Link or quote the current documentation that needs improvement.
22+
23+
## Issue Description
24+
What is unclear, incorrect, or missing?
25+
26+
## Suggested Improvement
27+
How would you improve this documentation?
28+
29+
## Additional Context
30+
Add any other context or examples about the documentation issue.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature or enhancement
4+
title: '[FEATURE] '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Feature Description
10+
A clear and concise description of the feature you'd like to see.
11+
12+
## Problem Statement
13+
Describe the problem this feature would solve. Ex: "I'm always frustrated when..."
14+
15+
## Proposed Solution
16+
Describe how you envision this feature working.
17+
18+
## Alternative Solutions
19+
Describe any alternative solutions or features you've considered.
20+
21+
## Use Cases
22+
Provide specific examples of how this feature would be used:
23+
24+
1. Scenario 1: ...
25+
2. Scenario 2: ...
26+
3. Scenario 3: ...
27+
28+
## Implementation Ideas
29+
If you have ideas on how this could be implemented, share them here.
30+
31+
## Impact
32+
- Who would benefit from this feature?
33+
- How often would it be used?
34+
- Would this be a breaking change?
35+
36+
## Additional Context
37+
Add any other context, mockups, or examples about the feature request here.
38+
39+
## Willingness to Contribute
40+
- [ ] I am willing to submit a PR for this feature
41+
- [ ] I am willing to help test this feature
42+
- [ ] I can provide additional details if needed

.github/pull_request_template.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Pull Request
2+
3+
## Description
4+
<!-- Provide a clear and concise description of your changes -->
5+
6+
## Type of Change
7+
<!-- Mark the relevant option with an 'x' -->
8+
9+
- [ ] Bug fix (non-breaking change which fixes an issue)
10+
- [ ] New feature (non-breaking change which adds functionality)
11+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
12+
- [ ] Documentation update
13+
- [ ] Performance improvement
14+
- [ ] Code refactoring
15+
- [ ] Test coverage improvement
16+
- [ ] Build/CI improvement
17+
18+
## Related Issues
19+
<!-- Link to any related issues using #issue_number -->
20+
21+
Fixes #
22+
Relates to #
23+
24+
## Changes Made
25+
<!-- List the specific changes made in this PR -->
26+
27+
- Change 1
28+
- Change 2
29+
- Change 3
30+
31+
## Testing
32+
<!-- Describe the testing you've done -->
33+
34+
### Test Environment
35+
- OS: [e.g., Windows 11, Ubuntu 22.04, macOS 14]
36+
- .NET Version: [e.g., .NET 8.0]
37+
38+
### Test Cases
39+
- [ ] All existing tests pass
40+
- [ ] New tests added for new functionality
41+
- [ ] Manual testing performed
42+
43+
### Manual Testing Steps
44+
1. Step 1
45+
2. Step 2
46+
3. Step 3
47+
48+
## Screenshots/Output
49+
<!-- If applicable, add screenshots or command output -->
50+
51+
```
52+
Paste command output here
53+
```
54+
55+
## Checklist
56+
<!-- Mark completed items with an 'x' -->
57+
58+
- [ ] My code follows the project's code style (EditorConfig)
59+
- [ ] I have performed a self-review of my own code
60+
- [ ] I have commented my code, particularly in hard-to-understand areas
61+
- [ ] I have made corresponding changes to the documentation
62+
- [ ] My changes generate no new warnings
63+
- [ ] I have added tests that prove my fix is effective or that my feature works
64+
- [ ] New and existing unit tests pass locally with my changes
65+
- [ ] Any dependent changes have been merged and published
66+
67+
## Breaking Changes
68+
<!-- If this PR contains breaking changes, describe them here -->
69+
70+
None
71+
72+
## Migration Guide
73+
<!-- If this PR requires users to change their code/config, provide migration steps -->
74+
75+
N/A
76+
77+
## Performance Impact
78+
<!-- Describe any performance implications of your changes -->
79+
80+
- [ ] No performance impact
81+
- [ ] Performance improved
82+
- [ ] Performance degraded (explain why this is acceptable)
83+
84+
## Additional Notes
85+
<!-- Add any additional notes, concerns, or discussion points -->

.github/workflows/release.yml

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*.*.*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build-and-release:
13+
name: Build and Release
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Setup .NET
23+
uses: actions/setup-dotnet@v4
24+
with:
25+
dotnet-version: '8.0.x'
26+
27+
- name: Get version from tag
28+
id: get_version
29+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
30+
31+
- name: Restore dependencies
32+
run: dotnet restore
33+
34+
- name: Build
35+
run: dotnet build --configuration Release --no-restore
36+
37+
- name: Run tests
38+
run: dotnet test --configuration Release --no-build --verbosity normal
39+
40+
- name: Publish Linux x64
41+
run: |
42+
dotnet publish src/TaskManager.CLI/TaskManager.CLI.csproj \
43+
-c Release \
44+
-r linux-x64 \
45+
--self-contained \
46+
-p:PublishSingleFile=true \
47+
-p:PublishTrimmed=true \
48+
-o ./publish/linux-x64
49+
50+
- name: Publish Windows x64
51+
run: |
52+
dotnet publish src/TaskManager.CLI/TaskManager.CLI.csproj \
53+
-c Release \
54+
-r win-x64 \
55+
--self-contained \
56+
-p:PublishSingleFile=true \
57+
-p:PublishTrimmed=true \
58+
-o ./publish/win-x64
59+
60+
- name: Publish macOS x64
61+
run: |
62+
dotnet publish src/TaskManager.CLI/TaskManager.CLI.csproj \
63+
-c Release \
64+
-r osx-x64 \
65+
--self-contained \
66+
-p:PublishSingleFile=true \
67+
-p:PublishTrimmed=true \
68+
-o ./publish/osx-x64
69+
70+
- name: Publish macOS ARM64
71+
run: |
72+
dotnet publish src/TaskManager.CLI/TaskManager.CLI.csproj \
73+
-c Release \
74+
-r osx-arm64 \
75+
--self-contained \
76+
-p:PublishSingleFile=true \
77+
-p:PublishTrimmed=true \
78+
-o ./publish/osx-arm64
79+
80+
- name: Create archives
81+
run: |
82+
cd publish
83+
tar -czf taskman-linux-x64-${{ steps.get_version.outputs.VERSION }}.tar.gz -C linux-x64 .
84+
zip -r taskman-win-x64-${{ steps.get_version.outputs.VERSION }}.zip win-x64
85+
tar -czf taskman-macos-x64-${{ steps.get_version.outputs.VERSION }}.tar.gz -C osx-x64 .
86+
tar -czf taskman-macos-arm64-${{ steps.get_version.outputs.VERSION }}.tar.gz -C osx-arm64 .
87+
88+
- name: Generate checksums
89+
run: |
90+
cd publish
91+
sha256sum *.tar.gz *.zip > SHA256SUMS
92+
93+
- name: Extract changelog
94+
id: changelog
95+
run: |
96+
# Extract changelog for this version
97+
VERSION=${{ steps.get_version.outputs.VERSION }}
98+
sed -n "/## \[$VERSION\]/,/## \[/p" CHANGELOG.md | sed '$ d' > RELEASE_NOTES.md
99+
if [ ! -s RELEASE_NOTES.md ]; then
100+
echo "Release $VERSION" > RELEASE_NOTES.md
101+
echo "See [CHANGELOG.md](CHANGELOG.md) for details." >> RELEASE_NOTES.md
102+
fi
103+
104+
- name: Create Release
105+
uses: softprops/action-gh-release@v1
106+
with:
107+
name: Release ${{ steps.get_version.outputs.VERSION }}
108+
body_path: RELEASE_NOTES.md
109+
files: |
110+
publish/taskman-linux-x64-${{ steps.get_version.outputs.VERSION }}.tar.gz
111+
publish/taskman-win-x64-${{ steps.get_version.outputs.VERSION }}.zip
112+
publish/taskman-macos-x64-${{ steps.get_version.outputs.VERSION }}.tar.gz
113+
publish/taskman-macos-arm64-${{ steps.get_version.outputs.VERSION }}.tar.gz
114+
publish/SHA256SUMS
115+
draft: false
116+
prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-beta') || contains(github.ref, '-alpha') }}
117+
env:
118+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
119+
120+
- name: Build NuGet package
121+
run: dotnet pack src/TaskManager.CLI/TaskManager.CLI.csproj -c Release -p:PackageVersion=${{ steps.get_version.outputs.VERSION }}
122+
123+
- name: Publish to NuGet (optional)
124+
if: ${{ !contains(github.ref, '-rc') && !contains(github.ref, '-beta') && !contains(github.ref, '-alpha') }}
125+
run: dotnet nuget push src/TaskManager.CLI/bin/Release/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
126+
continue-on-error: true

0 commit comments

Comments
 (0)