https://github.com/mipmip/skull
Git repos install tool organized by a catalog yaml file
https://github.com/mipmip/skull
crystal-lang git github
Last synced: 8 months ago
JSON representation
Git repos install tool organized by a catalog yaml file
- Host: GitHub
- URL: https://github.com/mipmip/skull
- Owner: mipmip
- License: mit
- Created: 2023-03-27T15:54:26.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-23T11:22:49.000Z (over 1 year ago)
- Last Synced: 2025-05-08T16:58:10.163Z (8 months ago)
- Topics: crystal-lang, git, github
- Language: Crystal
- Homepage:
- Size: 17.6 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Skull
**Skull** helps developers with multiple computers and hundreds of projects,
cloning their repo's at the correct location using a central catalog-file.
## Why
Besides DRY, having a predefined directory layout for all your code-projects,
allows you to do more automation. I wrote skull after I start using
[gs-git](https://github.com/mipmip/gs-git), a git monitor which checks for
dirty git repo's.
## Installation
You need crystal to build skull.
```
clone https://github.com/mipmip/skull
cd skull
shards
make
./bin/skull
```
## Configuration
Create a skull catalog file at `~/.config/skulls.yaml`.
Populate with repo-groups and repo's:
```yaml
home:
base_dir: ~/
repos:
- source: mipmip/secondbrain
- source: mipmip/nixos
test:
base_dir: /tmp/
repos:
- source: mipmip/awesomewm-screenshots
- source: https://github.com/mipmip/mip.rs.git
```
Source can be a full git source URL or just shortened github url. Shortened
github urls translate to a SSH URI.
`mipmip/awesomewm-screenshots` will translates to `git clone git@github.com:mipmip/awesomewm-screenshots`
## Usage
```
skull help
skull [subcommand] help
```
## Development
Use crystal, if you have nix and flakes you can run
```
nix develop
shards
make
./bin/skull -c test/skull.yaml
```
### New release
update `CHANGELOG.md`
update `src/skull/version`
update `shards.yml`
`git tag vX.X.X`
`git push --tags`
`gh browse` + release stuff
## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Pim Snel](https://github.com/mipmip) - creator and maintainer