Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mamantoha/shards_spec

A shard.yml parser for the Crystal language
https://github.com/mamantoha/shards_spec

crystal hacktoberfest parser shards yaml

Last synced: 2 days ago
JSON representation

A shard.yml parser for the Crystal language

Awesome Lists containing this project

README

        

# Shards::Spec

![Crystal CI](https://github.com/mamantoha/shards_spec/workflows/Crystal%20CI/badge.svg?branch=main)
[![GitHub release](https://img.shields.io/github/release/mamantoha/shards_spec.svg)](https://github.com/mamantoha/shards_spec/releases)

A `shard.yml` parser for the Crystal language.

This library was extracted from [shards](https://github.com/crystal-lang/shards) version `0.10.0`.

## Installation

1. Add the dependency to your `shard.yml`:

```yaml
dependencies:
shards_spec:
github: mamantoha/shards_spec
```

2. Run `shards install`

## Usage

```crystal
require "shards_spec"

str = <<-YAML
name: crest
version: 0.26.6

authors:
- Anton Maminov

description: |
HTTP and REST client for Crystal

crystal: ">= 0.36.0"

dependencies:
http-client-digest_auth:
github: mamantoha/http-client-digest_auth
version: ~> 0.6.0
http_proxy:
github: mamantoha/http_proxy
version: ~> 0.8.0

development_dependencies:
kemal:
github: kemalcr/kemal
version: ~> 0.27.0
ameba:
github: crystal-ameba/ameba

license: MIT
YAML

spec = ShardsSpec::Spec.from_yaml(str)

spec.name
# crest

puts spec.description
# HTTP and REST client for Crystal

puts spec.crystal
# >= 0.36.0

spec.version
# 0.26.6

spec.dependencies.each do |dependency|
"#{dependency.name} | #{dependency.version}"
end
# http-client-digest_auth | ~> 0.6.0
# http_proxy | ~> 0.8.0

spec.development_dependencies.each do |dependency|
"#{dependency.name} | #{dependency.version}"
end
# kemal | ~> 0.27.0
# ameba | *

spec.authors.each do |author|
"#{author.name} | #{author.email}"
end
# => Anton Maminov | [email protected]

spec.license
# => MIT
```

## 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

- [Anton Maminov](https://github.com/mamantoha) - creator and maintainer