awesome_bot 1.17.1 → 1.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +38 -0
- data/.travis.yml +0 -2
- data/CHANGELOG.md +24 -3
- data/Dockerfile +10 -0
- data/Gemfile +2 -2
- data/README.md +73 -24
- data/awesome_bot.gemspec +1 -1
- data/bin/assets/test-errors +1 -3
- data/bin/assets/test-timeout +1 -1
- data/bin/assets/test-timeout-and-redirect +1 -1
- data/lib/awesome_bot/cli.rb +4 -3
- data/lib/awesome_bot/links.rb +14 -2
- data/lib/awesome_bot/version.rb +1 -1
- data/status/list-travis-ci +20 -10
- data/status/status.md +21 -11
- metadata +6 -7
- data/bin/assets/test-invalid.md +0 -844
- data/bin/assets/test-request-delay +0 -50
- data/circle.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3d4e16495337ecdb24033c9d20ebcf92d6079c6
|
4
|
+
data.tar.gz: dd8ccc69f014fc37dcffb1df137c218aa94f3698
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c2e95b89a2a3ab9df7dba8a8796e4f908ecbc308be6fceda5876cf10ca1d50e10c096b168f89d41cbbc2934c8c64a652bf1bf351b03307605e2351213bf436f
|
7
|
+
data.tar.gz: ae5d7bf39bb7967bbc759bd99a074f28e142bf09a18effd423540b125adca60f0fce64c6f3ac65375c7ab487a3e4cfdb088b0e30ceaa9929b01ccd324ace9985
|
@@ -0,0 +1,38 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
working_directory: ~/dkhamsing/awesome_bot
|
5
|
+
parallelism: 1
|
6
|
+
shell: /bin/bash --login
|
7
|
+
environment:
|
8
|
+
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
|
9
|
+
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
|
10
|
+
docker:
|
11
|
+
- image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
|
12
|
+
steps:
|
13
|
+
- checkout
|
14
|
+
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
|
15
|
+
- run:
|
16
|
+
working_directory: ~/dkhamsing/awesome_bot
|
17
|
+
command: rm -f dkhamsing/awesome_bot/.rvmrc; echo 2.4.1 > dkhamsing/awesome_bot/.ruby-version; rvm use 2.4.1 --default
|
18
|
+
- restore_cache:
|
19
|
+
keys:
|
20
|
+
- v1-dep-{{ .Branch }}-
|
21
|
+
- v1-dep-master-
|
22
|
+
- v1-dep-
|
23
|
+
- run: echo -e "export RAILS_ENV=test\nexport RACK_ENV=test" >> $BASH_ENV
|
24
|
+
- run: 'bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
|
25
|
+
--jobs=4 --retry=3 '
|
26
|
+
- save_cache:
|
27
|
+
key: v1-dep-{{ .Branch }}-{{ epoch }}
|
28
|
+
paths:
|
29
|
+
- vendor/bundle
|
30
|
+
- ~/virtualenvs
|
31
|
+
- ~/.bundle
|
32
|
+
- run: bundle exec rspec -fd --color -r rspec_junit_formatter --format RspecJunitFormatter -o $CIRCLE_TEST_REPORTS/rspec/junit.xml
|
33
|
+
- store_test_results:
|
34
|
+
path: /tmp/circleci-test-results
|
35
|
+
- store_artifacts:
|
36
|
+
path: /tmp/circleci-artifacts
|
37
|
+
- store_artifacts:
|
38
|
+
path: /tmp/circleci-test-results
|
data/.travis.yml
CHANGED
@@ -20,7 +20,5 @@ script:
|
|
20
20
|
- awesome_bot -f bin/assets/test-no-issues,bin/assets/test-redirect --allow-redirect
|
21
21
|
- awesome_bot bin/assets/test-no-* --allow-redirect
|
22
22
|
- awesome_bot bin/assets/test-ssl --allow-ssl
|
23
|
-
- awesome_bot bin/assets/test-invalid.md --allow-redirect --allow-dupe
|
24
|
-
- awesome_bot bin/assets/test-request-delay -d 1
|
25
23
|
- awesome_bot README.md --allow-dupe --white-list gph.is,giphy,travis-ci.org,codeload,badge,rubydoc,rubygems,circleci,codeship,blob/master
|
26
24
|
- gem install awesome_bot
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,27 @@
|
|
2
2
|
|
3
3
|
Changes by [Daniel Khamsing][] unless otherwise noted.
|
4
4
|
|
5
|
+
# 1.20.0
|
6
|
+
|
7
|
+
- [cli] delay: change to use float by [Jonathan Lai](https://github.com/agsdot)
|
8
|
+
- [gem] update `parallel`, `rspec` to latest
|
9
|
+
|
10
|
+
# 1.19.1
|
11
|
+
|
12
|
+
- [gem] update `parallel`, `rspec`, `rspec_junit_formatter` to latest
|
13
|
+
|
14
|
+
# 1.19.0
|
15
|
+
|
16
|
+
- [parse] handle javadoc links by [Davide Angelocola](https://github.com/dfa1)
|
17
|
+
|
18
|
+
# 1.18.0
|
19
|
+
|
20
|
+
- [parse] stricter parsing of relative urls by [Mat Moore](https://github.com/MatMoore)
|
21
|
+
|
22
|
+
# 1.17.2
|
23
|
+
|
24
|
+
- [cli] output version by [Budh Ram Gurung](https://github.com/budhrg)
|
25
|
+
- [gem] update `parallel` to version 1.12.0
|
5
26
|
|
6
27
|
# 1.17.1
|
7
28
|
|
@@ -196,14 +217,14 @@ Changes by [Daniel Khamsing][] unless otherwise noted.
|
|
196
217
|
- use `result`
|
197
218
|
- use `logger`
|
198
219
|
|
199
|
-
|
220
|
+
# 1.1.0
|
200
221
|
|
201
222
|
- handle bad links
|
202
223
|
- statuses yields `status`, `url`
|
203
224
|
- add head option when getting statuses
|
204
225
|
- [cli] improve output for `--allow-dupe`
|
205
226
|
|
206
|
-
|
227
|
+
# 1.0.0
|
207
228
|
|
208
229
|
- correct failure logic
|
209
230
|
- rename `run` to `check`
|
@@ -212,7 +233,7 @@ Changes by [Daniel Khamsing][] unless otherwise noted.
|
|
212
233
|
- [gemspec] update
|
213
234
|
- [travis] simplify
|
214
235
|
|
215
|
-
|
236
|
+
# 0.1.0
|
216
237
|
|
217
238
|
- initial version
|
218
239
|
|
data/Dockerfile
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Verify links in [awesome](status/status.md) projects
|
|
18
18
|
|
19
19
|
### Command Line
|
20
20
|
|
21
|
-
```
|
21
|
+
``` shell
|
22
22
|
Usage: awesome_bot [file or files]
|
23
23
|
awesome_bot [options]
|
24
24
|
-f, --files [files] Comma separated files to check
|
@@ -29,7 +29,7 @@ Usage: awesome_bot [file or files]
|
|
29
29
|
--allow-timeout URLs that time out are allowed
|
30
30
|
--base-url [base url] Base URL to use for relative links
|
31
31
|
-d, --request-delay [seconds] Set request delay
|
32
|
-
-t, --set-timeout [seconds] Set connection timeout
|
32
|
+
-t, --set-timeout [seconds] Set connection timeout (default: 30)
|
33
33
|
--skip-save-results Skip saving results
|
34
34
|
-w, --white-list [urls] Comma separated URLs to white list
|
35
35
|
```
|
@@ -75,7 +75,7 @@ $ awesome_bot README.md,README-zh.md
|
|
75
75
|
# check links in 2 files
|
76
76
|
|
77
77
|
$ awesome_bot docs/*.md
|
78
|
-
# check all
|
78
|
+
# check all Markdown files in the docs/ directory
|
79
79
|
|
80
80
|
$ awesome_bot README.md --allow-timeout -t 5
|
81
81
|
# speed up validation by setting a timeout of 5 seconds per link request and allowing timeouts
|
@@ -85,7 +85,7 @@ $ awesome_bot README.md --allow 403,429
|
|
85
85
|
# --allow 301 would be similar to --allow-redirect
|
86
86
|
|
87
87
|
$ awesome_bot README.md --base-url https://github.com/IDR/idr-notebooks/blob/master/
|
88
|
-
#
|
88
|
+
# check relative links using the base URL provided
|
89
89
|
```
|
90
90
|
|
91
91
|
```shell
|
@@ -109,6 +109,25 @@ No issues :-)
|
|
109
109
|
Wrote results to ab-results-new-readme.md.json
|
110
110
|
```
|
111
111
|
|
112
|
+
### Docker Examples
|
113
|
+
If you do not want to install Ruby or its dependencies you can simply use Docker and Docker image.
|
114
|
+
|
115
|
+
Here is an example for checking the links in the Markdown files in your current directory/subdirectories:
|
116
|
+
```shell
|
117
|
+
docker run -ti --rm -v $PWD:/mnt:ro dkhamsing/awesome_bot --white-list "test.com" --allow-dupe --allow-redirect --skip-save-results `find . -name "*.md"`
|
118
|
+
```
|
119
|
+
|
120
|
+
or just check the links in a single file located at `./templates/ubuntu.md`:
|
121
|
+
|
122
|
+
```shell
|
123
|
+
docker run -ti --rm -v $PWD:/mnt:ro dkhamsing/awesome_bot --allow-dupe --allow-redirect --skip-save-results ./templates/ubuntu.md
|
124
|
+
```
|
125
|
+
|
126
|
+
You always need to specify the path to the file so you cannot simply use `*.md`; instead use `ls *.md"`:
|
127
|
+
```shell
|
128
|
+
docker run -ti --rm -v $PWD:/mnt:ro dkhamsing/awesome_bot --white-list "test.com" --allow-dupe --allow-redirect --skip-save-results `ls *.md`
|
129
|
+
```
|
130
|
+
|
112
131
|
### Library
|
113
132
|
|
114
133
|
```ruby
|
@@ -140,16 +159,48 @@ and [more](status/status.md).
|
|
140
159
|
|
141
160
|
Tips
|
142
161
|
|
143
|
-
- Use the keyword `[ci skip]` in your commit title/message to skip verification.
|
162
|
+
- Use the keyword [`[ci skip]`](https://docs.travis-ci.com/user/customizing-the-build/) in your commit title/message to skip verification.
|
144
163
|
- Use [Danger](#danger).
|
145
164
|
|
165
|
+
### GitHub Actions
|
166
|
+
|
167
|
+
To use `awesome_bot` with GitHub Actions (workflows), here is an [example](https://github.com/dkhamsing/open-source-ios-apps/blob/master/.github/workflows/ruby.yml):
|
168
|
+
|
169
|
+
```yml
|
170
|
+
name: Ruby
|
171
|
+
|
172
|
+
on:
|
173
|
+
push:
|
174
|
+
branches: [ '*' ]
|
175
|
+
pull_request:
|
176
|
+
branches: [ '*' ]
|
177
|
+
|
178
|
+
jobs:
|
179
|
+
build:
|
180
|
+
|
181
|
+
runs-on: ubuntu-latest
|
182
|
+
|
183
|
+
steps:
|
184
|
+
- uses: actions/checkout@v2
|
185
|
+
- name: Set up Ruby 2.6
|
186
|
+
uses: actions/setup-ruby@v1
|
187
|
+
with:
|
188
|
+
ruby-version: 2.6.x
|
189
|
+
- name: Checks
|
190
|
+
run: |
|
191
|
+
ruby .github/osia_convert.rb
|
192
|
+
gem install awesome_bot
|
193
|
+
ruby .github/osia_get_links.rb
|
194
|
+
awesome_bot check-unique.txt --allow-ssl -a 302,429 -w xbmc/xbmc
|
195
|
+
```
|
196
|
+
|
146
197
|
### Travis CI
|
147
198
|
|
148
199
|
To use `awesome_bot` with Travis CI, [connect your repo](https://travis-ci.org/) and create a [`.travis.yml` file](https://github.com/ziadoz/awesome-php/blob/master/.travis.yml).
|
149
200
|
|
150
201
|
```yml
|
151
202
|
language: ruby
|
152
|
-
rvm: 2.
|
203
|
+
rvm: 2.4.1
|
153
204
|
before_script: gem install awesome_bot
|
154
205
|
script: awesome_bot README.md
|
155
206
|
```
|
@@ -161,29 +212,27 @@ notifications:
|
|
161
212
|
email: false
|
162
213
|
```
|
163
214
|
|
164
|
-
|
165
|
-
|
166
|
-
If you prefer Circle CI, it'll work too. [Connect your repo](https://circleci.com/) and create a [`circle.yml` file](https://github.com/tmcw/awesome-geojson).
|
215
|
+
In case you want to use the docker image inside Travis CI follow this example which will check broken links in all `*.md` files in your repository:
|
167
216
|
|
168
217
|
```yml
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
218
|
+
sudo: required
|
219
|
+
|
220
|
+
services:
|
221
|
+
- docker
|
222
|
+
|
223
|
+
script:
|
224
|
+
# Link Checks
|
225
|
+
- docker run -ti --rm -v $PWD:/mnt:ro dkhamsing/awesome_bot --allow-dupe --allow-redirect --skip-save-results `find . -name "*.md"`
|
177
226
|
```
|
178
227
|
|
179
228
|
### More
|
180
229
|
|
181
|
-
|
230
|
+
[CircleCI](https://circleci.com), [Codeship](https://codeship.com/), and [Semaphore CI](https://semaphoreci.com/) support running tests without adding a file to the repo (a public configuration file can however help others contribute).
|
182
231
|
|
183
232
|
```
|
184
233
|
# Codeship
|
185
234
|
Setup
|
186
|
-
rvm use 2.
|
235
|
+
rvm use 2.4.1 --install
|
187
236
|
gem install awesome_bot
|
188
237
|
|
189
238
|
Test
|
@@ -193,7 +242,7 @@ awesome_bot README.md
|
|
193
242
|
```
|
194
243
|
# Semaphore CI
|
195
244
|
Language: Ruby
|
196
|
-
Ruby version: 2.
|
245
|
+
Ruby version: 2.4.1
|
197
246
|
Databases for: don't generate
|
198
247
|
Setup:
|
199
248
|
gem install awesome_bot
|
@@ -202,7 +251,7 @@ awesome_bot README.md
|
|
202
251
|
|
203
252
|
### Status Badge
|
204
253
|
|
205
|
-
[![Build Status](https://travis-ci.org/unixorn/awesome-zsh-plugins.
|
254
|
+
[![Build Status](https://travis-ci.org/unixorn/awesome-zsh-plugins.svg)](https://travis-ci.org/unixorn/awesome-zsh-plugins)
|
206
255
|
|
207
256
|
To add the Travis CI build status badge above to your project, use the following code
|
208
257
|
|
@@ -213,17 +262,17 @@ i.e.
|
|
213
262
|
[![Build Status](https://travis-ci.org/dkhamsing/awesome_bot.svg?branch=master)](https://travis-ci.org/dkhamsing/awesome_bot)
|
214
263
|
```
|
215
264
|
|
216
|
-
As it happens, the default code snippet provided
|
265
|
+
As it happens, the default code snippet provided contains a redirect so adding a badge could fail your status :sob:.. one way to fix this is to white list `travis-ci`, i.e.
|
217
266
|
|
218
267
|
```
|
219
268
|
- awesome_bot README.md --white-list travis-ci
|
220
269
|
```
|
221
270
|
|
222
|
-
You can also add a badge for other CI tools, check out [shields.io](
|
271
|
+
You can also add a badge for other CI tools, check out [shields.io](https://shields.io/).
|
223
272
|
|
224
273
|
### Danger
|
225
274
|
|
226
|
-
Integrate `awesome_bot` with [Danger](https://github.com/danger/danger) and have results reported back to the [pull request](https://github.com/vsouza/awesome-ios/pull/1001)
|
275
|
+
Integrate `awesome_bot` with [Danger](https://github.com/danger/danger) and have results reported back to the [pull request](https://github.com/vsouza/awesome-ios/pull/1001).
|
227
276
|
|
228
277
|
![danger](https://cloud.githubusercontent.com/assets/4723115/17375716/0cdd37cc-5967-11e6-8ae3-829060a786dc.png)
|
229
278
|
|
data/awesome_bot.gemspec
CHANGED
data/bin/assets/test-errors
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
3. [L056] 405 https://www.google.com/events/io
|
3
|
-
5. [L130] 500 http://decentralizecamp.com/
|
1
|
+
500 http://decentralizecamp.com/
|
4
2
|
02. [L0138] 401 https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/
|
5
3
|
03. [L0145] 401 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
|
6
4
|
04. [L0146] 401 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/Introduction.html
|
data/bin/assets/test-timeout
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
https://httpbin.org/delay/10
|
2
2
|
https://github.com
|
data/lib/awesome_bot/cli.rb
CHANGED
@@ -24,10 +24,11 @@ module AwesomeBot
|
|
24
24
|
opts.on('--allow-redirect', TrueClass, 'Redirected URLs are allowed') { |val| options['allow_redirect'] = val }
|
25
25
|
opts.on('--allow-timeout', TrueClass, 'URLs that time out are allowed') { |val| options['allow_timeout'] = val }
|
26
26
|
opts.on('--base-url [base url]', String, 'Base URL to use for relative links') { |val| options['base_url'] = val }
|
27
|
-
opts.on('-d', '--request-delay [seconds]',
|
28
|
-
opts.on('-t', '--set-timeout [seconds]', Integer, 'Set connection timeout') { |val| options['timeout'] = val }
|
29
|
-
opts.on('--skip-save-results', TrueClass, 'Skip saving results') { |val| options['no_results'] = val }
|
27
|
+
opts.on('-d', '--request-delay [seconds]', Float, 'Set request delay') { |val| options['delay'] = val }
|
28
|
+
opts.on('-t', '--set-timeout [seconds]', Integer, 'Set connection timeout (default: 30)') { |val| options['timeout'] = val }
|
29
|
+
opts.on('--skip-save-results', TrueClass, 'Skip saving results') { |val| options['no_results'] = val }
|
30
30
|
opts.on('-w', '--white-list [urls]', Array, 'Comma separated URLs to white list') { |val| options['white_list'] = val }
|
31
|
+
opts.on('-v', '--version', String, 'Display version') { |val| puts "#{PROJECT} version #{VERSION}" }
|
31
32
|
|
32
33
|
opts.on_tail("--help") do
|
33
34
|
puts opts
|
data/lib/awesome_bot/links.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Get and filter links
|
2
2
|
module AwesomeBot
|
3
|
+
# This matches, from left to right:
|
4
|
+
# a literal [
|
5
|
+
# the link title - i.e. anything up to the next closing bracket
|
6
|
+
# a literal ]
|
7
|
+
# a literal (
|
8
|
+
# the link destination (optionally enclosed in a single pair of angle brackets)
|
9
|
+
# a literal )
|
10
|
+
MARKDOWN_LINK_REGEX = /\[ [^\]]+ \] \( <? ([^)<>]+) >? \)/x
|
11
|
+
|
3
12
|
class << self
|
4
13
|
def links_filter(list)
|
5
14
|
list.reject { |x| x.length < 9 }
|
@@ -9,6 +18,8 @@ module AwesomeBot
|
|
9
18
|
.map do |x|
|
10
19
|
if x.include? ')]'
|
11
20
|
x.gsub /\)\].*/, ''
|
21
|
+
elsif (x.scan(')').count == 1) && (x.scan('(').count == 1)
|
22
|
+
x
|
12
23
|
elsif (x.scan(')').count == 2) && (x.scan('(').count == 1)
|
13
24
|
x.gsub(/\)\).*/, ')')
|
14
25
|
elsif (x.scan(')').count > 0)
|
@@ -45,9 +56,10 @@ module AwesomeBot
|
|
45
56
|
end
|
46
57
|
|
47
58
|
def get_relative_links(content, base)
|
48
|
-
links =
|
59
|
+
links = []
|
60
|
+
content.scan(MARKDOWN_LINK_REGEX) { |groups| links << groups.first }
|
61
|
+
|
49
62
|
links.reject { |x| x.include?('http') || x.include?('#') }
|
50
|
-
.map { |x| x.sub '](', ''}
|
51
63
|
.map { |x| x =~ /\S/ ? x.match(/^\S*/) : x }
|
52
64
|
.map { |x| "#{base}#{x}"}
|
53
65
|
end
|
data/lib/awesome_bot/version.rb
CHANGED
data/status/list-travis-ci
CHANGED
@@ -3,13 +3,15 @@ vsouza/awesome-ios
|
|
3
3
|
enaqx/awesome-react
|
4
4
|
bayandin/awesome-awesomeness
|
5
5
|
toddmotto/public-apis
|
6
|
-
herrbischoff/awesome-
|
6
|
+
herrbischoff/awesome-macos-command-line
|
7
7
|
ziadoz/awesome-php
|
8
8
|
matteocrippa/awesome-swift
|
9
9
|
wsargent/docker-cheat-sheet
|
10
|
+
jaywcjlove/awesome-mac
|
11
|
+
Kickball/awesome-selfhosted
|
10
12
|
alebcay/awesome-shell
|
11
13
|
cjwirth/awesome-ios-ui
|
12
|
-
|
14
|
+
n0shake/Public-APIs
|
13
15
|
gztchan/awesome-design
|
14
16
|
veggiemonk/awesome-docker
|
15
17
|
hangtwenty/dive-into-machine-learning
|
@@ -22,7 +24,7 @@ n1trux/awesome-sysadmin
|
|
22
24
|
hsavit1/Awesome-Swift-Education
|
23
25
|
k4m4/terminals-are-sexy
|
24
26
|
chiraggude/awesome-laravel
|
25
|
-
|
27
|
+
gdi2290/awesome-angular
|
26
28
|
JStumpp/awesome-android
|
27
29
|
ellisonleao/magictools
|
28
30
|
j-delaney/easy-application
|
@@ -53,7 +55,7 @@ willianjusten/awesome-audio-visualization
|
|
53
55
|
sitepoint-editors/awesome-symfony
|
54
56
|
fasouto/awesome-dataviz
|
55
57
|
matiassingers/awesome-readme
|
56
|
-
|
58
|
+
awesome-css-group/awesome-css
|
57
59
|
ramitsurana/awesome-kubernetes
|
58
60
|
wbinnssmith/awesome-promises
|
59
61
|
nikgraf/awesome-draft-js
|
@@ -76,7 +78,7 @@ benoitjadinon/awesome-xamarin
|
|
76
78
|
matteofigus/awesome-speaking
|
77
79
|
burningtree/awesome-json
|
78
80
|
ahkscript/awesome-AutoHotkey
|
79
|
-
|
81
|
+
zudochkin/awesome-newsletters
|
80
82
|
brunopulis/awesome-a11y
|
81
83
|
jbucaran/awesome-fish
|
82
84
|
hackerkid/bots
|
@@ -91,14 +93,14 @@ aviaryan/awesome-no-login-web-apps
|
|
91
93
|
arbox/ruby-style-guide
|
92
94
|
iJackUA/awesome-vagrant
|
93
95
|
deanhume/typography
|
94
|
-
|
96
|
+
fuse-compound/awesome-fuse
|
95
97
|
notthetup/awesome-webaudio
|
96
98
|
brabadu/awesome-fonts
|
97
99
|
tedyoung/awesome-java8
|
98
100
|
MakinGiants/awesome-android-learner
|
99
101
|
christian-bromann/awesome-selenium
|
100
102
|
busterc/awesome-cordova
|
101
|
-
|
103
|
+
jdrgomes/awesome-postcss
|
102
104
|
jakoch/awesome-composer
|
103
105
|
filipelinhares/awesome-slack
|
104
106
|
shime/creative-commons-media
|
@@ -107,11 +109,11 @@ joubertredrat/awesome-devops
|
|
107
109
|
J2TeaM/awesome-AutoIt
|
108
110
|
arbox/rails-style-guide
|
109
111
|
neueda/awesome-neo4j
|
110
|
-
RichardLitt/
|
112
|
+
RichardLitt/low-resource-languages
|
111
113
|
cugu/awesome-forensics
|
112
114
|
rabbiabram/awesome-fortran
|
113
115
|
vkarampinis/awesome-icons
|
114
|
-
|
116
|
+
tramcar/awesome-job-boards
|
115
117
|
yangshun/awesome-spinners
|
116
118
|
sjfricke/awesome-webgl
|
117
119
|
Jolg42/awesome-typography
|
@@ -122,6 +124,14 @@ ramitsurana/awesome-openstack
|
|
122
124
|
Nipher/awesome-hacktivism
|
123
125
|
ipfs/newsletter
|
124
126
|
ellerbrock/awesome-typescript
|
125
|
-
cdleon/awesome-
|
127
|
+
cdleon/awesome-browser-dev
|
126
128
|
adriagalin/tools
|
127
129
|
arthurwayne/awesome-pentester
|
130
|
+
alister/php-in-london
|
131
|
+
IQDevs/Awesome-IQDevs
|
132
|
+
BubuAnabelas/awesome-markdown
|
133
|
+
serhii-londar/open-source-mac-os-apps
|
134
|
+
frenck/awesome-home-assistant
|
135
|
+
duyetdev/awesome-web-scraper
|
136
|
+
tapaswenipathak/Women-GitHubers
|
137
|
+
emacs-tw/awesome-emacs
|