https://github.com/gribouille/awesome
Awesome list generator
https://github.com/gribouille/awesome
List: awesome
awesome-list github haskell
Last synced: about 1 month ago
JSON representation
Awesome list generator
- Host: GitHub
- URL: https://github.com/gribouille/awesome
- Owner: gribouille
- License: mpl-2.0
- Created: 2019-01-02T22:17:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-09-10T13:19:15.000Z (almost 7 years ago)
- Last Synced: 2024-10-23T08:24:10.329Z (over 1 year ago)
- Topics: awesome-list, github, haskell
- Language: Haskell
- Size: 27.3 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# awesome
`awesome` is a [awesome list](https://github.com/sindresorhus/awesome) generator.
`awesome`:
- get automatically for the Github repositories: stars, license, description, ...
- sorts the links by type and by stars
- generates the table of content.
Examples:
- [Python awesome list](https://github.com/gribouille/awesome-python)
- [Haskell awesome list](https://github.com/gribouille/awesome-haskell)
## Installation
### Prerequisites
Before installing `awesome`, you will need to make sure you have the `stack` tool
installed.
Archlinux:
```sh
$ sudo pacman -S stack
```
Ubuntu:
```sh
$ curl -sSL https://get.haskellstack.org/ | sh
```
Opensuse:
```sh
$ sudo zypper install stack
```
_Warning_: Opensuse Leap installs the version 1.5.0 which is buggy, see [documentation](https://docs.haskellstack.org/en/stable/install_and_upgrade/) to install a most recent version.
### Downloading and Installing
The easiest way to install `awesome`, is to type:
```sh
$ git clone https://github.com/gribouille/awesome
$ cd awesome
$ stack install
$ awesome --version
```
## Configuration
`awesome` uses a JSON configuration file. The JSON structure
is a tree of `Category` objects.
`Category` properties:
| Name | Type | Required | Description |
| ----------- | ---------- | -------- | ------------------------------- |
| `title` | `string` | yes | Title of the category |
| `description` | `string` | no | Description of the category |
| `categories` | `[Category]` | no | Sub categories list. |
| `items` | `[Item]` | no | List of links in the categories |
`Item` properties:
| Name | Type | Required | Description |
| ----------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `url` | `string` | yes | Url of the item. For the Github repository, the url can be abbreviated to `/` for example `gribouille/awesome`. |
| `name` | `string` | no | Url name (automatically filled for Github repo). |
| `description` | `string` | no | Url description (automatically filled for Github repo). |
There is no limitation of nested categories.
Example:
```json
{
"title": "Python",
"description": "...",
"categories": [
{
"title": "Library",
"categories": [
{
"title" : "Algorithms and Design Patterns",
"description": "Python implementation of algorithms and design patterns.",
"items": [
{"url": "keon/algorithms"},
{"url": "tylerlaberge/PyPattyrn"},
{"url": "faif/python-patterns"},
{"url": "http://www.grantjenks.com/docs/sortedcontainers/", "name": "sortedcontainers", "description": "Fast, pure-Python implementation of SortedList, SortedDict, and SortedSet types."}
]
}
]
},
...
]
}
```
## Usage
To generate an awesome list from a JSON file:
```
$ awesome config.json README.md
```
If you have Github repository in your list, you will be quickly limited to do
requests to the Github API without a [Github token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line).
To create a Github token, you need a Github account and go to: https://github.com/settings/tokens and click on _Generate new token_.
You can use this token with the option `--token`:
```
$ awesome config.json README.md --token
```
## Contributing
Feedback and contributions are very welcome.
## License
This project is licensed under [Mozilla Public License Version 2.0](./LICENSE).