diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..770df8a --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,104 @@ + + +# Contributing to bitfuckit + +Thank you for your interest in contributing to bitfuckit - the +community-built Bitbucket CLI that Atlassian never made! + +## Language Policy + +bitfuckit follows the hyperpolymath [Rhodium +Standard](https://github.com/hyperpolymath/rhodium-standard-repositories): + +| Language | Use Case | Notes | +|------------------|--------------------------|---------------------------------| +| **Ada 2012** | Primary application code | SPARK verified where possible | +| **Nickel** | Configuration | For complex config (config.ncl) | +| **Bash/POSIX** | Scripts, automation | Keep minimal | +| **Guile Scheme** | State/meta files | STATE.scm, META.scm, etc. | + +**BANNED**: TypeScript, Node.js, npm, Go, Python (except SaltStack) + +## Getting Started + +1. Fork the repository + +2. Clone your fork: + + ``` bash + git clone https://github.com/YOUR_USERNAME/bitfuckit.git + cd bitfuckit + ``` + + + +1. Install dependencies: + + ``` bash + # Fedora + sudo dnf install gcc-gnat gprbuild + + # Debian/Ubuntu + sudo apt install gnat gprbuild + ``` + + + +1. Build: + + ``` bash + gprbuild -P bitfuckit.gpr + ``` + +## Code Style + +- Ada 2012 style guide + +- 3-space indentation + +- SPDX license header on all source files + +- Use SPARK Mode where possible for specification files + +## Submitting Changes + +1. Create a feature branch: + + ``` bash + git checkout -b feature/my-feature + ``` + + + +1. Make your changes + +2. Ensure the build succeeds: + + ``` bash + gprbuild -P bitfuckit.gpr + bin/bitfuckit --help + ``` + + + +1. Commit with a descriptive message + +2. Push and create a pull request + +## Adding New Commands + +1. Add the command handling in `src/bitfuckit.adb` + +2. If API calls needed, add to `src/bitbucket_api.adb` + +3. Update the help text in `Print_Usage` + +4. Add shell completions in `completions/` + +5. Update the man page in `doc/bitfuckit.1` + +## Questions? + +Open an issue at diff --git a/.github/DISCUSSION_TEMPLATE/welcome.yml b/.github/DISCUSSION_TEMPLATE/welcome.yml index af6957b..2cdbabc 100644 --- a/.github/DISCUSSION_TEMPLATE/welcome.yml +++ b/.github/DISCUSSION_TEMPLATE/welcome.yml @@ -24,7 +24,7 @@ body: ## Contributing We welcome contributions! This project is written in Ada/SPARK for reliability. - Check out [CONTRIBUTING.adoc](../CONTRIBUTING.adoc) to get started. + Check out [../../.github/CONTRIBUTING.md](../../.github/CONTRIBUTING.md) to get started. ## Code of Conduct diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc deleted file mode 100644 index 800e5c1..0000000 --- a/CONTRIBUTING.adoc +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-or-later -= Contributing to bitfuckit -:toc: -:toclevels: 2 - -Thank you for your interest in contributing to bitfuckit - the community-built -Bitbucket CLI that Atlassian never made! - -== Language Policy - -bitfuckit follows the hyperpolymath https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium Standard]: - -[cols="1,2,2"] -|=== -|Language |Use Case |Notes - -|*Ada 2012* |Primary application code |SPARK verified where possible -|*Nickel* |Configuration |For complex config (config.ncl) -|*Bash/POSIX* |Scripts, automation |Keep minimal -|*Guile Scheme* |State/meta files |STATE.scm, META.scm, etc. -|=== - -*BANNED*: TypeScript, Node.js, npm, Go, Python (except SaltStack) - -== Getting Started - -. Fork the repository -. Clone your fork: -+ -[source,bash] ----- -git clone https://github.com/YOUR_USERNAME/bitfuckit.git -cd bitfuckit ----- - -. Install dependencies: -+ -[source,bash] ----- -# Fedora -sudo dnf install gcc-gnat gprbuild - -# Debian/Ubuntu -sudo apt install gnat gprbuild ----- - -. Build: -+ -[source,bash] ----- -gprbuild -P bitfuckit.gpr ----- - -== Code Style - -* Ada 2012 style guide -* 3-space indentation -* SPDX license header on all source files -* Use SPARK Mode where possible for specification files - -== Submitting Changes - -. Create a feature branch: -+ -[source,bash] ----- -git checkout -b feature/my-feature ----- - -. Make your changes -. Ensure the build succeeds: -+ -[source,bash] ----- -gprbuild -P bitfuckit.gpr -bin/bitfuckit --help ----- - -. Commit with a descriptive message -. Push and create a pull request - -== Adding New Commands - -. Add the command handling in `src/bitfuckit.adb` -. If API calls needed, add to `src/bitbucket_api.adb` -. Update the help text in `Print_Usage` -. Add shell completions in `completions/` -. Update the man page in `doc/bitfuckit.1` - -== Questions? - -Open an issue at https://github.com/hyperpolymath/bitfuckit/issues diff --git a/ROADMAP.adoc b/ROADMAP.adoc index 1299257..3bea643 100644 --- a/ROADMAP.adoc +++ b/ROADMAP.adoc @@ -353,7 +353,7 @@ v1.0.0 = Feature parity with gh/glab + Production-ready == Contributing -See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc]. +See link:.github/CONTRIBUTING.md[.github/CONTRIBUTING.md]. Priority areas: 1. GraphQL server completion diff --git a/RSR_OUTLINE.adoc b/RSR_OUTLINE.adoc index 63243fd..2215481 100644 --- a/RSR_OUTLINE.adoc +++ b/RSR_OUTLINE.adoc @@ -35,7 +35,7 @@ git init sed -i 's/RSR-template-repo/my-project/g' Justfile guix.scm README.adoc # Enter development environment -guix shell -D -f guix.scm +guix shell -D -f build/guix.scm # Validate compliance just validate-rsr diff --git a/config.ncl b/config.ncl index 23b8252..cc8bfd2 100644 --- a/config.ncl +++ b/config.ncl @@ -245,7 +245,7 @@ release = ["ci", "package-all", "mirror-self"], }, - required_files = ["README.adoc", "LICENSE", "SECURITY.md", "CONTRIBUTING.adoc"], + required_files = ["README.adoc", "LICENSE", "SECURITY.md", ".github/CONTRIBUTING.md"], }, # ============================================================================ diff --git a/docs/wiki/Installation.adoc b/docs/wiki/Installation.adoc index dfd5932..92d6426 100644 --- a/docs/wiki/Installation.adoc +++ b/docs/wiki/Installation.adoc @@ -175,7 +175,7 @@ guix install bitfuckit [source,bash] ---- -guix install -f guix.scm +guix install -f build/guix.scm ---- == Shell Completions diff --git a/guix.scm b/guix.scm deleted file mode 100644 index c9c1c7b..0000000 --- a/guix.scm +++ /dev/null @@ -1,64 +0,0 @@ -;;; SPDX-License-Identifier: MPL-2.0-or-later -;;; Guix package definition for bitfuckit -;;; Usage: guix build -f guix.scm -;;; Or add channel: https://github.com/hyperpolymath/guix-channel - -(define-module (bitfuckit) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix git-download) - #:use-module (guix build-system gnu) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (gnu packages ada) - #:use-module (gnu packages curl)) - -(define-public bitfuckit - (package - (name "bitfuckit") - (version "0.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hyperpolymath/bitfuckit") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0000000000000000000000000000000000000000000000000000")))) - (build-system gnu-build-system) - (native-inputs - (list gnat gprbuild)) - (inputs - (list curl)) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda _ - (invoke "gprbuild" "-P" "bitfuckit.gpr" "-j0"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (share (string-append out "/share/bitfuckit")) - (man (string-append out "/share/man/man1")) - (bash-completion (string-append out "/share/bash-completion/completions")) - (zsh-completion (string-append out "/share/zsh/site-functions")) - (fish-completion (string-append out "/share/fish/vendor_completions.d"))) - (install-file "bin/bitfuckit" bin) - (install-file "doc/bitfuckit.1" man) - (install-file "completions/bitfuckit.bash" bash-completion) - (install-file "completions/bitfuckit.zsh" zsh-completion) - (install-file "completions/bitfuckit.fish" fish-completion) - #t))) - (delete 'check)))) - (synopsis "Community-built Bitbucket CLI that Atlassian never made") - (description - "bitfuckit is a command-line interface for Bitbucket Cloud, written in -Ada/SPARK for reliability. It provides authentication, repository management, -pull request workflows, and GitHub mirroring capabilities.") - (home-page "https://github.com/hyperpolymath/bitfuckit") - (license license:agpl3+))) - -bitfuckit diff --git a/mustfile b/mustfile index da9a059..0256bfe 100644 --- a/mustfile +++ b/mustfile @@ -77,7 +77,7 @@ security = ["verify", "lint.secrets"] README = "README.adoc" LICENSE = "LICENSE" SECURITY = "SECURITY.md" -CONTRIBUTING = "CONTRIBUTING.adoc" +CONTRIBUTING = ".github/CONTRIBUTING.md" CHANGELOG = "CHANGELOG.adoc" ROADMAP = "ROADMAP.adoc"