Skip to content

Commit 3a52b88

Browse files
authored
Add guidelines for open source and refactor structure (#8)
1 parent 0158ef6 commit 3a52b88

33 files changed

+1051
-799
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
## Related PR(s)
2+
3+
<!--
4+
Delete this section if there are no related PRs.
5+
-->
6+
7+
## Related Issue(s)
8+
9+
<!--
10+
Delete this section if there is no Issue this PR attempts to resolve or make progress on.
11+
-->
12+
13+
## Summary / Background
14+
15+
<!--
16+
Use this section to give a high level overview of the "why" and "what" for your changes.
17+
-->
18+

.github/workflows/covbadge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
run: go install github.com/AlexBeauchemin/[email protected]
2323

2424
- name: 'Run gobadge'
25-
run: ./covbadge.sh
25+
run: ./scripts/covbadge.sh
2626

2727
- name: 'Fail if not updated'
2828
run: git diff -U0 --exit-code

CODE_OF_CONDUCT.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official email address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement at
63+
64+
All complaints will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series of
86+
actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or permanent
93+
ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within the
113+
community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.1, available at
119+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120+
121+
Community Impact Guidelines were inspired by
122+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123+
124+
For answers to common questions about this code of conduct, see the FAQ at
125+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126+
[https://www.contributor-covenant.org/translations][translations].
127+
128+
[homepage]: https://www.contributor-covenant.org
129+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130+
[Mozilla CoC]: https://github.com/mozilla/diversity
131+
[FAQ]: https://www.contributor-covenant.org/faq
132+
[translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# CONTRIBUTING.md
2+
3+
## Contributing Guidelines
4+
5+
Thank you for considering contributing to Codeowners Plus! We welcome contributions from the community to improve and expand this project. This document outlines how to get involved.
6+
7+
### How to Contribute
8+
9+
#### Reporting Issues
10+
* Search existing issues to see if your concern has already been raised.
11+
* Open a new issue if you find a bug, have a suggestion, or encounter a problem.
12+
* Provide as much detail as possible, including steps to reproduce the issue and any relevant context.
13+
14+
#### Submitting Changes
15+
* Fork the repository
16+
* Create a new branch for your changes
17+
* After making code changes, run `./scripts/covbadge.sh` to update the code coverage badge (this will be enforced in GHA checks)
18+
* Commit your changes with clear and descriptive commit messages
19+
* Push your changes to your fork
20+
* Open a pull request against the `main` branch of this repository
21+
22+
### Code Style and Standards
23+
* Follow [Go best practices](https://go.dev/doc/effective_go).
24+
* Write clear, concise, and well-documented code.
25+
* Include unit tests for any new functionality.
26+
27+
### Reviewing and Merging Changes
28+
* All pull requests will be reviewed by maintainers.
29+
* Address feedback promptly and communicate if additional time is needed.
30+
* Once approved, your changes will be merged by a maintainer.
31+
32+
### Community
33+
* Join discussions in the issues section to help troubleshoot or brainstorm solutions.
34+
* Respectfully engage with others to maintain a friendly and constructive environment.

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ COPY go.mod go.sum ./
66
RUN go mod download
77

88
COPY main.go .
9+
COPY pkg ./pkg/
910
COPY internal ./internal/
1011

1112
# Statically comple with CGO enabled will be needed if we integrate go-tree-sitter

README.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@ Code Ownership &amp; Review Assignment Tool - GitHub CODEOWNERS but better
44

55
[![Go Report Card](https://goreportcard.com/badge/github.com/multimediallc/codeowners-plus?1)](https://goreportcard.com/report/github.com/multimediallc/codeowners-plus)
66
[![Tests](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml/badge.svg)](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml)
7-
![Coverage](https://img.shields.io/badge/Coverage-63.6%25-yellow)
7+
![Coverage](https://img.shields.io/badge/Coverage-59.8%25-yellow)
88
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
9+
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
910

1011
This tool is meant to be an alternative to [GitHub CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners), overcoming limitations with the `CODEOWNERS` spec and GitHub code owners feature.
1112

1213
## Features
1314

1415
These are features missing from GitHub code owners that are supported by Codeowners Plus
1516

16-
- Smart dismissal of stale reviews (only dismiss review when owned files change, rather than any reviewable push)
17-
- Supports multiple owners of files (`AND` ownership rules)
18-
- Github CODEOWNERS supports only `OR` ownership rules, in contrast
19-
- Directory-level code ownership files to assign fine-grained code ownership
20-
- Supports optional reviewers (cc users/teams for non-blocking reviews)
21-
- Advanced global configuration (see [Advanced Configuration](#advanced-configuration))
17+
* Smart dismissal of stale reviews (only dismiss review when owned files change, rather than any reviewable push)
18+
* Supports multiple owners of files (`AND` ownership rules)
19+
* Github CODEOWNERS supports only `OR` ownership rules, in contrast
20+
* Directory-level code ownership files to assign fine-grained code ownership
21+
* Supports optional reviewers (cc users/teams for non-blocking reviews)
22+
* Advanced global configuration (see [Advanced Configuration](#advanced-configuration))
2223

2324
### Caveats & Disclaimer
2425

@@ -157,12 +158,12 @@ However, the parser will replace trailing `/` with trailing `/**` to indirectly
157158

158159
This is the priority of file owners in order from highest priority to lowest priority:
159160

160-
- specific file owner
161-
- wildcard file owner
162-
- globstar file owner
163-
- globstar file owner from parent dirs (recursive)
164-
- fallback owner for dir
165-
- fallback owner from parent dir (recursive)
161+
* specific file owner
162+
* wildcard file owner
163+
* globstar file owner
164+
* globstar file owner from parent dirs (recursive)
165+
* fallback owner for dir
166+
* fallback owner from parent dir (recursive)
166167

167168
This means if there is overlap in rules, the last declared will be the owner. This is similar to GitHub `CODEOWNERS`, except with type-of-rule priority.
168169

@@ -249,16 +250,16 @@ A CLI tool is available which provides some utilities for working with `.codeown
249250

250251
You can download the built tools via [releases](https://github.com/multimediallc/codeowners-plus/releases) or build from source:
251252
```
252-
go build -o codeowners-cli ./cmd/cli/main.go
253+
go build -o codeowners-cli ./tools/cli/main.go
253254
```
254255

255256
Available commands are:
256257

257-
- `unowned` to check for unowned files
258-
- `owner` to check who owns a specific file
259-
- `verify` to check for typos in a `.codeowners` file
258+
* `unowned` to check for unowned files
259+
* `owner` to check who owns a specific file
260+
* `verify` to check for typos in a `.codeowners` file
260261

261262
## Future Features
262263

263-
- Inline ownership comments for having owners for specific functions, classes, etc.
264+
* Inline ownership comments for having owners for specific functions, classes, etc.
264265

SECURITY.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Reporting Security Issues
2+
3+
If you believe you have found a security vulnerability in Codeowners Plus, we encourage you to let us know right away at <[email protected]>.
4+
5+
We will investigate all legitimate reports and do our best to quickly fix the problem.

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ require (
1717
github.com/google/go-querystring v1.1.0 // indirect
1818
github.com/russross/blackfriday/v2 v2.1.0 // indirect
1919
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
20-
golang.org/x/sync v0.7.0 // indirect
20+
golang.org/x/sync v0.10.0 // indirect
2121
)

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w=
3131
github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ=
3232
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
3333
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
34-
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
35-
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
34+
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
35+
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
3636
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3737
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
3838
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ before:
1313
builds:
1414
# You can have multiple builds defined as a yaml list
1515
- id: "cli"
16-
main: ./cmd/cli
16+
main: ./tools/cli
1717
binary: codeowners-cli
1818
env:
1919
- CGO_ENABLED=0

0 commit comments

Comments
 (0)