Quellcode durchsuchen

docs: add development doc

thesimplekid vor 4 Monaten
Ursprung
Commit
4c46d5c799
2 geänderte Dateien mit 153 neuen und 1 gelöschten Zeilen
  1. 152 0
      DEVELOPMENT.md
  2. 1 1
      justfile

+ 152 - 0
DEVELOPMENT.md

@@ -0,0 +1,152 @@
+# Development Guide
+
+This guide will help you set up your development environment for working with the CDK repository.
+
+## Prerequisites
+
+Before you begin, ensure you have:
+- Git installed on your system
+- GitHub account
+- Basic familiarity with command line operations
+
+## Initial Setup
+
+### 1. Fork and Clone the Repository
+
+1. Navigate to the CDK repository on GitHub
+2. Click the "Fork" button in the top-right corner
+3. Clone your forked repository:
+```bash
+git clone https://github.com/YOUR-USERNAME/cdk.git
+cd cdk
+```
+
+### 2. Install Nix
+
+<!-- 
+MIT License
+
+Copyright (c) 2021 elsirion
+https://github.com/fedimint/fedimint/blob/master/docs/dev-env.md
+-->
+
+CDK uses [Nix](https://nixos.org/explore.html) for building, CI, and managing dev environment.
+Note: only `Nix` (the language & package manager) and not the NixOS (the Linux distribution) is needed.
+Nix can be installed on any Linux distribution and macOS.
+
+While it is technically possible to not use Nix, it is highly recommended as
+it ensures consistent and reproducible environment for all developers.
+
+### Install Nix
+
+You have 2 options to install nix:
+
+* **RECOMMENDED:** The [Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer)
+* [The official installer](https://nixos.org/download.html)
+
+Example:
+
+```
+> nix --version
+nix (Nix) 2.9.1
+```
+
+The exact version might be different.
+
+### Enable nix flakes
+
+If you installed Nix using the "determinate installer" you can skip this step. If you used the "official installer", edit either `~/.config/nix/nix.conf` or `/etc/nix/nix.conf` and add:
+
+```
+experimental-features = nix-command flakes
+```
+
+If the Nix installation is in multi-user mode, don’t forget to restart the nix-daemon.
+
+## Use Nix Shell
+
+```sh
+  nix develop -c $SHELL  
+```
+
+## Common Development Tasks
+
+### Building the Project
+```sh
+just build
+```
+
+### Running Unit Tests
+```bash
+just test
+```
+
+### Running Integration Tests
+```bash
+just itest REDB/SQLITE/MEMEORY
+```
+
+### Running Format
+```bash
+just format
+```
+
+
+### Running Clippy
+```bash
+just clippy
+```
+
+### Running final check before commit
+```sh
+just final-check
+```
+
+
+## Best Practices
+
+1. **Branch Management**
+   - Create feature branches from `main`
+   - Use descriptive branch names: `feature/new-feature` or `fix/bug-description`
+
+2. **Commit Messages**
+   - Follow conventional commits format
+   - Begin with type: `feat:`, `fix:`, `docs:`, `chore:`, etc.
+   - Provide clear, concise descriptions
+
+3. **Testing**
+   - Write tests for new features
+   - Ensure all tests pass before submitting PR
+   - Include integration tests where applicable
+
+## Troubleshooting
+
+### Common Issues
+
+1. **Development Shell Issues**
+   - Clean Nix store: `nix-collect-garbage -d`
+   - Remove and recreate development shell
+
+### Getting Help
+
+- Open an issue on GitHub
+- Check existing issues for similar problems
+- Include relevant error messages and system information
+- Reach out in Discord [Invite link](https://discord.gg/tUxMKd5YjN)
+
+## Contributing
+
+1. Create a feature branch
+2. Make your changes
+3. Run tests and formatting
+4. Submit a pull request
+5. Wait for review and address feedback
+
+## Additional Resources
+
+- [Nix Documentation](https://nixos.org/manual/nix/stable/)
+- [Contributing Guidelines](CONTRIBUTING.md)
+
+## License
+
+Refer to the LICENSE file in the repository for terms of use and distribution.

+ 1 - 1
justfile

@@ -45,7 +45,7 @@ test: build
   if [ ! -f Cargo.toml ]; then
     cd {{invocation_directory()}}
   fi
-  cargo test
+  cargo test --lib
 
 # run `cargo clippy` on everything
 clippy *ARGS="--locked --offline --workspace --all-targets":