awesome_bot 1.17.1 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3cf1c092e8b2268a453ae9322104d7cdb04eb45
4
- data.tar.gz: 2c9e2b935aa0a6dcc4fe004a46f543e07facf6f5
3
+ metadata.gz: a3d4e16495337ecdb24033c9d20ebcf92d6079c6
4
+ data.tar.gz: dd8ccc69f014fc37dcffb1df137c218aa94f3698
5
5
  SHA512:
6
- metadata.gz: 9f49bbe435557f0a0bf4cf5a02a90feca2590efc4ca94f3de3d1ff45a8696672e35e8288ee6ed21152abdef5b7e1407a60a6e9b9a30ddd5785297859fa3097c5
7
- data.tar.gz: 841890e757726514ca372de064fd993a60eb5d7cc5180b52f5a7ef3b837edaaa63ff1fb3b15e5d74a7c6799af5c6357cbc9064c3e29ee1c9045e882cb1e73b55
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
- ## 1.1.0
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
- ## 1.0.0
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
- ## 0.1.0
236
+ # 0.1.0
216
237
 
217
238
  - initial version
218
239
 
data/Dockerfile ADDED
@@ -0,0 +1,10 @@
1
+ FROM ruby:alpine
2
+
3
+ RUN gem install awesome_bot --no-format-exec
4
+
5
+ VOLUME /mnt
6
+
7
+ WORKDIR /mnt
8
+
9
+ ENTRYPOINT ["awesome_bot"]
10
+ CMD ["--help"]
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
- gem 'rspec_junit_formatter', '0.2.3' # test meta data / ci
5
- gem 'rspec', '3.6.0' # tests'
4
+ gem 'rspec_junit_formatter', '0.4.1' # test meta data / ci
5
+ gem 'rspec', '3.10.0' # tests'
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 markdown files in docs/ directory
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
- # will check relative links using the base url provided
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.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
- ### Circle CI
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
- machine:
170
- ruby:
171
- version: 2.2.0
172
- test:
173
- pre:
174
- - gem install awesome_bot
175
- override:
176
- - awesome_bot README.md
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
- Circle CI, [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).
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.2.0 --install
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.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.png)](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 contain a redirect so adding a badge could fail your status :sob:.. one way to fix this is to white list `travis-ci`, i.e.
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](http://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
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.required_ruby_version = '>= 2.0.0'
23
23
 
24
- spec.add_runtime_dependency 'parallel', '1.11.2' # threading
24
+ spec.add_runtime_dependency 'parallel', '1.20.1' # threading
25
25
  end
@@ -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
@@ -1,2 +1,2 @@
1
- http://www.cmr.osu.edu/browse/datasets
1
+ https://httpbin.org/delay/10
2
2
  https://github.com
@@ -1,3 +1,3 @@
1
- http://www.cmr.osu.edu/browse/datasets
1
+ http://1.2.3.4
2
2
  https://github.com
3
3
  https://github.com/supermarin/Alcatraz
@@ -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]', Integer, 'Set request delay') { |val| options['delay'] = val }
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
@@ -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 = content.scan /\].*?\)/
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
@@ -5,5 +5,5 @@ module AwesomeBot
5
5
  'Great for "awesome" projects.'
6
6
  PROJECT_URL = 'https://github.com/dkhamsing/awesome_bot'
7
7
 
8
- VERSION = '1.17.1'
8
+ VERSION = '1.20.0'
9
9
  end
@@ -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-osx-command-line
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
- abhishekbanthia/Public-APIs
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
- AngularClass/awesome-angular
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
- sotayamashita/awesome-css
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
- vredniy/awesome-newsletters
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
- vinkla/awesome-fuse
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
- jjaderg/awesome-postcss
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/endangered-languages
112
+ RichardLitt/low-resource-languages
111
113
  cugu/awesome-forensics
112
114
  rabbiabram/awesome-fortran
113
115
  vkarampinis/awesome-icons
114
- wfhio/awesome-job-boards
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-front-end
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