Compare commits

..

259 Commits

Author SHA1 Message Date
IceCryptonym
b087ff0563
Add Bibliogram to Social Networks (#2588)
* Add Bibliogram
* Add warning to Bibliogram
Co-authored-by: nodiscc <nodiscc@gmail.com>
2021-09-07 15:33:03 +00:00
mawise
537a15b882
Add Haven to blogging section (#2655) 2021-09-07 15:29:46 +00:00
Akashdeep Dhar
46ec0810d8
Removed demo link from Mailu entry (#2663)
The demo link leads to an empty wiki which is publicly editable
Signed-off-by: Akashdeep Dhar <akashdeep.dhar@gmail.com>
Co-authored-by: nodiscc <nodiscc@gmail.com>
2021-09-07 15:24:46 +00:00
nodiscc
3d3dc206c6
Merge pull request #2651 from louissegal/patch-1
Add 'exatorrent' to File Transfer
2021-09-07 15:18:51 +00:00
nodiscc
ca722b4225
Merge pull request #2646 from netras/master
Add REI3 to Money, Budgeting & Management
2021-09-07 15:18:27 +00:00
nodiscc
a40f6d9821
Merge pull request #2644 from GilbN/master
Add SWAG to Proxy category
2021-09-07 15:17:43 +00:00
Maxim Gurevich
5d33e1ec60
Add StoneAge Messenger (#2640) 2021-09-07 15:16:53 +00:00
nodiscc
58b6d3e23b
cagette: make entry friendlier to YAML import (remove double quotes) 2021-09-05 16:33:33 +00:00
nodiscc
5e68ed67c4
cagette: make syntax friendlier to YAML import, remove ':' 2021-09-05 16:31:36 +00:00
nodiscc
7acc0651ea
remove duplicate Open Food Network entry 2021-09-05 16:29:45 +00:00
nodiscc
d7f6cb9c56
E-commerce/Community Supported Agriculture are related 2021-09-05 16:28:47 +00:00
Louis Segal
c25a28d982
Merge branch 'master' into patch-1 2021-09-04 00:55:27 +01:00
nodiscc
6e9a37d820
shorten/clarify SWAG description 2021-09-02 17:54:40 +00:00
Aaron
bb81420d63
Update plain HTTP and redirected URLs (#2653)
Signed-off-by: Aaron <admin@datahoarder.dev>
2021-09-02 17:46:00 +00:00
faldez
5ac8802e2c
Add Tanoshi to E-books (#2648) 2021-09-01 16:42:22 +00:00
nodiscc
0159dc204a
Merge pull request #2636 from bbenno/readd-toxcore-entry
Re-Add toxcore
2021-09-01 16:31:16 +00:00
nodiscc
fa5808b3ad
Merge pull request #2633 from beucismis/master
Add rustypaste to Pastebins
2021-09-01 16:30:48 +00:00
nodiscc
25cab4855b
Merge pull request #2631 from 4x10m/patch-1
Adding NocoDB to Automation
2021-09-01 16:30:39 +00:00
nodiscc
0be6f3deaa
Merge pull request #2625 from joebudi/patch-2
Added Budibase to Software Development
2021-09-01 16:30:29 +00:00
nodiscc
46748828ba
Merge pull request #2628 from davidzhao/master
Adding LiveKit
2021-09-01 16:29:39 +00:00
nodiscc
c81d70fe39
Merge pull request #2652 from whalehub/retroshare-url
Update RetroShare URL in README.md
2021-09-01 16:19:47 +00:00
nodiscc
a22f6e3e57
Merge pull request #2650 from CouldBeThis/patch-1
fix Docstore link to be more specific
2021-09-01 16:13:34 +00:00
Aaron
7c5e9a14d1
Update RetroShare URL in README.md
Signed-off-by: Aaron <admin@datahoarder.dev>
2021-08-28 09:55:28 +02:00
Louis Segal
9f34fc536d
Add 'exatorrent' to File Transfer
Added 'exatorrent' to File Transfer - Peer-to-peer Filesharing
2021-08-26 21:32:11 +01:00
CouldBeThis
ae668cb78f
fix Docstore link to be more specific
direct to correct section of author's website
2021-08-25 20:02:02 -04:00
Gabriel Herbert
e3f2d544dc Add REI3 to Money, Budgeting & Management 2021-08-24 11:11:42 +02:00
GilbN
67cce85d3e
removed duplicate source code link 2021-08-20 16:20:43 +02:00
GilbN
b2c26ce57b
fix main requirement for swag 2021-08-20 16:16:56 +02:00
GilbN
66a49c370b
Add Swag to Proxy 2021-08-20 16:15:31 +02:00
nodiscc
6ee5d16dd4
Merge pull request #2643 from diptopandit/patch-1
Fixing letter 'C' in Retroshare language
2021-08-16 19:25:05 +00:00
Dipta Pandit
400e9260c0
Fixing letter 'C' in Retroshare language
This fixes the issue #2626
2021-08-16 13:31:07 +05:30
nodiscc
75092b1598
Merge pull request #2639 from mobitar/patch-1
Update Standard Notes domain
2021-08-14 18:45:50 +00:00
nodiscc
9ae877711d
fix livekit syntax 2021-08-14 18:36:49 +00:00
nodiscc
e1dbdb6e32
Merge pull request #2619 from arisudesu-forks/add-maddy
Add Maddy Mail Server to Email/Complete solutions
2021-08-14 18:35:59 +00:00
nodiscc
0551cc04ad
Merge pull request #2577 from amo13/patch-2
Add Community-Supported Agriculture (CSA) category with 9 items
2021-08-14 18:35:39 +00:00
nodiscc
43e4be4b14
Merge branch 'master' into patch-2 2021-08-14 18:35:17 +00:00
nodiscc
df7e528de4
fix nocodb syntax 2021-08-14 18:32:44 +00:00
Maxim Kuleshov
670f1431b9
Merge branch 'master' into add-maddy 2021-08-08 01:13:53 +03:00
David Zhao
1e1ccdb065
Merge branch 'master' into master 2021-08-06 21:29:14 -07:00
Mo Bitar
9d8ab9a046
Update Standard Notes domain 2021-08-06 07:39:26 -05:00
nodiscc
7d0d97b99d
Merge pull request #2637 from nodiscc/toc-auto-github
remove table of contents, use github's auto-generated TOC
2021-08-04 16:02:42 +00:00
nodiscc
d18ee9b8f7
Merge pull request #2638 from nodiscc/sort-sections
sort section contents alphabetically
2021-08-04 16:02:31 +00:00
nodiscc
f9ea420872
sort section contents alphabetically, unindent all items 2021-08-04 18:00:15 +02:00
nodiscc
9d545cfaf4
remove table of contents, use github's auto-generated TOC 2021-08-04 17:45:24 +02:00
nodiscc
28ad7275cb
Merge pull request #2618 from Robert-Forrest/patch-1
Added Whoogle to Search Engines section
2021-08-02 13:46:40 +00:00
nodiscc
a90ad170b0
Merge pull request #2613 from inkhey/master
add tracim
2021-08-02 13:43:31 +00:00
Benno Bielmeier
4a56bcbd74
Update source code URL of toxcore 2021-07-31 18:57:12 +02:00
Benno Bielmeier
b74c0bceaa
Revert "Removed Tox entry as UNUPDATED (#2566)"
This reverts commit 6180c555c3.
2021-07-31 18:55:05 +02:00
beucismis
81e402ae5f Add rustypaste to Pastebins 2021-07-30 00:17:08 +03:00
4x10m
8ad192fe03
Adding NocoDB
Hi there,

i wanted to suggest an addition

- [x] Submit one item per pull request. This eases reviewing and speeds up inclusion.
- [x] Format your submission as follows, where `Demo` and `Clients` are optional.
  Do not add a duplicate `Source code` link if it is the same as the main link.
  Keep the short description under 250 characters and use [sentence case](https://en.wikipedia.org/wiki/Letter_case#Sentence_case)
  for it, even if the project's webpage or readme uses another capitalisation
  such as title case, all caps, small caps or all lowercase.
  `Demo` links should only be used for interactive demos, i.e. not video demonstrations.
  ``- [Name](http://homepage/) - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` ``
- [x] Additions that depend on proprietary services outside the user's control must be marked `⚠`.
  ``- [Name](http://homepage/) `⚠` - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` ``
- [x] Additions that are not [Free software](https://en.wikipedia.org/wiki/Free_software)
  must be added to `non-free.md` and marked `⊘ Proprietary`:
  ``- [Name](http://homepage/) `⊘ Proprietary` - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `Language` ``
- [x] Additions are inserted preserving alphabetical order.
- [x] Additions are not already listed at any of [awesome-sysadmin](https://github.com/n1trux/awesome-sysadmin), [awesome-analytics](https://github.com/onurakpolat/awesome-analytics), [staticgen.com](https://www.staticgen.com/), [staticsitegenerators.net](https://staticsitegenerators.net/).
- [x] The `Language` tag is the main **server-side** requirement for the software. Don't include frameworks or specific dialects.
- [x] Any license you add is in our [list of licenses](https://github.com/awesome-selfhosted/awesome-selfhosted/blob/master/README.md#list-of-licenses).
- [x] You have searched the repository for any relevant [issues](https://github.com/awesome-selfhosted/awesome-selfhosted/issues) or [PRs](https://github.com/awesome-selfhosted/awesome-selfhosted/pulls), including closed ones.
- [x] Any category you are creating has the minimum requirement of 3 items.
  If not, your addition may be inserted into `Misc/Other`.
- [x] Any software project you are adding to the list is actively maintained.
- [x] The pull request title is informative, unlike "Update README.md".
  Suggested titles: "Add aaa to bbb" for adding software aaa to section bbb,
  "Remove aaa from bbb" for removing, "Fix license for aaa", etc.

I do not entirely agree the category but since it's a purely Baserow concurrent, i think it's obvious to put it there.

Thank you
2021-07-23 14:03:04 +02:00
David Zhao
46c435b697 added livekit 2021-07-18 23:23:09 -07:00
Joe
ede697a4dd
Added Budibase under Software Development
I've added Budibase under Software Development - IDE & Tools
2021-07-14 15:24:47 +01:00
nodiscc
82b9bf3561
Merge pull request #2604 from theowenyoung/patch-2
Add Track Awesome List external link
2021-07-12 17:51:04 +00:00
nodiscc
998c70647a
Merge pull request #2535 from buoyantair/patch-1
Update Torrents.csv link
2021-07-12 17:50:45 +00:00
nodiscc
590b65e0ac
Merge pull request #2615 from waschinski/patch-2
Add Crater
2021-07-12 17:49:06 +00:00
nodiscc
48f342af9e
Merge pull request #2623 from prologic/fix_urls_prologic_mills_self_hsoted
Fix the sourcecode URLs for many of my (prologic) Self Hosted Apps
2021-07-12 17:46:34 +00:00
Robert Forrest
b4841f446b
Added warning to Whoogle Search due to use of Google Search 2021-07-12 13:57:22 +00:00
James Mills
d56a626ad1
Fix the sourcecode URLs for many of my (prologic) Self Hosted Apps 2021-07-12 14:58:25 +10:00
nodiscc
dc8b79e344
Merge pull request #2622 from nodiscc/fix-anchor-links
fix anchor/inter-section links
2021-07-11 16:03:22 +00:00
nodiscc
8d82390699
fix anchor/inter-section links 2021-07-11 18:01:39 +02:00
nodiscc
f876edf2b0
Merge pull request #2621 from nodiscc/standardize-section-headers
standardize section headers:
- `**Please visit [name](url)**` when a section is delegated to another list/website
- `_Related:_` for related categories
- `_See also:_` for external links
- `_General description/comments_`
2021-07-11 15:57:34 +00:00
nodiscc
0c887772e9
standardize section headers:
- **Please visit [name](url)** when a section is delegated to another list/website
- _Related:_ for related categories
- _See also:_ for external links
- _General description/comments_
2021-07-11 17:56:40 +02:00
nodiscc
ed5d85459e
Merge pull request #2620 from nodiscc/flatten-sections
flatten table of contents + syntax and case fixes
2021-07-11 13:10:17 +00:00
nodiscc
dc49b544a0
fix TileServer PHP and 0bin syntax 2021-07-11 15:06:35 +02:00
nodiscc
d340e88a48
fix OwnTracks Recorder syntax/language tag 2021-07-11 15:06:05 +02:00
nodiscc
9fbf54b074
standardize OCaml case
- https://en.wikipedia.org/wiki/OCaml
2021-07-11 15:05:05 +02:00
nodiscc
87cf05801f
rename Homer to SIPCAPTURE Home (offical name) - Homer already exists in Homepages 2021-07-11 15:04:14 +02:00
nodiscc
e1cd8c30e0
standardize Nodejs case, don't repeat Nodejs in descriptions 2021-07-11 15:03:40 +02:00
nodiscc
4b6897a746
reorganize TOC/scetion titles: move all list sections to level 3, don't nest sections/subsections, use Title Case everywhere 2021-07-11 15:00:02 +02:00
nodiscc
9954bafd69
Merge pull request #2617 from awesome-selfhosted/fix_jul_monthly_check
Fixes and Updates for July monthly checks
2021-07-10 17:34:49 +00:00
Maxim Kuleshov
33bf7e27bd
Add Maddy Mail Server 2021-07-10 19:59:37 +03:00
Robert Forrest
cce39820e8
Added Whoogle to Search Engines section 2021-07-10 12:03:25 +00:00
n8225
4ab8781049
Merge branch 'master' into fix_jul_monthly_check 2021-07-09 15:58:13 -05:00
Nathan Rew
38f9c70b45
Update WooCommerce source code and site links 2021-07-09 15:47:21 -05:00
Nathan Rew
e3dd27f200
Update remark42 source code link 2021-07-09 15:46:00 -05:00
Nathan Rew
fe522d8e04
Update Ombi source code link 2021-07-09 15:44:31 -05:00
Nathan Rew
6d81d0f958
Update The Lounge source code and site links 2021-07-09 15:42:59 -05:00
Nathan Rew
8a91b3d63e
Update wger source code and demo links 2021-07-09 15:41:27 -05:00
Nathan Rew
983aa2bf7f
Update Alltube description 2021-07-09 15:39:54 -05:00
Nathan Rew
f53ce48163
Update Medusa source code link and site link 2021-07-09 15:37:13 -05:00
Nathan Rew
9f6d680e51
Update Nominatim source code link 2021-07-09 15:34:23 -05:00
Nathan Rew
96caf7db9b
Update Miniflux source code link and site link 2021-07-09 15:32:38 -05:00
Nathan Rew
7daffc1e33
Update Home Assistant source code link and license 2021-07-09 15:30:46 -05:00
Nathan Rew
3cc79adae9
Update Lemmy source code link and site link. 2021-07-09 15:28:50 -05:00
Nathan Rew
2c777f4e79
Update Navidrome Music Server source code link and name 2021-07-09 15:27:32 -05:00
Nathan Rew
de2c49d2df
Update Traefik source code link 2021-07-09 15:25:13 -05:00
Nathan Rew
edfc92fc17
Update Zenbot source code link and name 2021-07-09 15:24:06 -05:00
Nathan Rew
7429c0a1d5
Update Selfoss source code link and license 2021-07-09 15:14:34 -05:00
Nathan Rew
71c4558c77
Update docker-mailserver source code link and site link. 2021-07-09 15:12:54 -05:00
Nathan Rew
6b78154b87
Update BookStack source code link 2021-07-09 15:11:12 -05:00
Nathan Rew
4ba34ff8af
Update Zenko CloudServer source code link 2021-07-09 15:10:02 -05:00
Nathan Rew
87e62f2a42
Update koel source code link and site link. 2021-07-09 15:08:45 -05:00
Nathan Rew
a4c8d79219
Update Awesome Analytics link and name 2021-07-09 15:07:13 -05:00
Nathan Rew
9e926b6316
Update PushBits source code link 2021-07-09 15:04:33 -05:00
Nathan Rew
18b965c5d8
Update Bitwarden source code link 2021-07-09 15:03:09 -05:00
Nathan Rew
1322088976
Update searx source code link and site link. 2021-07-09 15:01:17 -05:00
Nathan Rew
793d3cd76e
Update Gladys source code link, site link, description and license 2021-07-09 14:58:33 -05:00
Nathan Rew
8583ed64b7
Update Read The Docs source code and site links 2021-07-09 14:55:05 -05:00
Nathan Rew
91f6da0b46
Update Apostrophe source code link 2021-07-09 14:51:43 -05:00
Nathan Rew
336132dbf8
Update ArchiveBox source code link 2021-07-09 14:50:27 -05:00
Nathan Rew
0b044e02d9
Update Invidious source code link and demo link 2021-07-09 14:49:03 -05:00
Nathan Rew
9752dc37d7
Update Converse.js source code link 2021-07-09 14:46:05 -05:00
Nathan Rew
5a6f4bca9e
Update Cypht source code link, site link, and license 2021-07-09 14:43:56 -05:00
Nathan Rew
16ea59a835
Update known source code link and description 2021-07-09 14:41:42 -05:00
Nathan Rew
d8aa083f6e
Update bittorrent-tracker source code link 2021-07-09 14:38:48 -05:00
Nathan Rew
fde56b99a6
Update Baby Buddy source code link 2021-07-09 14:37:29 -05:00
Nathan Rew
c1d1cfc008
Update Habitica source code link 2021-07-09 14:33:01 -05:00
Nathan Rew
e80a2690c3
Update Modoboa source code link and license 2021-07-09 14:31:39 -05:00
Nathan Rew
536c0cee7e
Update ProjectSend source code link 2021-07-09 14:30:25 -05:00
Nathan Rew
4b4a6688de
Update DietPi source code link 2021-07-09 14:25:58 -05:00
Nathan Rew
be5c6deb04
Update Writefreely source code link 2021-07-09 14:15:22 -05:00
Nathan Rew
a9e5ef4264
Update Open Classifieds to Yclas and update source code and site links 2021-07-09 14:12:54 -05:00
Nathan Rew
59868fb61b
Update Fedora Commons Repository source code link 2021-07-09 14:09:14 -05:00
Nathan Rew
752a8234bc
Update Photoview source code and site links 2021-07-09 14:07:27 -05:00
Nathan Rew
76de8e3d9e
Update Traduora source code link 2021-07-09 14:05:43 -05:00
Nathan Rew
fb27d70691
Update postal source code 2021-07-09 14:01:27 -05:00
n8225
287c16ba8a
Merge pull request #2595 from xavierxross/master
Add "Cloudbox" To Category "Self-hosting Solutions"
2021-07-09 13:43:11 -05:00
n8225
4cb60bf82a
Merge pull request #2611 from rosano/patch-1
Add easyindie.app
2021-07-09 13:42:06 -05:00
n8225
c4f4e9ad93
Merge pull request #2614 from waschinski/patch-1
Update Photo Stream entry
2021-07-09 13:38:04 -05:00
Nathan Rew
621162fb7c
Update bludit source code 2021-07-09 13:13:25 -05:00
Nathan Rew
114b96a428
Update photonix source code 2021-07-09 13:12:28 -05:00
Nathan Rew
4e30574184
Update imgproxy source code and site 2021-07-09 13:10:11 -05:00
Nathan Rew
b01d67ae8b
Update Wakapi source code and site 2021-07-09 13:08:18 -05:00
Nathan Rew
99332d3d43
Update Apaxy source code and license 2021-07-09 13:06:27 -05:00
Nathan Rew
ba55d85b6e
Update Myflix source code and add ⚠ (requires TMDB api) 2021-07-09 13:03:42 -05:00
Nathan Rew
ec009d1eca
Update TileServer GL source code 2021-07-09 13:00:00 -05:00
Nathan Rew
7f45b335ed
Update Canvas source code 2021-07-09 12:58:14 -05:00
Nathan Rew
a0449c4171
Update Mailtrain source code 2021-07-09 12:56:14 -05:00
Nathan Rew
3136207b72
Update TimeOff.Management source code 2021-07-09 12:55:00 -05:00
Nathan Rew
18db877472
Update ASCIIflow source code, language, and license. 2021-07-09 12:52:37 -05:00
Nathan Rew
b2686469a5
Update MiniNote source code 2021-07-09 12:37:36 -05:00
Nathan Rew
1e0c296a8b
Update pictshare source code 2021-07-09 12:36:13 -05:00
Nathan Rew
c0e1d588c7
Update gogs source code 2021-07-09 12:34:52 -05:00
Nathan Rew
1f85064d30
Update krakenD to Lura, source code, and site link. 2021-07-09 12:32:38 -05:00
Nathan Rew
de8fd63964
Update Aweseom Big Data link 2021-07-09 12:30:07 -05:00
Nathan Rew
4d05c0596b
Update FlaskBB name and Source Code link 2021-07-09 12:26:49 -05:00
Nathan Rew
6b48393ba9
Update Judge0, name, site link, and Source Code link 2021-07-09 12:25:10 -05:00
Nathan Rew
412043782c
Update Pump.io Source Code link 2021-07-09 12:22:59 -05:00
Nathan Rew
4e0a14907a
Update Redaxscript Source Code link 2021-07-09 12:22:09 -05:00
Nathan Rew
853b0c04ee
Update King Phisher Source Code link 2021-07-09 12:14:39 -05:00
Nathan Rew
8adc0885c1
Update Anchr Source Code link 2021-07-09 12:13:40 -05:00
Nathan Rew
ef2cc0fda2
Update Shiori Source Code link 2021-07-09 12:12:54 -05:00
Nathan Rew
faee7c8b10
Update Surfer Source Code link 2021-07-09 12:11:44 -05:00
Nathan Rew
e6e7cc26ec
Remove Patchwork - Archived 2021-07-09 12:09:57 -05:00
Nathan Rew
43f68ff0e6
Update YouTransfer Source Code link 2021-07-09 12:09:23 -05:00
Nathan Rew
20be93604d
Remove MalwareMultiScan - Archived 2021-07-09 12:07:57 -05:00
Nathan Rew
68e8f9d8df
Update Leed Source Code link 2021-07-09 12:05:40 -05:00
Nathan Rew
ea603b73a6
Remove Paperless - Archived 2021-07-09 12:02:42 -05:00
Nathan Rew
96019e11e7
Update Trello Burndown Source Code link 2021-07-09 12:01:44 -05:00
Nathan Rew
c66ac7db5e
Update BlogoText Source Code link 2021-07-09 12:00:26 -05:00
Nathan Rew
521997c532
Update 0bin Source Code link and Demo link 2021-07-09 11:59:11 -05:00
Nathan Rew
f032a0b1e0
Update Spectrum 2 Source Code link 2021-07-09 11:56:43 -05:00
Nathan Rew
53d5f2a90e
Remove OTRS - Archived 2021-07-09 11:55:07 -05:00
Nathan Rew
7b48a23eb7
Update DocPHT Source Code link 2021-07-09 11:53:55 -05:00
Nathan Rew
b53c0001e2
Update rss2twtxt Source Code link 2021-07-09 11:53:02 -05:00
Nathan Rew
76f6e8c8d9
Update leselys Source Code link 2021-07-09 11:51:10 -05:00
Nathan Rew
23b6c3d15c
Update Pydio Source Code link and language 2021-07-09 11:49:01 -05:00
Nathan Rew
5ce9304476
Update unmark Site link and Source Code link 2021-07-09 11:46:05 -05:00
Nathan Rew
c17455c613 Remove Mail For Good - Archived 2021-07-09 11:42:25 -05:00
Nathan Rew
b828a81c7b Update simply-shorten Source Code link 2021-07-09 11:42:17 -05:00
Nathan Rew
4d32b25d37 Remove How Secure Is My Password - Archived 2021-07-09 11:40:30 -05:00
Nathan Rew
994cfebeb4
Remove Beauties - Archived 2021-07-09 11:07:23 -05:00
Nathan Rew
8eba9bcdf4
Update TileServer PHP Site and Source Code link 2021-07-09 11:06:30 -05:00
Nathan Rew
ec9ff289c5
Remove TournamentMango - Archived 2021-07-09 11:02:53 -05:00
Nathan Rew
77ed4130ae
Remove CalendarServer - Archived 2021-07-09 11:02:10 -05:00
Nathan Rew
277e6de0d8
Update WebODF Source Code link 2021-07-09 11:01:00 -05:00
Nathan Rew
993109a42d
Remove battlecraft - Archived 2021-07-09 11:00:14 -05:00
Nathan Rew
5dcf26d3f4
Update EdPaste Source Code link 2021-07-09 10:59:25 -05:00
Nathan Rew
5adcbbfbad
Remove Agar.IO Clone - Archived 2021-07-09 10:57:33 -05:00
Nathan Rew
ae96ff2955
Update Clerk Source Code link 2021-07-09 10:56:55 -05:00
Nathan Rew
d97c0c012a
Update moonmoon Source Code link 2021-07-09 10:56:02 -05:00
Nathan Rew
a28cca3402
Update cadmus Source Code link 2021-07-09 10:55:24 -05:00
Nathan Rew
70c0e3b78b
Update instant.io Source Code link 2021-07-09 10:54:22 -05:00
Nathan Rew
643313ba6e
Remove Nunux Keeper - Archived 2021-07-09 10:52:54 -05:00
Nathan Rew
cb8e78d02f
Remove Friends - Archived 2021-07-09 10:52:14 -05:00
Nathan Rew
03a3043d95
Update misskey Source Code link 2021-07-09 10:50:46 -05:00
Nathan Rew
69c953b194
Update DPlatform Source Code link 2021-07-09 10:49:49 -05:00
Nathan Rew
1fa56a661e
Remove http2-serverpush-proxy - Archived 2021-07-09 10:48:48 -05:00
Nathan Rew
b02539d29e
Remove ydl_api duplicate link 2021-07-09 10:45:51 -05:00
Nathan Rew
64a1af41fc
Update turndown site and source code links. 2021-07-09 10:43:38 -05:00
Nathan Rew
0b51c444fa
Remove pyShelf site link. th3r00t/pyShelf#68 2021-07-09 10:41:27 -05:00
Nathan Rew
0a5734e47b
Update FluxBB site link 2021-07-09 10:38:02 -05:00
Nathan Rew
b97b28c57c
Update OliveTin Source Code 2021-07-09 10:35:27 -05:00
amo13
4d06a63360
Add more description for ACP Admin 2021-07-08 23:53:24 +02:00
Andreas Waschinski
4cdbcb6390
Add Crater 2021-07-08 19:58:25 +02:00
inkhey
76dd2f0afc
adjust tracim entry 2021-07-08 18:02:17 +02:00
Andreas Waschinski
235bca87e9
Updated Photo Stream link 2021-07-08 13:29:38 +02:00
inkhey
133112c86f add tracim 2021-07-07 20:06:51 +02:00
Owen Young
790fe2c6a8 Add Track Awesome Selfhosted external link 2021-07-08 01:01:10 +08:00
nodiscc
06ed6184ff
Merge pull request #2610 from tycrek/patch-1
Added 'ass' to 'Single-click/drag-n-drop upload'
2021-07-07 16:22:50 +00:00
nodiscc
b9d3341098
Merge pull request #2606 from altumcode/master
Added 66Analytics to Non-free Analytics
2021-07-07 16:21:53 +00:00
nodiscc
8875f65e28
Merge pull request #2605 from SlidingHorn/master
Add Serendipity blogging platform
2021-07-07 16:21:26 +00:00
nodiscc
8f2a24ea36
Merge pull request #2582 from zigazajc007/patch-1
Added Passky
2021-07-07 16:15:49 +00:00
nodiscc
dc76e290ee
Merge pull request #2579 from mwild1/patch-1
Add Snikket to XMPP servers
2021-07-07 16:15:21 +00:00
nodiscc
2499fe3061
snikket: fix multiple licenses syntax 2021-07-07 16:15:14 +00:00
nodiscc
2f42ba1532
Merge pull request #2568 from oof2win2/master
Add Dogbin to list of pastebins
2021-07-07 16:14:30 +00:00
nodiscc
1fd3fa2008
dogbin: capitalize "URL" 2021-07-07 16:14:18 +00:00
Rosano
a048f2608c
Add easyindie.app 2021-07-06 17:53:20 -03:00
nodiscc
63a8a81a2e
Merge pull request #2608 from awesome-selfhosted/fix_headings
Fix category headings
2021-07-06 18:43:27 +00:00
nodiscc
5d58245cbc
fix whitespace in collabora entry 2021-07-06 18:07:18 +00:00
Josh Moore
28654d1bb6
Added 'ass' to 'Single-click/drag-n-drop upload' 2021-07-05 20:27:18 -06:00
Nathan Rew
138155d161 Fix category zero-k syntax
Signed-off-by: Nathan Rew <nrew225@gmail.com>
2021-07-04 14:35:18 -05:00
Nathan Rew
9464c0f17b Fix category headings
Signed-off-by: Nathan Rew <nrew225@gmail.com>
2021-07-04 13:44:24 -05:00
nodiscc
93226b86a6
Merge pull request #2607 from nodiscc/fix-syntax-standardize
Fix syntax, standardize casing, make project names unique, remove sapioit/URL-shortener
2021-07-04 13:33:50 +00:00
nodiscc
9a97fc95d1
standardize .NET casing 2021-07-04 15:30:48 +02:00
nodiscc
7c84e46270
standardize Docker casing 2021-07-04 15:30:27 +02:00
nodiscc
06ff314b1c
standardize Go casing 2021-07-04 15:30:02 +02:00
nodiscc
aaa24f89c3
standardize Javascript casing 2021-07-04 15:29:31 +02:00
nodiscc
402bb96ae7
standardize Nodejs language/platform tag (casing, no dot) 2021-07-04 15:28:46 +02:00
nodiscc
244676230a
fix language/platform tag for pixelfed 2021-07-04 15:27:46 +02:00
nodiscc
2e2f869620
remove quotes from projects descriptions 2021-07-04 15:27:10 +02:00
nodiscc
62b08556b8
fix teddit syntax 2021-07-04 15:24:15 +02:00
nodiscc
156318ed0b
add missing license/language for zero-k, fix syntax 2021-07-04 14:46:43 +02:00
nodiscc
1cb62ebb2f
add missing license/platform for battle of wesnoth 2021-07-04 14:46:25 +02:00
nodiscc
9edf47fda2
remove https://github.com/sapioit/URL-shortener
- Access to this repository has been disabled by GitHub Staff due to a violation of GitHub's terms of service
2021-07-04 14:45:52 +02:00
nodiscc
606d5d2e7c
fix line break 2021-07-04 14:45:23 +02:00
nodiscc
793b6ae0c2
no slashes in software names, update/fix Cyrus IMAP description, use repo name for tasks.php 2021-07-04 14:44:19 +02:00
nodiscc
30d7207184
make names unique (prepend username for Tasks and pastebin) 2021-07-04 14:42:35 +02:00
amo13
c81e221dc3
Fix issues
adopt suggestions given by @n8225
2021-07-04 11:34:25 +02:00
AltumCode
c0f45cbc4d Added 66Analaytics by AltumCode. 2021-07-03 12:20:03 +03:00
SlidingHorn
a360d03fc2 Add Serendipity blogging platform 2021-07-02 15:02:47 -04:00
xavierxross
bfc6cace06
Update README.md 2021-07-02 11:24:14 +05:30
oof2win2
44c8b71ba8
🗑️ Remove dogbin preview 2021-07-01 18:44:28 +02:00
nodiscc
4968e506d5
Merge pull request #2569 from kokomo123/patch-1
Add Lancache to Misc/Other
2021-07-01 16:17:13 +00:00
nodiscc
277803ba82
Merge pull request #2574 from stefanjf/patch-3
Add budgetzero to Money, Budgeting and Management section
2021-07-01 16:16:53 +00:00
nodiscc
c6dd81baf4
Merge pull request #2578 from pawelmalak/patch-1
Add Flame to Personal Dashboards
2021-07-01 16:15:42 +00:00
nodiscc
0e4f9a4fef
Merge pull request #2594 from Feuerhamster/master
Add "MailForm" to category "Mail Delivery Agents"
2021-07-01 16:14:57 +00:00
nodiscc
ca6422395f
Merge pull request #2597 from horahoradev/master
Add Horahora to Category Archiving and Digital Preservation
2021-07-01 16:14:25 +00:00
n8225
e1b9f6090d
Merge pull request #2571 from JmzTaylor/patch-1
Add Jmz Home Proxy to Personal Dashboards
2021-07-01 07:33:37 -05:00
n8225
bc7f1538e7
Merge pull request #2572 from orhun/master
Add Rustpad to Office Suites
2021-07-01 07:32:33 -05:00
n8225
7ea6d81b6d
Merge pull request #2581 from rossdotparker/master
Added Gibbon to Learning and Courses
2021-07-01 06:49:03 -05:00
n8225
a3c6f6e644
Merge pull request #2587 from ardichoke/patch-2
Remove Feedbin
2021-07-01 06:43:05 -05:00
n8225
72d2b327b2
Merge pull request #2589 from IceCryptonym/patch-2
Add Teddit to Social Networks
2021-07-01 06:40:22 -05:00
horahoradev
e5165c83b4 Sentence case 2021-06-29 18:30:48 -07:00
horahoradev
851fe4a107 Added horahora 2021-06-29 18:25:16 -07:00
xavierxross
9479186da6
Added Cloudbox To Self-hosting solutions 2021-06-27 10:20:10 +05:30
Feuerhamster
78d2d9d407
Add "MailForm" to category "Mail Delivery Agents" 2021-06-26 22:53:28 +02:00
nodiscc
71bf116091
lancache: update language/platform 2021-06-23 20:24:12 +00:00
nodiscc
d5e9f7db0c
budgetzero: fix language/platform 2021-06-23 20:17:51 +00:00
nodiscc
377bb96211
dogbin: use description from project page 2021-06-23 20:14:03 +00:00
IceCryptonym
875506c92a
Add Teddit to Social Networks 2021-06-19 17:43:26 +10:00
Ryan DeShone
10ff8e7549
Remove Feedbin
Feedbin is no longer awesome, it has moved to a paid subscription service and is explicitly directing people looking to self-host toward other solutions. Per their github page:

```Feedbin's goal is to be a great web-based RSS service. This goal is at odds with being a great self-hosted RSS reader. There are a lot of moving parts and things to configure, so for that reason I do not recommend that you run Feedbin in production.```
2021-06-17 14:48:09 -04:00
Ziga Zajc
045d7824e6
Added demo to Passky 2021-06-12 18:39:16 +02:00
Ziga Zajc
8e628ef08a
Added Passky
Passky is open source password manager
2021-06-12 18:28:35 +02:00
Ross Parker
832fd503b9
Update README.md 2021-06-12 17:36:08 +08:00
Matthew Wild
dddf278acd
Add Snikket to XMPP servers 2021-06-10 13:51:19 +01:00
pawelmalak
95151e352a
Add Flame to Personal Dashboards
Thank you for taking the time to work on a PR for Awesome-Selfhosted!

To ensure your PR is dealt with swiftly please check the following:

- [x] Submit one item per pull request. This eases reviewing and speeds up inclusion.
- [x] Format your submission as follows, where `Demo` and `Clients` are optional.
  Do not add a duplicate `Source code` link if it is the same as the main link.
  Keep the short description under 250 characters and use [sentence case](https://en.wikipedia.org/wiki/Letter_case#Sentence_case)
  for it, even if the project's webpage or readme uses another capitalisation
  such as title case, all caps, small caps or all lowercase.
  ``- [Name](http://homepage/) - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` ``
- [x] Additions that depend on proprietary services outside the user's control must be marked `⚠`.
  ``- [Name](http://homepage/) `⚠` - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` ``
- [x] Additions that are not [Free software](https://en.wikipedia.org/wiki/Free_software)
  must be added to `non-free.md` and marked `⊘ Proprietary`:
  ``- [Name](http://homepage/) `⊘ Proprietary` - Short description, under 250 characters, sentence case. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `Language` ``
- [x] Additions are inserted preserving alphabetical order.
- [x] Additions are not already listed at any of
  - [awesome-sysadmin](https://github.com/n1trux/awesome-sysadmin) (IT infrastructure management),
  - [awesome-analytics](https://github.com/onurakpolat/awesome-analytics) (analytics),
  - [staticgen.com](https://www.staticgen.com/)
  - [staticsitegenerators.net](https://staticsitegenerators.net/) (static site generators).
- [x] The `Language` tag is the main server-side requirement for the software - don't include frameworks or specific dialects.
- [x] Any license you add is in our [list of licenses](https://github.com/awesome-selfhosted/awesome-selfhosted/blob/master/README.md#list-of-licenses).
- [x] You have searched the repository for any relevant [issues](https://github.com/awesome-selfhosted/awesome-selfhosted/issues) or [PRs](https://github.com/awesome-selfhosted/awesome-selfhosted/pulls), including closed ones.
- [x] Any category you are creating has the minimum requirement of 3 items.
  If not, your addition may be inserted into `Misc/Other`.
- [x] Any software project you are adding to the list is actively maintained.
- [x] The pull request title is informative, unlike "Update README.md".
  Suggested titles: "Add aaa to bbb" for adding software aaa to section bbb,
  "Remove aaa from bbb" for removing, "Fix license for aaa", etc.
2021-06-10 13:55:45 +02:00
amo13
e01307e092
Add Community-Supported Agriculture (CSA) category with 9 initial items
Was looking for selfhostable server software for CSA purposes and found nothing on here. Some further research showed that quite a few interesting and alive projects exist. So I though I should add them to this awesome curated list for other people to find.
2021-06-10 00:59:25 +02:00
oof2win2
3a8e0abd00
Merge branch 'master' into master 2021-06-08 21:10:21 +02:00
Stefan Fernandez
aed7c728dd
Update README.md 2021-06-07 22:00:33 -04:00
orhun
e518bed3bd
Add Rustpad to Office Suites 2021-06-07 18:34:27 +03:00
James
fcb55d247a
Add Jmz Home Proxy to Personal Dashboards 2021-06-07 10:26:25 -05:00
kokomo123
0a50e845a2
Potentially fixed CI problems? 2021-06-06 21:49:20 -04:00
kokomo123
edff0384c3
Changed links around 2021-06-06 21:38:07 -04:00
kokomo123
39f9834596
Fixed that broken demo link. Oops! 2021-06-06 21:28:12 -04:00
kokomo123
28e497391b
Add Lancache to Misc/Other 2021-06-06 21:22:33 -04:00
oof2win2
7968113af1
Added dogbin demo 2021-05-31 17:28:35 +02:00
oof2win2
234afb404f
Added dogbin 2021-05-31 17:27:03 +02:00
buoyantair
e1a381fdc6
Update Torrents.csv link
Looks like the author moved the codebase to a self hosted site
2021-05-26 18:51:27 +05:30
9 changed files with 794 additions and 1013 deletions

View File

@ -1,110 +0,0 @@
name: Monthly Checks
on:
schedule:
- cron: '0 5 1 * *'
workflow_dispatch:
jobs:
create-issue:
if: always()
needs: [check_syntax, check_links, check_github_commit_dates]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: result
- name: Create Issue template
run: |
printf '%s\n%s%s %s\n%s\n%s\n' '---' 'title: Monthly Checks - ' $( date +"%B %Y" ) 'labels: automated issue' '---' > .github/ISSUE_TEMPLATE.md
echo -e '[![Monthly Checks](https://github.com/n8225/awesome-selfhosted/actions/workflows/monthly.yml/badge.svg)](https://github.com/n8225/awesome-selfhosted/actions/workflows/monthly.yml)' >> .github/ISSUE_TEMPLATE.md
echo -e '\n--------------------' >> .github/ISSUE_TEMPLATE.md
echo -e '\n### Awesome_Bot link checks\n' >> .github/ISSUE_TEMPLATE.md
jq -r '.[] | ["* [ ] ", "Line ", .loc, ": ", .link, ", ", .error] | join("")' ab-results-README.md-filtered.json >> .github/ISSUE_TEMPLATE.md || true
echo -e '\n' >> .github/ISSUE_TEMPLATE.md
cat github_commit_dates.md >> .github/ISSUE_TEMPLATE.md || true
echo -e '\n' >> .github/ISSUE_TEMPLATE.md
cat syntax_check.md >> .github/ISSUE_TEMPLATE.md || true
echo -e '\n--------------------\n' >> .github/ISSUE_TEMPLATE.md
printf '%s/%s%s%s' ${GITHUB_SERVER_URL} ${GITHUB_REPOSITORY} '/actions/runs/' ${GITHUB_RUN_ID} >> .github/ISSUE_TEMPLATE.md
- name: Verify template
run: cat .github/ISSUE_TEMPLATE.md
- name: create issue
id: create-iss
uses: buluma/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: 'echo Created issue number ${{ steps.create-iss.outputs.number }}'
check_github_commit_dates:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python 3.x
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Setup Checks
run: pip3 install Requests
- name: Checks
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python tests/check-github-commit-dates.py README.md
- name: Check result
if: ${{ always() }}
run: cat github_commit_dates.md
- name: Upload result
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: result
path: github_commit_dates.md
check_syntax:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Setup Checks
run: |
cd tests
npm install --silent chalk
cd ..
- name: Checks
run:
script -e -c 'node tests/test.js -r README.md'
- name: Check result
if: ${{ always() }}
run: cat syntax_check.md
- name: upload check syntax results
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: result
path: syntax_check.md
check_links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby 2.6
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.7
- name: Setup Checks
run: gem install awesome_bot
- name: Checks
run: awesome_bot -f README.md --allow-redirect --allow 202,429 --white-list < tests/link_whitelist.txt
- name: Check result
if: ${{ always() }}
run: cat ab-results-README.md-filtered.json
- name: upload awesome_bot results
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: result
path: ab-results-*.json

View File

@ -1,47 +0,0 @@
name: Pull Request Checks
on:
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
check_syntax:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: create diff
run: git diff origin/master -U0 README.md | grep --perl-regexp --only-matching "(?<=^\+).*" > temp.md
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: install chalk
run: |
cd tests
npm install chalk
cd ..
- name: Checks
run: script -e -c 'node tests/test.js -r README.md -d temp.md'
check_links:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: create diff
run: git diff origin/master -U0 README.md | grep --perl-regexp --only-matching "(?<=^\+).*" > temp.md
- name: Set up Ruby 2.6
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.x
- name: install awesome_bot
run: gem install awesome_bot
- name: Checks
run: awesome_bot -f temp.md --allow-redirect --skip-save-results --allow 202 --white-list < tests/link_whitelist.txt

20
.travis.yml Normal file
View File

@ -0,0 +1,20 @@
language: node_js
node_js:
- "node"
cache:
npm: false
before_install:
- rvm install 2.6.2
- gem install awesome_bot
- sudo apt update && sudo apt install python3-pip python3-setuptools
- cd tests && npm install chalk && cd ..
script:
- 'if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_EVENT_TYPE" == "cron" ]]; then make check_all; fi'
- 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then make check_pr; fi'
notifications:
email: false

View File

@ -1,7 +1,7 @@
|Commits | Author | |Commits | Author |
| :---: | --- | | :---: | --- |
|1494|nodiscc <nodiscc@gmail.com>| |1560|nodiscc <nodiscc@gmail.com>|
|327|n8225 <n8225@users.noreply.github.com>| |334|n8225 <n8225@users.noreply.github.com>|
|319|Kickball <ed.kickball@hotmail.com>| |319|Kickball <ed.kickball@hotmail.com>|
|122|Andrew Rylatt <arylatt@users.noreply.github.com>| |122|Andrew Rylatt <arylatt@users.noreply.github.com>|
|77|Meitar M <meitarm@gmail.com>| |77|Meitar M <meitarm@gmail.com>|
@ -12,10 +12,12 @@
|23|cave beat <cave@cavebeat.org>| |23|cave beat <cave@cavebeat.org>|
|17|Thomas Dalichow <info@thomasdalichow.de>| |17|Thomas Dalichow <info@thomasdalichow.de>|
|14|Miguel Piedrafita <github@miguelpiedrafita.com>| |14|Miguel Piedrafita <github@miguelpiedrafita.com>|
|14|kokomo123 <70863536+kokomo123@users.noreply.github.com>|
|13|Ferdinand Mütsch <mail@ferdinand-muetsch.de>| |13|Ferdinand Mütsch <mail@ferdinand-muetsch.de>|
|13|jungle-boogie <sean@jungleboogie.me>| |13|jungle-boogie <sean@jungleboogie.me>|
|12|Alex <alex@maximum.guru>| |12|Alex <alex@maximum.guru>|
|12|Pe46dro <pietro@marangon.me>| |12|Pe46dro <pietro@marangon.me>|
|11|Akashdeep Dhar <akashdeep.dhar@gmail.com>|
|11|Pietro Marangon <pietro.marangon@gmail.com>| |11|Pietro Marangon <pietro.marangon@gmail.com>|
|10|Kevin <kevin@kevink.dev>| |10|Kevin <kevin@kevink.dev>|
|9|Andrew Peng <pengc99@gmail.com>| |9|Andrew Peng <pengc99@gmail.com>|
@ -26,7 +28,6 @@
|8|CooperBarrett <anthony.lhuissier@openmailbox.org>| |8|CooperBarrett <anthony.lhuissier@openmailbox.org>|
|8|Martijn <martijn@mrtijn.nl>| |8|Martijn <martijn@mrtijn.nl>|
|8|Rodrigo Avelino <rodrigo@avelino.org>| |8|Rodrigo Avelino <rodrigo@avelino.org>|
|8|kokomo123 <70863536+kokomo123@users.noreply.github.com>|
|7|Hammy Havoc <hammy@splitanatom.com>| |7|Hammy Havoc <hammy@splitanatom.com>|
|7|Ilian <ugg.rock@gmail.com>| |7|Ilian <ugg.rock@gmail.com>|
|7|James Mills <prologic@shortcircuit.net.au>| |7|James Mills <prologic@shortcircuit.net.au>|
@ -37,11 +38,11 @@
|7|n1trux <n1trux@users.noreply.github.com>| |7|n1trux <n1trux@users.noreply.github.com>|
|7|phre4k <me@phre4k.at>| |7|phre4k <me@phre4k.at>|
|7|édouard u. <mail@edouard.us>| |7|édouard u. <mail@edouard.us>|
|6|Alexander <46561566+AlexKnowsIt@users.noreply.github.com>|
|6|Chris McCormick <chris@mccormick.cx>| |6|Chris McCormick <chris@mccormick.cx>|
|6|Per Guth <mail@perguth.de>| |6|Per Guth <mail@perguth.de>|
|6|Quinn Comendant <quinn@strangecode.com>| |6|Quinn Comendant <quinn@strangecode.com>|
|6|Touhid Arastu <touhid.arastu@gmail.com>| |6|Touhid Arastu <touhid.arastu@gmail.com>|
|5|Alexander <46561566+AlexKnowsIt@users.noreply.github.com>|
|5|Bob van Luijt <bob@semi.technology>| |5|Bob van Luijt <bob@semi.technology>|
|5|Dariusz <37488679+Volmarg@users.noreply.github.com>| |5|Dariusz <37488679+Volmarg@users.noreply.github.com>|
|5|Deluan Quintão <github@deluan.com>| |5|Deluan Quintão <github@deluan.com>|
@ -107,6 +108,7 @@
|4|Meitar M <meitarm+github.1djyXhCkVsRYzZRk@gmail.com>| |4|Meitar M <meitarm+github.1djyXhCkVsRYzZRk@gmail.com>|
|4|Praveen Durairaju <praveend.web@gmail.com>| |4|Praveen Durairaju <praveend.web@gmail.com>|
|4|Rodolfo Berrios <inbox@rodolfoberrios.com>| |4|Rodolfo Berrios <inbox@rodolfoberrios.com>|
|4|Ryan DeShone <rfdeshon@gmail.com>|
|4|Sandro <sandro.jaeckel@posteo.de>| |4|Sandro <sandro.jaeckel@posteo.de>|
|4|Sebastian Stehle <sebastian@squidex.io>| |4|Sebastian Stehle <sebastian@squidex.io>|
|4|Sergio Brighenti <sergio@brighenti.me>| |4|Sergio Brighenti <sergio@brighenti.me>|
@ -121,6 +123,7 @@
|4|dpfaffenbauer <dominik@lineofcode.at>| |4|dpfaffenbauer <dominik@lineofcode.at>|
|4|dyu <david.yu.ftw@gmail.com>| |4|dyu <david.yu.ftw@gmail.com>|
|4|hebbet <pascal.herbert@gmail.com>| |4|hebbet <pascal.herbert@gmail.com>|
|4|oof2win2 <honza.koco44@gmail.com>|
|4|paddo <mail@patrickrichter.net>| |4|paddo <mail@patrickrichter.net>|
|3|132ikl <132@ikl.sh>| |3|132ikl <132@ikl.sh>|
|3|Aguay <baraise.valentin@gmail.com>| |3|Aguay <baraise.valentin@gmail.com>|
@ -131,6 +134,7 @@
|3|BernsteinA <4685390+BernsteinA@users.noreply.github.com>| |3|BernsteinA <4685390+BernsteinA@users.noreply.github.com>|
|3|Brandon Jones <brandon@radroot.com>| |3|Brandon Jones <brandon@radroot.com>|
|3|Burak Emre Kabakcı <emrekabakci@gmail.com>| |3|Burak Emre Kabakcı <emrekabakci@gmail.com>|
|3|Christopher Charbonneau Wells <cdubz@users.noreply.github.com>|
|3|Conor O'Callaghan <brioscaibriste@users.noreply.github.com>| |3|Conor O'Callaghan <brioscaibriste@users.noreply.github.com>|
|3|Cédric Krier <cedk@users.noreply.github.com>| |3|Cédric Krier <cedk@users.noreply.github.com>|
|3|Daniel Mason <danielmason@catalyst.net.nz>| |3|Daniel Mason <danielmason@catalyst.net.nz>|
@ -187,9 +191,9 @@
|3|Prashant Singh <prashant.singh852@webkul.com>| |3|Prashant Singh <prashant.singh852@webkul.com>|
|3|PrplHaz4 <PrplHaz4@users.noreply.github.com>| |3|PrplHaz4 <PrplHaz4@users.noreply.github.com>|
|3|Roland Whitehead <4478022+qururoland@users.noreply.github.com>| |3|Roland Whitehead <4478022+qururoland@users.noreply.github.com>|
|3|Ryan DeShone <rfdeshon@gmail.com>|
|3|Sandro Jäckel <sandro.jaeckel@gmail.com>| |3|Sandro Jäckel <sandro.jaeckel@gmail.com>|
|3|Sheshbabu <sheshbabu@gmail.com>| |3|Sheshbabu <sheshbabu@gmail.com>|
|3|Sjoerd van der Hoorn <sjoerdvanderhoorn@hotmail.com>|
|3|Tobi Schäfer <interface@p3k.org>| |3|Tobi Schäfer <interface@p3k.org>|
|3|Tom Pansino <2768420+tpansino@users.noreply.github.com>| |3|Tom Pansino <2768420+tpansino@users.noreply.github.com>|
|3|Yann Forget <forget.yann31@gmail.com>| |3|Yann Forget <forget.yann31@gmail.com>|
@ -254,7 +258,6 @@
|2|Chris Lu <chrislusf@users.noreply.github.com>| |2|Chris Lu <chrislusf@users.noreply.github.com>|
|2|Chris Missal <chris.missal@gmail.com>| |2|Chris Missal <chris.missal@gmail.com>|
|2|Christophe De Troyer <christophe.detroyer@gmail.com>| |2|Christophe De Troyer <christophe.detroyer@gmail.com>|
|2|Christopher Charbonneau Wells <cdubz@users.noreply.github.com>|
|2|Cleberson Ramirio <cleberson.ramirio@outlook.com>| |2|Cleberson Ramirio <cleberson.ramirio@outlook.com>|
|2|Corentin Brossault <corentin.brossault@gmail.com>| |2|Corentin Brossault <corentin.brossault@gmail.com>|
|2|Costin Moise <necenzurat@gmail.com>| |2|Costin Moise <necenzurat@gmail.com>|
@ -378,7 +381,6 @@
|2|Shane Cooke <shanecooke@mac.com>| |2|Shane Cooke <shanecooke@mac.com>|
|2|Simon Vieille <simon@deblan.fr>| |2|Simon Vieille <simon@deblan.fr>|
|2|Simone Grignola <sito@grignola.ch>| |2|Simone Grignola <sito@grignola.ch>|
|2|Sjoerd van der Hoorn <sjoerdvanderhoorn@hotmail.com>|
|2|Spark <24642451+Sparkenstein@users.noreply.github.com>| |2|Spark <24642451+Sparkenstein@users.noreply.github.com>|
|2|Stefan Bohacek <stefan.bohacek@gmail.com>| |2|Stefan Bohacek <stefan.bohacek@gmail.com>|
|2|Stefane Fermigier <sf@fermigier.com>| |2|Stefane Fermigier <sf@fermigier.com>|
@ -404,6 +406,7 @@
|2|Yurii Dubinka <yurii.dubinka@gmail.com>| |2|Yurii Dubinka <yurii.dubinka@gmail.com>|
|2|Zeniic <Zeniic@users.noreply.github.com>| |2|Zeniic <Zeniic@users.noreply.github.com>|
|2|Zeyphros <robin@decker.cx>| |2|Zeyphros <robin@decker.cx>|
|2|Ziga Zajc <ziga.zajc007@gmail.com>|
|2|agetic <agetic@debian>| |2|agetic <agetic@debian>|
|2|ahaenggli <adriano@haenggli.net>| |2|ahaenggli <adriano@haenggli.net>|
|2|aldevar <aldevar@alaben.net>| |2|aldevar <aldevar@alaben.net>|
@ -418,6 +421,7 @@
|2|fengshaun <amoradi@fedoraproject.org>| |2|fengshaun <amoradi@fedoraproject.org>|
|2|fuerbringer <severin@protonmail.ch>| |2|fuerbringer <severin@protonmail.ch>|
|2|gseva <gavrilovseva@gmail.com>| |2|gseva <gavrilovseva@gmail.com>|
|2|horahoradev <horahora1567@gmail.com>|
|2|jciskey <jciskey@gmail.com>| |2|jciskey <jciskey@gmail.com>|
|2|jganobsik <39414138+jganobsik@users.noreply.github.com>| |2|jganobsik <39414138+jganobsik@users.noreply.github.com>|
|2|jimykk <JimyKK@users.noreply.github.com>| |2|jimykk <JimyKK@users.noreply.github.com>|
@ -454,11 +458,13 @@
|1|Aditya Nagla <me@cdadityang.xyz>| |1|Aditya Nagla <me@cdadityang.xyz>|
|1|Adrian Kumpf <adrian.kumpf@posteo.de>| |1|Adrian Kumpf <adrian.kumpf@posteo.de>|
|1|Aimee <16459597+Aimeedeer@users.noreply.github.com>| |1|Aimee <16459597+Aimeedeer@users.noreply.github.com>|
|1|Aimeos <aimeos@aimeos.org>|
|1|Akos Veres <veres@akos.me>| |1|Akos Veres <veres@akos.me>|
|1|Alashov Berkeli <yunus.alashow@gmail.com>| |1|Alashov Berkeli <yunus.alashow@gmail.com>|
|1|Alberto Bertogli <albertito@blitiri.com.ar>| |1|Alberto Bertogli <albertito@blitiri.com.ar>|
|1|Alejandro Rodríguez <arcxyz@users.noreply.github.com>| |1|Alejandro Rodríguez <arcxyz@users.noreply.github.com>|
|1|Alex <alexta69@gmail.com>| |1|Alex <alexta69@gmail.com>|
|1|Alex Cureton-Griffiths <alexcg1@users.noreply.github.com>|
|1|Alex Fornuto <alex@fornuto.com>| |1|Alex Fornuto <alex@fornuto.com>|
|1|Alex Ling <hkalexling@gmail.com>| |1|Alex Ling <hkalexling@gmail.com>|
|1|Alex Tselegidis <alextselegidis@gmail.com>| |1|Alex Tselegidis <alextselegidis@gmail.com>|
@ -469,6 +475,8 @@
|1|Alexey Strokach <alex.strokach@utoronto.ca>| |1|Alexey Strokach <alex.strokach@utoronto.ca>|
|1|Alfred Bez <alfred.bez@googlemail.com>| |1|Alfred Bez <alfred.bez@googlemail.com>|
|1|Algram <aliasgram@gmail.com>| |1|Algram <aliasgram@gmail.com>|
|1|Alicia Sykes <gh@d0h.co>|
|1|AltumCode <hello@altumcode.com>|
|1|Alys <alice.harris@oldgods.net>| |1|Alys <alice.harris@oldgods.net>|
|1|Andre <andre.lehmann@posteo.de>| |1|Andre <andre.lehmann@posteo.de>|
|1|Andrei Marcu <andrei@marcu.net>| |1|Andrei Marcu <andrei@marcu.net>|
@ -487,6 +495,7 @@
|1|Anton Troyanov <anton@troyanov.net>| |1|Anton Troyanov <anton@troyanov.net>|
|1|Arkady Asuratov <arkady.asuratov@dubas.pro>| |1|Arkady Asuratov <arkady.asuratov@dubas.pro>|
|1|Armando Lüscher <armando@noplanman.ch>| |1|Armando Lüscher <armando@noplanman.ch>|
|1|Arnav Jindal <arnav.jindal7@gmail.com>|
|1|Arnold Schrijver <aschrijver@users.noreply.github.com>| |1|Arnold Schrijver <aschrijver@users.noreply.github.com>|
|1|ArthurHoaro <arthur@hoa.ro>| |1|ArthurHoaro <arthur@hoa.ro>|
|1|Ash Leece <ash@leece.im>| |1|Ash Leece <ash@leece.im>|
@ -551,13 +560,17 @@
|1|David Stephens <dave@force9.org>| |1|David Stephens <dave@force9.org>|
|1|David Yu <david.yu.ftw@gmail.com>| |1|David Yu <david.yu.ftw@gmail.com>|
|1|Deeoon <25846405+Deeoon@users.noreply.github.com>| |1|Deeoon <25846405+Deeoon@users.noreply.github.com>|
|1|Deihim007 <deihim007@gmail.com>|
|1|Denis <isdn@users.noreply.github.com>| |1|Denis <isdn@users.noreply.github.com>|
|1|Denis <issden@gmail.com>| |1|Denis <issden@gmail.com>|
|1|Diego Molina <diemol@users.noreply.github.com>| |1|Diego Molina <diemol@users.noreply.github.com>|
|1|Dimitri Steinel <d.steinel@de.edenspiekermann.com>| |1|Dimitri Steinel <d.steinel@de.edenspiekermann.com>|
|1|Dirk Krause <dirkk0@googlemail.com>| |1|Dirk Krause <dirkk0@googlemail.com>|
|1|Dmitrii Poddubnyi <dpoddubny@gmail.com>|
|1|Dmitriy Volkov <wldhx+vcs+github_com@wldhx.me>| |1|Dmitriy Volkov <wldhx+vcs+github_com@wldhx.me>|
|1|Dmitry Khomutov <poisoncorpsee@gmail.com>| |1|Dmitry Khomutov <poisoncorpsee@gmail.com>|
|1|Dmitry Sinina <12762053+dmitry-sinina@users.noreply.github.com>|
|1|Domarys <domaryscorrea@gmail.com>|
|1|DonPascualino <50177009+DonPascualino@users.noreply.github.com>| |1|DonPascualino <50177009+DonPascualino@users.noreply.github.com>|
|1|Doğan Çelik <dogancelik@users.noreply.github.com>| |1|Doğan Çelik <dogancelik@users.noreply.github.com>|
|1|Dražen Lučanin <kermit666@gmail.com>| |1|Dražen Lučanin <kermit666@gmail.com>|
@ -570,6 +583,7 @@
|1|Edreih Aldana <edreihaldana@yahoo.com>| |1|Edreih Aldana <edreihaldana@yahoo.com>|
|1|Eldad A. Fux <eldad.fux@gmail.com>| |1|Eldad A. Fux <eldad.fux@gmail.com>|
|1|Emeric POUPON <epoupon@users.noreply.github.com>| |1|Emeric POUPON <epoupon@users.noreply.github.com>|
|1|Emiliano <emiliano@sturniolo.com.ar>|
|1|Emlembow <36314674+Emlembow@users.noreply.github.com>| |1|Emlembow <36314674+Emlembow@users.noreply.github.com>|
|1|Eran Chetz <eran.chetzroni@algolia.com>| |1|Eran Chetz <eran.chetzroni@algolia.com>|
|1|Eren Hatırnaz <erenhatirnaz@hotmail.com.tr>| |1|Eren Hatırnaz <erenhatirnaz@hotmail.com.tr>|
@ -586,6 +600,7 @@
|1|Fabian Patzke <github@patzi.de>| |1|Fabian Patzke <github@patzi.de>|
|1|Farhan Ghumra <Xyroid@users.noreply.github.com>| |1|Farhan Ghumra <Xyroid@users.noreply.github.com>|
|1|Fazal Majid <github@sentfrom.com>| |1|Fazal Majid <github@sentfrom.com>|
|1|Feuerhamster <38376566+Feuerhamster@users.noreply.github.com>|
|1|Florian <52180080+Icesofty@users.noreply.github.com>| |1|Florian <52180080+Icesofty@users.noreply.github.com>|
|1|Florian Kaiser <florian.kaiser@fnkr.net>| |1|Florian Kaiser <florian.kaiser@fnkr.net>|
|1|Florian Kaldowski <flokX@users.noreply.github.com>| |1|Florian Kaldowski <flokX@users.noreply.github.com>|
@ -596,6 +611,7 @@
|1|FreeScout <40499291+freescout-helpdesk@users.noreply.github.com>| |1|FreeScout <40499291+freescout-helpdesk@users.noreply.github.com>|
|1|G <w_i_n_d_y_o@hotmail.com>| |1|G <w_i_n_d_y_o@hotmail.com>|
|1|Galen Abell <galen@galenabell.com>| |1|Galen Abell <galen@galenabell.com>|
|1|Gervwyk <gervwyk@gmail.com>|
|1|Gio <giodi@users.noreply.github.com>| |1|Gio <giodi@users.noreply.github.com>|
|1|Giorgos Logiotatidis <glogiotatidis@users.noreply.github.com>| |1|Giorgos Logiotatidis <glogiotatidis@users.noreply.github.com>|
|1|Girish Ramakrishnan <mail@girish.in>| |1|Girish Ramakrishnan <mail@girish.in>|
@ -608,8 +624,10 @@
|1|Henrique Holanda <contato@henriqueholanda.com.br>| |1|Henrique Holanda <contato@henriqueholanda.com.br>|
|1|Herman Zvonimir Došilović <hermanz.dosilovic@gmail.com>| |1|Herman Zvonimir Došilović <hermanz.dosilovic@gmail.com>|
|1|Hooopo <Hoooopo@gmail.com>| |1|Hooopo <Hoooopo@gmail.com>|
|1|Hunter Wittenborn <hunter@hunterwittenborn.com>|
|1|IAlwaysBeCoding <erik.dominguez1003@gmail.com>| |1|IAlwaysBeCoding <erik.dominguez1003@gmail.com>|
|1|Icantcodeatall <francois.lachese@me.com>| |1|Icantcodeatall <francois.lachese@me.com>|
|1|IceCryptonym <59789660+IceCryptonym@users.noreply.github.com>|
|1|Igor Antun <IgorAntun@users.noreply.github.com>| |1|Igor Antun <IgorAntun@users.noreply.github.com>|
|1|Igor Petrov <garik.piton@gmail.com>| |1|Igor Petrov <garik.piton@gmail.com>|
|1|Imron RA <42175898+imronra@users.noreply.github.com>| |1|Imron RA <42175898+imronra@users.noreply.github.com>|
@ -618,6 +636,8 @@
|1|Jack <jackdev@mailbox.org>| |1|Jack <jackdev@mailbox.org>|
|1|Jackson Delahunt <jackson@jacksondelahunt.com>| |1|Jackson Delahunt <jackson@jacksondelahunt.com>|
|1|Jakob Gillich <jakob@gillich.me>| |1|Jakob Gillich <jakob@gillich.me>|
|1|James <jmz.taylor16@gmail.com>|
|1|James Read <contact@jread.com>|
|1|Jan <jayphizzle@users.noreply.github.com>| |1|Jan <jayphizzle@users.noreply.github.com>|
|1|Jan Dietrich <jan.dietrich.12@gmail.com>| |1|Jan Dietrich <jan.dietrich.12@gmail.com>|
|1|Jannik Anker <jannikanker@users.noreply.github.com>| |1|Jannik Anker <jannikanker@users.noreply.github.com>|
@ -641,6 +661,7 @@
|1|Jordan Doyle <jordan@9t9t9.com>| |1|Jordan Doyle <jordan@9t9t9.com>|
|1|Jordan Doyle <jordan@doyle.la>| |1|Jordan Doyle <jordan@doyle.la>|
|1|Josh Harmon <me@joshharmon.me>| |1|Josh Harmon <me@joshharmon.me>|
|1|Josh Moore <josh.moore@jmoore.dev>|
|1|Joshua Hamilton <joshua.hamilton@fabricut.com>| |1|Joshua Hamilton <joshua.hamilton@fabricut.com>|
|1|José Castro <cogurov@gmail.com>| |1|José Castro <cogurov@gmail.com>|
|1|Julien <bibich@users.noreply.github.com>| |1|Julien <bibich@users.noreply.github.com>|
@ -672,8 +693,10 @@
|1|Lorenz Hübschle-Schneider <lorenzhs@users.noreply.github.com>| |1|Lorenz Hübschle-Schneider <lorenzhs@users.noreply.github.com>|
|1|Louis Grenard <louis.grenard@gmail.com>| |1|Louis Grenard <louis.grenard@gmail.com>|
|1|Lukas Masuch <Lukas.Masuch@gmail.com>| |1|Lukas Masuch <Lukas.Masuch@gmail.com>|
|1|Lukas Schulte Pelkum <kbrt@protonmail.com>|
|1|Luke Hoersten <Luke@Hoersten.org>| |1|Luke Hoersten <Luke@Hoersten.org>|
|1|Luke Singham <lukesingham@gmail.com>| |1|Luke Singham <lukesingham@gmail.com>|
|1|Luke Whrit <lukewhrit@pm.me>|
|1|Luuk Nieuwdorp <luuknieuwdorp@users.noreply.github.com>| |1|Luuk Nieuwdorp <luuknieuwdorp@users.noreply.github.com>|
|1|Lyz <lyz@riseup.net>| |1|Lyz <lyz@riseup.net>|
|1|Marcin Karpezo <m.karpezo@nencki.gov.pl>| |1|Marcin Karpezo <m.karpezo@nencki.gov.pl>|
@ -687,6 +710,7 @@
|1|Mark Railton <mark@markrailton.com>| |1|Mark Railton <mark@markrailton.com>|
|1|Markus Dieckmann <markus.dieckmann@posteo.de>| |1|Markus Dieckmann <markus.dieckmann@posteo.de>|
|1|Martin Allien <1965795+AllienWorks@users.noreply.github.com>| |1|Martin Allien <1965795+AllienWorks@users.noreply.github.com>|
|1|Martin Kucej <i.librarian.software@gmail.com>|
|1|Martin Malinda <malindacz@gmail.com>| |1|Martin Malinda <malindacz@gmail.com>|
|1|Marvin <Groruk@uberdoge.network>| |1|Marvin <Groruk@uberdoge.network>|
|1|Marvin Gülker <post+git@guelker.eu>| |1|Marvin Gülker <post+git@guelker.eu>|
@ -699,18 +723,22 @@
|1|Matthew Dews <matthew-dews@users.noreply.github.com>| |1|Matthew Dews <matthew-dews@users.noreply.github.com>|
|1|Matthew East <matthew@mattheweast.me>| |1|Matthew East <matthew@mattheweast.me>|
|1|Matthew McEachen <matthew@photostructure.com>| |1|Matthew McEachen <matthew@photostructure.com>|
|1|Matthew Wild <mwild1@gmail.com>|
|1|Matthias De Bie <mattydebie@gmail.com>| |1|Matthias De Bie <mattydebie@gmail.com>|
|1|Max <2843450+b-m-f@users.noreply.github.com>| |1|Max <2843450+b-m-f@users.noreply.github.com>|
|1|Max Hollmann <maxhollmann@gmail.com>| |1|Max Hollmann <maxhollmann@gmail.com>|
|1|Maxime Bouroumeau-Fuseau <maxime.bouroumeau@gmail.com>| |1|Maxime Bouroumeau-Fuseau <maxime.bouroumeau@gmail.com>|
|1|Mellow Fish Ltd <mfscripts@users.noreply.github.com>|
|1|Michael Barrow <michael@barrow.me>| |1|Michael Barrow <michael@barrow.me>|
|1|Michael Burns <michael@mirwin.net>| |1|Michael Burns <michael@mirwin.net>|
|1|Michael Lynch <mtlynch@users.noreply.github.com>|
|1|Michael M. Chang <michael@mchang.name>| |1|Michael M. Chang <michael@mchang.name>|
|1|Michael Malura <github@malura.me>| |1|Michael Malura <github@malura.me>|
|1|Michael Stegeman <michael@stegeman.me>| |1|Michael Stegeman <michael@stegeman.me>|
|1|Michael van Tricht <metricht@gmail.com>| |1|Michael van Tricht <metricht@gmail.com>|
|1|Michael van Tricht <mvantricht@expandonline.nl>| |1|Michael van Tricht <mvantricht@expandonline.nl>|
|1|Michael van Tricht <swordbeta@users.noreply.github.com>| |1|Michael van Tricht <swordbeta@users.noreply.github.com>|
|1|Miguel Michelson Martinez <miguel@chaskiq.io>|
|1|Mike Goodwin <xenithorb@users.noreply.github.com>| |1|Mike Goodwin <xenithorb@users.noreply.github.com>|
|1|Mike Steele <mike@steel.fm>| |1|Mike Steele <mike@steel.fm>|
|1|Miloš Kroulík <milos.kroulik@gmail.com>| |1|Miloš Kroulík <milos.kroulik@gmail.com>|
@ -730,6 +758,7 @@
|1|Nicolas Mattiocco <nicolas.mattiocco@gmail.com>| |1|Nicolas Mattiocco <nicolas.mattiocco@gmail.com>|
|1|NicolasCARPi <nicolas.carpi@curie.fr>| |1|NicolasCARPi <nicolas.carpi@curie.fr>|
|1|Niels Robin-Aubertin <nrobinaubertin@users.noreply.github.com>| |1|Niels Robin-Aubertin <nrobinaubertin@users.noreply.github.com>|
|1|Nikita Kolmogorov <backmeupplz@gmail.com>|
|1|Nikodem Deja <nikodem@nikodemdeja.pl>| |1|Nikodem Deja <nikodem@nikodemdeja.pl>|
|1|Nirmal Almara <yo@mysticmode.org>| |1|Nirmal Almara <yo@mysticmode.org>|
|1|Nisar Hassan Naqvi <syednisarhassan12@gmail.com>| |1|Nisar Hassan Naqvi <syednisarhassan12@gmail.com>|
@ -743,6 +772,7 @@
|1|Owen Young <theowenyoung@gmail.com>| |1|Owen Young <theowenyoung@gmail.com>|
|1|PMK <webmaster@pmklaassen.com>| |1|PMK <webmaster@pmklaassen.com>|
|1|Paolo Pustorino <stickgrinder@gmail.com>| |1|Paolo Pustorino <stickgrinder@gmail.com>|
|1|Pasha Finkelshteyn <pavel.finkelshtein@gmail.com>|
|1|Pau Kiat Wee <paukiatwee@gmail.com>| |1|Pau Kiat Wee <paukiatwee@gmail.com>|
|1|Paul <paul@rosanbo.com>| |1|Paul <paul@rosanbo.com>|
|1|Paul Götzinger <paul70079@gmail.com>| |1|Paul Götzinger <paul70079@gmail.com>|
@ -767,9 +797,11 @@
|1|Pouria Ezzati <ezzati.upt@gmail.com>| |1|Pouria Ezzati <ezzati.upt@gmail.com>|
|1|Prahalad Belavadi <prahaladbelavadi@gmail.com>| |1|Prahalad Belavadi <prahaladbelavadi@gmail.com>|
|1|Pranav Raj S <pranav@chatwoot.com>| |1|Pranav Raj S <pranav@chatwoot.com>|
|1|Qb <github@qbit.moe>|
|1|Quentin de Quelen <quentin@meilisearch.com>| |1|Quentin de Quelen <quentin@meilisearch.com>|
|1|R. Miles McCain <milesmcc@users.noreply.github.com>| |1|R. Miles McCain <milesmcc@users.noreply.github.com>|
|1|Rafael Milewski <Milewski@users.noreply.github.com>| |1|Rafael Milewski <Milewski@users.noreply.github.com>|
|1|Rafał Kukawski <rafal@kukawski.pl>|
|1|Raphael Fetzer <kontakt@fetzer.me>| |1|Raphael Fetzer <kontakt@fetzer.me>|
|1|RblSb <msrblsb@gmail.com>| |1|RblSb <msrblsb@gmail.com>|
|1|Remi Rampin <remirampin@gmail.com>| |1|Remi Rampin <remirampin@gmail.com>|
@ -782,6 +814,7 @@
|1|Roberto Rosario <roberto.rosario.gonzalez@gmail.com>| |1|Roberto Rosario <roberto.rosario.gonzalez@gmail.com>|
|1|Robin Schneider <ypid@riseup.net>| |1|Robin Schneider <ypid@riseup.net>|
|1|Roman Nesterov <me@rhrn.ru>| |1|Roman Nesterov <me@rhrn.ru>|
|1|Ross Parker <rossdotparker@gmail.com>|
|1|Rouven Bauer <robsdedude@gmail.com>| |1|Rouven Bauer <robsdedude@gmail.com>|
|1|RussellAult <RussellAult@users.noreply.github.com>| |1|RussellAult <RussellAult@users.noreply.github.com>|
|1|Ryan Halliday <ry167@ry167.com>| |1|Ryan Halliday <ry167@ry167.com>|
@ -797,9 +830,11 @@
|1|Scott Humphries <sscotth@users.noreply.github.com>| |1|Scott Humphries <sscotth@users.noreply.github.com>|
|1|Scott Miller <scott.miller.utah@gmail.com>| |1|Scott Miller <scott.miller.utah@gmail.com>|
|1|Sean Begley <begleysm@users.noreply.github.com>| |1|Sean Begley <begleysm@users.noreply.github.com>|
|1|Sebastian <sebastian@silef.de>|
|1|Senan Kelly <senan.f.b.kelly+github@gmail.com>| |1|Senan Kelly <senan.f.b.kelly+github@gmail.com>|
|1|Sergey Bronnikov <sergeyb@bronevichok.ru>| |1|Sergey Bronnikov <sergeyb@bronevichok.ru>|
|1|Sergey Ponomarev <me@sergey-ponomarev.ru>| |1|Sergey Ponomarev <me@sergey-ponomarev.ru>|
|1|Sergey Romanenko <sergey.romanenko@flextype.org>|
|1|Sheldon Rupp <me@shel.io>| |1|Sheldon Rupp <me@shel.io>|
|1|Shikiryu <Chouchen@users.noreply.github.com>| |1|Shikiryu <Chouchen@users.noreply.github.com>|
|1|Shyim <6224096+shyim@users.noreply.github.com>| |1|Shyim <6224096+shyim@users.noreply.github.com>|
@ -810,10 +845,14 @@
|1|Simon Hanna <simon.hanna@jesus.de>| |1|Simon Hanna <simon.hanna@jesus.de>|
|1|Simon Ramsay <nexus-uw@users.noreply.github.com>| |1|Simon Ramsay <nexus-uw@users.noreply.github.com>|
|1|Simon Vandevelde <simon.vandevelde@hotmail.com>| |1|Simon Vandevelde <simon.vandevelde@hotmail.com>|
|1|SlidingHorn <slidinghorn@protonmail.com>|
|1|Sourabh Joshi <38150665+sourabh-joshi@users.noreply.github.com>| |1|Sourabh Joshi <38150665+sourabh-joshi@users.noreply.github.com>|
|1|Spencer McIntyre <zeroSteiner@gmail.com>| |1|Spencer McIntyre <zeroSteiner@gmail.com>|
|1|Spencer Muise <spencermuise@gmail.com>| |1|Spencer Muise <spencermuise@gmail.com>|
|1|Spike <19519553+spikecodes@users.noreply.github.com>|
|1|Stan Triepels <1939656+GDay@users.noreply.github.com>|
|1|Starbeamrainbowlabs <sbrl@starbeamrainbowlabs.com>| |1|Starbeamrainbowlabs <sbrl@starbeamrainbowlabs.com>|
|1|Stefan Fernandez <stefan.fernandez@gmail.com>|
|1|Stefan Weil <sw@weilnetz.de>| |1|Stefan Weil <sw@weilnetz.de>|
|1|Stephen Smith <stephen304@gmail.com>| |1|Stephen Smith <stephen304@gmail.com>|
|1|Steve Divskinsy <stevesbrain@users.noreply.github.com>| |1|Steve Divskinsy <stevesbrain@users.noreply.github.com>|
@ -844,6 +883,7 @@
|1|Tom Tamaira <admin@tomtamaira.com>| |1|Tom Tamaira <admin@tomtamaira.com>|
|1|Tomer Shvueli <tomer@shvueli.com>| |1|Tomer Shvueli <tomer@shvueli.com>|
|1|Tommy Ku <tommyku@users.noreply.github.com>| |1|Tommy Ku <tommyku@users.noreply.github.com>|
|1|Totonyus <Totonyus@users.noreply.github.com>|
|1|Travis Carr <tmcarr89@gmail.com>| |1|Travis Carr <tmcarr89@gmail.com>|
|1|Trevor Ford <trvrfrd@users.noreply.github.com>| |1|Trevor Ford <trvrfrd@users.noreply.github.com>|
|1|Uli <github@uli-fahrer.de>| |1|Uli <github@uli-fahrer.de>|
@ -859,6 +899,7 @@
|1|Wonno <Wonno@users.noreply.github.com>| |1|Wonno <Wonno@users.noreply.github.com>|
|1|WordsPerMinute <59267072+WordsPerMinute@users.noreply.github.com>| |1|WordsPerMinute <59267072+WordsPerMinute@users.noreply.github.com>|
|1|Wundark <weavp001@gmail.com>| |1|Wundark <weavp001@gmail.com>|
|1|Yuli <stremovsky@gmail.com>|
|1|Yurii Rashkovskii <yrashk@gmail.com>| |1|Yurii Rashkovskii <yrashk@gmail.com>|
|1|Zoran Pandovski <zoran.pandovski@gmail.com>| |1|Zoran Pandovski <zoran.pandovski@gmail.com>|
|1|aeruower <65504420+aeruower@users.noreply.github.com>| |1|aeruower <65504420+aeruower@users.noreply.github.com>|
@ -868,13 +909,16 @@
|1|benmaynard11 <allowin-217941-github@vhost244.maynardnetworks.com>| |1|benmaynard11 <allowin-217941-github@vhost244.maynardnetworks.com>|
|1|bitcoinshirt <36959754+bitcoinshirt@users.noreply.github.com>| |1|bitcoinshirt <36959754+bitcoinshirt@users.noreply.github.com>|
|1|bitsii <40513121+bitsii@users.noreply.github.com>| |1|bitsii <40513121+bitsii@users.noreply.github.com>|
|1|bram2w <bram2w@users.noreply.github.com>|
|1|bricej13 <bricej13@gmail.com>| |1|bricej13 <bricej13@gmail.com>|
|1|buzz <buzz@users.noreply.github.com>| |1|buzz <buzz@users.noreply.github.com>|
|1|c22 <c22@users.noreply.github.com>| |1|c22 <c22@users.noreply.github.com>|
|1|cbdev <cb@cbcdn.com>| |1|cbdev <cb@cbcdn.com>|
|1|cinwell.li <cinwell.li@gmail.com>|
|1|clach04 <clach04@gmail.com>| |1|clach04 <clach04@gmail.com>|
|1|costpermille <costpermille@users.noreply.github.com>| |1|costpermille <costpermille@users.noreply.github.com>|
|1|cpdev <cpdevelops@users.noreply.github.com>| |1|cpdev <cpdevelops@users.noreply.github.com>|
|1|cranberry <georg@lysergic.dev>|
|1|darkdragon-001 <darkdragon-001@users.noreply.github.com>| |1|darkdragon-001 <darkdragon-001@users.noreply.github.com>|
|1|dgtlmoon <leigh@morresi.net>| |1|dgtlmoon <leigh@morresi.net>|
|1|dicedtomato <35403473+diced@users.noreply.github.com>| |1|dicedtomato <35403473+diced@users.noreply.github.com>|
@ -899,7 +943,9 @@
|1|gloriafolaron <55953099+gloriafolaron@users.noreply.github.com>| |1|gloriafolaron <55953099+gloriafolaron@users.noreply.github.com>|
|1|golangci <35628013+golangci@users.noreply.github.com>| |1|golangci <35628013+golangci@users.noreply.github.com>|
|1|ice-92 <ice-92@users.noreply.github.com>| |1|ice-92 <ice-92@users.noreply.github.com>|
|1|ifshee <85419413+ifshee@users.noreply.github.com>|
|1|ilsi <ilsi@users.noreply.github.com>| |1|ilsi <ilsi@users.noreply.github.com>|
|1|inkhey <guenael.muller@algoo.fr>|
|1|itsnotv <itsnotv@users.noreply.github.com>| |1|itsnotv <itsnotv@users.noreply.github.com>|
|1|jake <jake@diesel>| |1|jake <jake@diesel>|
|1|jarek91 <jarek91@users.noreply.github.com>| |1|jarek91 <jarek91@users.noreply.github.com>|
@ -910,6 +956,7 @@
|1|kn0wmad <kn0wmad@protonmail.com>| |1|kn0wmad <kn0wmad@protonmail.com>|
|1|lachlan-00 <lachlan.00@gmail.com>| |1|lachlan-00 <lachlan.00@gmail.com>|
|1|lardbit <45122868+lardbit@users.noreply.github.com>| |1|lardbit <45122868+lardbit@users.noreply.github.com>|
|1|larspontoppidan <36330737+larspontoppidan@users.noreply.github.com>|
|1|lemon24 <damian.adrian24@gmail.com>| |1|lemon24 <damian.adrian24@gmail.com>|
|1|littleguga <littleguga@users.noreply.github.com>| |1|littleguga <littleguga@users.noreply.github.com>|
|1|londonatil <65257173+londonatil@users.noreply.github.com>| |1|londonatil <65257173+londonatil@users.noreply.github.com>|
@ -924,11 +971,14 @@
|1|mundurragacl <mundurragacl@gmail.com>| |1|mundurragacl <mundurragacl@gmail.com>|
|1|mxroute <37432698+mxroute@users.noreply.github.com>| |1|mxroute <37432698+mxroute@users.noreply.github.com>|
|1|n2i <xuansamdinh.n2i@gmail.com>| |1|n2i <xuansamdinh.n2i@gmail.com>|
|1|nicod_ <nicod@lerebooteux.fr>|
|1|niedev <luca.martino181@gmail.com>| |1|niedev <luca.martino181@gmail.com>|
|1|nodomain <ff@nodomain.cc>| |1|nodomain <ff@nodomain.cc>|
|1|norstbox <norstbox@users.noreply.github.com>| |1|norstbox <norstbox@users.noreply.github.com>|
|1|nwerker <45071484+nwerker@users.noreply.github.com>| |1|nwerker <45071484+nwerker@users.noreply.github.com>|
|1|orhun <orhun@archlinux.org>|
|1|pastapojken <pastapojken@users.noreply.github.com>| |1|pastapojken <pastapojken@users.noreply.github.com>|
|1|pawelmalak <pawel999@icloud.com>|
|1|philipp-r || 333 <philipp-r@users.noreply.github.com>| |1|philipp-r || 333 <philipp-r@users.noreply.github.com>|
|1|phobot <piter90@gmail.com>| |1|phobot <piter90@gmail.com>|
|1|pips <pips@e5150.fr>| |1|pips <pips@e5150.fr>|
@ -936,6 +986,7 @@
|1|poVoq <wm_jkm@yahoo.com>| |1|poVoq <wm_jkm@yahoo.com>|
|1|railscard <railscard@gmail.com>| |1|railscard <railscard@gmail.com>|
|1|raman325 <7243222+raman325@users.noreply.github.com>| |1|raman325 <7243222+raman325@users.noreply.github.com>|
|1|ran88dom99 <rain8dome9@gmail.com>|
|1|reddec <owner@reddec.net>| |1|reddec <owner@reddec.net>|
|1|sc0repi0 <sc0repi0@gmx.de>| |1|sc0repi0 <sc0repi0@gmx.de>|
|1|skarphet <skarphet@users.noreply.github.com>| |1|skarphet <skarphet@users.noreply.github.com>|

1297
README.md

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@
## Analytics ## Analytics
- [66Analytics](https://66analytics.com/) `⊘ Proprietary` - 66Analytics is a self-hosted, friendly, all-in-one web analytics tool. Lightweight tracking, session replays, heatmaps, user journeys & more. Can be used for personal reasons & can be white labeled to start a SAAS. ([Demo](https://66analytics.com/demo)) `PHP/MySQL`
- [userTrack](https://www.usertrack.net/) `⊘ Proprietary` - userTrack is a web analytics platform with heatmaps, session recordings and powerful user segmentation feature. Updated very regularly. ([Demo](https://dashboard.usertrack.net/server/demoLogin.php)) `PHP/MySQL/ReactJS` - [userTrack](https://www.usertrack.net/) `⊘ Proprietary` - userTrack is a web analytics platform with heatmaps, session recordings and powerful user segmentation feature. Updated very regularly. ([Demo](https://dashboard.usertrack.net/server/demoLogin.php)) `PHP/MySQL/ReactJS`
- [UXLens](https://uxlens.com/) `⊘ Proprietary` - UXLens is a website visitor recording software meant for identifying UI issues and fix them to improve user experience. Formerly known as SessionRecord ([Demo](https://console.uxlens.com/test)) `Docker Nodejs` - [UXLens](https://uxlens.com/) `⊘ Proprietary` - UXLens is a website visitor recording software meant for identifying UI issues and fix them to improve user experience. Formerly known as SessionRecord ([Demo](https://console.uxlens.com/test)) `Docker Nodejs`

View File

@ -7,10 +7,12 @@ Requirements:
- A personal access token (https://github.com/settings/tokens) - A personal access token (https://github.com/settings/tokens)
Usage: Usage:
- Github graphql API calls are limited to 5000 points/hour https://docs.github.com/en/graphql/overview/resource-limitations - Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would
cause the script to abort
- Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting
- Put the token in your environment variables: - Put the token in your environment variables:
export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4 export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4
- The output is sorted oldest to newest - The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there
- Put the script in your crontab or run it from time to time. It doesn't make sense to add this - Put the script in your crontab or run it from time to time. It doesn't make sense to add this
script to the CI job that runs every time something is pushed. script to the CI job that runs every time something is pushed.
- To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at - To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at
@ -18,15 +20,11 @@ Usage:
""" """
import math from github import Github
import sys import sys
import time
import re import re
import os import os
import logging
import requests
from requests.adapters import HTTPAdapter
from requests.exceptions import ConnectionError
from datetime import *
__author__ = "nodiscc" __author__ = "nodiscc"
__copyright__ = "Copyright 2019, nodiscc" __copyright__ = "Copyright 2019, nodiscc"
@ -38,172 +36,25 @@ __email__ = "nodiscc@gmail.com"
__status__ = "Production" __status__ = "Production"
############################################################################### ###############################################################################
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
access_token = os.environ['GITHUB_TOKEN']
""" find all URLs of the form https://github.com/owner/repo """ """ find all URLs of the form https://github.com/owner/repo """
def parse_github_projects(): with open('README.md', 'r') as readme:
with open(sys.argv[1], 'r') as readme:
logging.info('Testing ' + sys.argv[1])
data = readme.read() data = readme.read()
project_urls = re.findall('https://github\.com/([a-zA-Z\d\-\._]{1,39}/[a-zA-Z\d\-\._]{1,39})(?=\)|/|#\s)', data) project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data)
urls = sorted(set(project_urls))
""" Uncomment this to debug the list of matched URLs """ """ Uncomment this to debug the list of matched URLs """
# print(str(project_urls)) # print(str(urls))
# print(len(project_urls))
# with open('links.txt', 'w') as filehandle:
# for l in project_urls:
# filehandle.write('%s\n' % l)
# exit(0) # exit(0)
sorted_urls = sorted(set(project_urls))
logging.info('Checking ' + str(len(sorted_urls)) + ' github repos.')
return sorted_urls
""" login to github API """
g = Github(access_token)
""" function to query Github graphql API """ """ load project metadata, output last commit date and URL """
def query_github_api(query): for url in urls:
access_token = os.environ['GITHUB_TOKEN'] project = re.sub('https://github.com/', '', url)
headers = {"Authorization": "Bearer " + access_token} repo = g.get_repo(project)
github_adapter = HTTPAdapter(max_retries=7) print(str(repo.pushed_at) + ' https://github.com/' + project)
session = requests.Session()
session.mount('https:api.github.com/graphql', github_adapter)
try:
response = session.post('https://api.github.com/graphql', timeout=(10) , json={'query': query}, headers=headers)
response.raise_for_status()
#logging.debug(response.json())
return response.json()
except requests.exceptions.HTTPError as errh:
logging.error("An Http Error occurred:" + repr(errh))
return {'errors': [{'type': 'HTTP Error'}]}
except requests.exceptions.ConnectionError as errc:
logging.error("An Error Connecting to the API occurred:" + repr(errc))
return {"errors": [ { "type": "Connect Error"}]}
except requests.exceptions.Timeout as errt:
logging.error("A Timeout Error occurred:" + repr(errt))
return {"errors": [ { "type": "Timeout Error"}]}
except requests.exceptions.RequestException as err:
logging.error("An Unknown Error occurred" + repr(err))
return {"errors": [ { "type": "Request Exception"}]}
""" function to add commas for prettier output"""
def add_comma(s):
if s != '':
s = ', ' + s
return s
else:
return s
""" function to check remaining rate limit """
def check_github_remaining_limit(urls, project_per_call):
query = '''
query{
viewer {
login
}
rateLimit {
cost
remaining
resetAt
}
}'''
logging.info("Checking github api remaining rate limit.")
result = query_github_api(query)
if 'errors' in result:
logging.error(result["errors"][0]["type"] + ", " + result["errors"][0]["message"])
with open('github_commit_dates.md', 'w') as filehandle:
filehandle.write('%s\n' % '--------------------\n### Github commit date checks')
filehandle.write(result["errors"][0]["type"] + ", " + result["errors"][0]["message"])
else:
if result["data"]["rateLimit"]["remaining"] < len(urls):
logging.error('Github api calls remaining is insufficient, exiting.')
logging.error('URLS: ' + str(len(urls)) + ', api calls remaining: ' + str(result["data"]["rateLimit"]["remaining"]) + ', Resets at: ' + str(result["data"]["rateLimit"]["resetAt"]))
with open('github_commit_dates.md', 'w') as filehandle:
filehandle.write('%s\n' % '--------------------\n### Github commit date checks')
filehandle.write('Github api calls remaining is insufficient, exiting.\n')
filehandle.write('URLS: ' + str(len(urls)) + str(math.ceil(len(urls) / project_per_call)) + ', Github API cost: ' + ', api calls remaining: ' + str(result["data"]["rateLimit"]["remaining"]) + ', Resets at: ' + str(result["data"]["rateLimit"]["resetAt"]) + '\n')
sys.exit(1)
def parse_api_output(github_graphql_data, url_store):
output = []
if "errors" in github_graphql_data:
for e in github_graphql_data["errors"]:
print(e)
logging.info('https://github.com/'+ url_store[e["path"][0]] + ", " + e["type"])
output.append([date(1900, 1, 1),'https://github.com/'+ url_store[e["path"][0]], e["type"]])
if "data" in github_graphql_data:
for g, v in github_graphql_data["data"].items():
if github_graphql_data["data"][g] == None:
continue
elif g == 'rateLimit':
logging.info('Remaining Ratelimit: ' + str(github_graphql_data["data"][g]["remaining"]) + ' Cost: ' + str(github_graphql_data["data"][g]["cost"]))
else:
has_issue = False
note = ''
if github_graphql_data["data"][g]["isArchived"] == True:
has_issue = True
note = 'Archived'
if github_graphql_data["data"][g]["isDisabled"] == True:
if note == '':
has_issue = True
note = 'Disabled'
else:
note = note + ', Disabled'
if github_graphql_data["data"][g]["nameWithOwner"] != url_store[g]:
if note == '':
has_issue = True
note = 'Moved to https://github.com/'+ github_graphql_data["data"][g]["nameWithOwner"]
else:
note = note + ', Moved to https://github.com/'+ github_graphql_data["data"][g]["nameWithOwner"]
project_pushed_at = datetime.strptime(github_graphql_data["data"][g]["pushedAt"], '%Y-%m-%dT%H:%M:%SZ').date()
if project_pushed_at < (date.today() - timedelta(days = 365)):
has_issue = True
if has_issue:
output.append([project_pushed_at, 'https://github.com/'+url_store[g], note])
logging.info(str(project_pushed_at)+' | https://github.com/'+url_store[g]+' | '+note)
return output
def github_api_alias(url):
replace = ["-", "/", "."]
for s in replace:
url = url.replace(s, "_")
return "_" + url
def build_query(urls, project_per_call):
i = 0
output = []
query_param = '{pushedAt updatedAt isArchived isDisabled nameWithOwner}'
url_store = {}
while (i < len(urls)):
query_repo_count = 0
query = "query{rateLimit{cost remaining resetAt}"
while (query_repo_count < project_per_call and i < len(urls)):
key = github_api_alias(urls[i])
url_store[key] = urls[i]
split = urls[i].split("/")
query += key + ':' + 'repository(owner:"' + split[0] + '" name:"' + split[1] + '")' + query_param
query_repo_count += 1
i += 1
query += "}"
output.extend(parse_api_output(query_github_api(query), url_store))
logging.debug('Total: ' + str(len(urls)) + ' Checked: ' + str(len(url_store)))
return output
def main():
project_per_call = 100
urls = parse_github_projects()
check_github_remaining_limit(urls, project_per_call)
output = build_query(urls, project_per_call)
if len(output) > 0:
sorted_list = sorted(output, key=lambda x: x[0])
with open('github_commit_dates.md', 'w') as filehandle:
filehandle.write('%s\n' % '--------------------\n### Github commit date checks')
filehandle.write('%s\n' % '#### There were %s repos with issues.' % str(len(output)))
for l in sorted_list:
filehandle.write('* [ ] %s, %s%s \n' % (str(l[0]), l[1], add_comma(l[2])))
sys.exit(1)
else:
with open('github_commit_dates.md', 'w') as filehandle:
filehandle.write('%s\n' % '--------------------\n### Github commit date checks')
filehandle.write('%s\n' % '#### There were no repos with issues.')
exit(0)
main()

View File

@ -1 +0,0 @@
flaskbb.org,nitter.net,airsonic.github.io/docs/apps

View File

@ -8,7 +8,6 @@ let licenses = new Set();
let pr = false; let pr = false;
let readme; let readme;
let diff; let diff;
let mdOutput = [];
//Parse the command options and set the pr var //Parse the command options and set the pr var
function parseArgs(args) { function parseArgs(args) {
@ -43,11 +42,10 @@ function split(text) {
// All entries should match this pattern. If matches pattern returns true. // All entries should match this pattern. If matches pattern returns true.
function findPattern(text) { function findPattern(text) {
const patt = /^\s{0,2}-\s\[.*?\]\(.*?\) (`⚠` )?- .{0,249}?\.( \(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))? \`.*?\` \`.*?\`$/m; const patt = /^\s{0,2}-\s\[.*?\]\(.*?\) (`⚠` )?- .{0,249}?\.( \(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))? \`.*?\` \`.*?\`$/;
if (patt.test(text) === true) { if (patt.test(text) === true) {
return true; return true;
} }
console.log("Failed: "+text)
return false; return false;
} }
@ -63,9 +61,9 @@ function testMainLink(text) {
const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/; const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/;
if (!testA.test(text)) { if (!testA.test(text)) {
let a1 = testA1.exec(text)[2]; let a1 = testA1.exec(text)[2];
return [chalk.red(text.replace(a1, '')), '🢂' + text.replace(a1, '') + '🢀'] return chalk.red(text.replace(a1, ''))
} }
return [chalk.green(testA.exec(text)[1]), testA.exec(text)[1]] return chalk.green(testA.exec(text)[1])
} }
//Test '`⚠` - Short description, less than 250 characters.' //Test '`⚠` - Short description, less than 250 characters.'
@ -76,9 +74,9 @@ function testDescription(text) {
if (!testB.test(text)) { if (!testB.test(text)) {
let b1 = testA1.exec(text)[1]; let b1 = testA1.exec(text)[1];
let b2 = testB2.exec(text)[1]; let b2 = testB2.exec(text)[1];
return [chalk.red(text.replace(b1, '').replace(b2, '')), '🢂' + text.replace(b1, '').replace(b2, '') + '🢀' ] return chalk.red(text.replace(b1, '').replace(b2, ''))
} }
return [chalk.green(testB.exec(text)[1]), testB.exec(text)[1]] return chalk.green(testB.exec(text)[1])
} }
//If present, tests '([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps))' //If present, tests '([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps))'
@ -86,13 +84,13 @@ function testSrcDemCli(text) {
let testC = text.search(/\.\ \(|\.\ \[|\ \(\[[sSdDcC]/); // /\(\[|\)\,|\)\)/); let testC = text.search(/\.\ \(|\.\ \[|\ \(\[[sSdDcC]/); // /\(\[|\)\,|\)\)/);
let testD = /(?<=\w. )(\(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))(?= \`?)/; let testD = /(?<=\w. )(\(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))(?= \`?)/;
const testD1 = /(^- \W[a-zA-Z0-9-_ .]*\W{0,2}http[^\[]*)(?<= )/; const testD1 = /(^- \W[a-zA-Z0-9-_ .]*\W{0,2}http[^\[]*)(?<= )/;
const testD2 = /\ ?(\`.*\` \`.*\`$)/; const testD2 = /(\`.*\` \`.*\`$)/;
if ((testC > -1) && (!testD.test(text))) { if ((testC > -1) && (!testD.test(text))) {
let d1 = testD1.exec(text)[1]; let d1 = testD1.exec(text)[1];
let d2 = testD2.exec(text)[1]; let d2 = testD2.exec(text)[1];
return [chalk.red(text.replace(d1, '').replace(d2, '')), '🢂' + text.replace(d1, '').replace(d2, '') + '🢀'] return chalk.red(text.replace(d1, '').replace(d2, ''))
} else if (testC > -1) { } else if (testC > -1) {
return [chalk.green(testD.exec(text)[1]), testD.exec(text)[1]] return chalk.green(testD.exec(text)[1])
} }
return "" return ""
} }
@ -104,18 +102,19 @@ function testLangLic(text) {
const testE1 = /(^[^`]*)/; const testE1 = /(^[^`]*)/;
if (!testE) { if (!testE) {
let e1 = testE1.exec(text)[1]; let e1 = testE1.exec(text)[1];
return [chalk.red(text.replace(e1, '')), '🢂' + text.replace(e1, '') + '🢀'] return chalk.red(text.replace(e1, ''))
} }
return [chalk.green(testD2.exec(text)[1]), + testD2.exec(text)[1]] return chalk.green(testD2.exec(text)[1])
} }
//Runs all the syntax tests... //Runs all the syntax tests...
function findError(text) { function findError(text) {
resMainLink = testMainLink(text) let res
resDesc= testDescription(text) res = testMainLink(text)
resSrcDemCli= testSrcDemCli(text) res += testDescription(text)
resLangLic= testLangLic(text) res += testSrcDemCli(text)
return [resMainLink[0] + resDesc[0] + resSrcDemCli[0] + resLangLic[0] + `\n`, '```' + resMainLink[1] + resDesc[1] + resSrcDemCli[1] + resLangLic[1] + '```'] res += testLangLic(text)
return res + `\n`
} }
//Check if license is in the list of licenses. //Check if license is in the list of licenses.
@ -123,7 +122,7 @@ function testLicense(md) {
let pass = true; let pass = true;
let lFailed = [] let lFailed = []
let lPassed = [] let lPassed = []
const regex = /.*?\`([a-zA-Z0-9\-\./]*)\`.+$/; const regex = /.*\`(.*)\` .*$/;
try { try {
for (l of regex.exec(md)[1].split("/")) { for (l of regex.exec(md)[1].split("/")) {
if (!licenses.has(l)) { if (!licenses.has(l)) {
@ -137,6 +136,11 @@ function testLicense(md) {
console.log(chalk.yellow("Error in License syntax, license not checked against list.")) console.log(chalk.yellow("Error in License syntax, license not checked against list."))
return [false, "", ""] return [false, "", ""]
} }
return [pass, lFailed, lPassed] return [pass, lFailed, lPassed]
} }
@ -191,15 +195,14 @@ function entryErrorCheck() {
e.pass = true e.pass = true
e.name = parseName(e.raw) e.name = parseName(e.raw)
if (!findPattern(e.raw)) { if (!findPattern(e.raw)) {
errorRes = findError(e.raw); e.highlight = findError(e.raw);
e.highlight = errorRes[0];
e.pass = false; e.pass = false;
console.log(e.highlight) console.log(e.highlight)
} }
e.licenseTest = testLicense(e.raw); e.licenseTest = testLicense(e.raw);
if (!e.licenseTest) { if (!e.licenseTest) {
e.pass = false; e.pass = false;
console.log(chalk.red(`${e.name}'s license is not on the License list.`)) console.log(chalk.red(`${e.name}'s license is not on License list.`))
} }
if (e.pass) { if (e.pass) {
totalPass++ totalPass++
@ -207,7 +210,6 @@ function entryErrorCheck() {
totalFail++ totalFail++
} }
} }
} else { } else {
console.log(chalk.cyan("Testing entire README.md\n")) console.log(chalk.cyan("Testing entire README.md\n"))
total = entries.length total = entries.length
@ -215,9 +217,7 @@ function entryErrorCheck() {
e.pass = true e.pass = true
e.name = parseName(e.raw) e.name = parseName(e.raw)
if (!findPattern(e.raw)) { if (!findPattern(e.raw)) {
errorRes = findError(e.raw); e.highlight = findError(e.raw);
e.highlight = errorRes[0];
mdOutput.push("* [ ] Line: " + e.line + ": " + e.name + "\n" + errorRes[1]);
e.pass = false; e.pass = false;
console.log(`${chalk.yellow(e.line + ": ")}${e.highlight}`); console.log(`${chalk.yellow(e.line + ": ")}${e.highlight}`);
syntax = e.highlight; syntax = e.highlight;
@ -226,7 +226,6 @@ function entryErrorCheck() {
if (!e.licenseTest[0]) { if (!e.licenseTest[0]) {
e.pass = false; e.pass = false;
console.log(chalk.yellow(e.line + ": ") + `${e.name}'s license ${chalk.red(`'${e.licenseTest[1]}'`)} is not on the License list.\n`) console.log(chalk.yellow(e.line + ": ") + `${e.name}'s license ${chalk.red(`'${e.licenseTest[1]}'`)} is not on the License list.\n`)
mdOutput.push("* [ ] Line: " + e.line + "\n" + e.name + "'s license is not on the License list.")
} }
if (e.pass) { if (e.pass) {
totalPass++ totalPass++
@ -239,10 +238,6 @@ function entryErrorCheck() {
console.log(chalk.blue(`\n-----------------------------\n`)) console.log(chalk.blue(`\n-----------------------------\n`))
console.log(chalk.red(`${totalFail} Failed, `) + chalk.green(`${totalPass} Passed, `) + chalk.blue(`of ${total}`)) console.log(chalk.red(`${totalFail} Failed, `) + chalk.green(`${totalPass} Passed, `) + chalk.blue(`of ${total}`))
console.log(chalk.blue(`\n-----------------------------\n`)) console.log(chalk.blue(`\n-----------------------------\n`))
fs.writeFileSync('syntax_check.md', `--------------------\n### Syntax Checks\n#### ${totalFail} Failed, ${totalPass} Passed, of ${total}.\n`)
mdOutput.forEach(element => {
fs.appendFileSync('syntax_check.md', `${element}\n`)
});
process.exit(1); process.exit(1);
} else { } else {
console.log(chalk.blue(`\n-----------------------------\n`)) console.log(chalk.blue(`\n-----------------------------\n`))