mirror of
https://github.com/awesome-selfhosted/awesome-selfhosted.git
synced 2024-11-29 18:36:53 +01:00
commit
a689c78795
10
.github/.mailmap
vendored
Normal file
10
.github/.mailmap
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Kickball <ed.kickball@hotmail.com> <ed.kickball@hotmail.com>
|
||||
Andrew Rylatt <AndyR207@users.noreply.github.com> <AndyR207@users.noreply.github.com> <arylatt@users.noreply.github.com>
|
||||
n8225 <n8225@users.noreply.github.com> <nrew225@gmail.com>
|
||||
Thomas Dalichow <info@thomasdalichow.de> <2012-02-05.github.com@thomasdalichow.de>
|
||||
Andrew Rylatt <AndyR207@users.noreply.github.com> <andrew@rylatt.me>
|
||||
Keith Thibodeaux <kthibodeaux@peachtreebilling.com> Keith Thibodeaux <kthib89+github@gmail.com>
|
||||
Madhu GB <github@madhugb.com> Madhu GB <me@madhugb.com>
|
||||
Miguel Piedrafita <github@miguelpiedrafita.com> <git@miguelpiedrafita.com>
|
||||
Pavel Lobashov <ShockwaveNN@gmail.com> Pavel Lobashov <shockwavenn@gmail.com>
|
||||
Stefan Bohacek <stefan.bohacek@gmail.com> Stefan Bohacek <stefan@fourtonfish.com>
|
13
.github/CONTRIBUTING.md
vendored
Normal file
13
.github/CONTRIBUTING.md
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
## Contributing
|
||||
|
||||
Please join us on [chat](https://chat.awesome-selfhosted.com) to clarify any questions.
|
||||
|
||||
* The **syntax** for links is ``[Name](http://homepage/) - Short description. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code)) `License` `Language` ``. All projects should have their **license** and main server-side **language**/platform/requirement listed, and a description at most 250 characters long.
|
||||
* To **add an entry**: clone/[download](https://github.com/Kickball/awesome-selfhosted/archive/master.zip) and enter the repository, run `make add` and follow the instructions; or [edit the README.md file](https://github.com/Kickball/awesome-selfhosted/edit/master/README.md) directly. See [Editing files in another user's repository](https://help.github.com/articles/editing-files-in-another-user-s-repository/), [Creating Pull Requests](https://help.github.com/articles/creating-a-pull-request/), [Using Pull Requests](https://help.github.com/articles/using-pull-requests/) for help on sending your patch.
|
||||
* A minimum of 3 entries are required to start a new category, otherwise add to the Misc/Other category.
|
||||
* Entries should be ordered alphabetically.
|
||||
* Non-[Free](https://en.wikipedia.org/wiki/Free_software) software must be marked `⊘ Proprietary` next to the title, and added to [non-free.md](non-free.md).
|
||||
* The `⚠` character must be inserted for software that relies on a third party service the user does not control, e.g ``[Name](http://homepage/) `⚠` - Short description...``.
|
||||
* Check current [issues](https://github.com/Kickball/awesome-selfhosted/issues) and [Pull Requests](https://github.com/Kickball/awesome-selfhosted/pulls), as well as [closed issues/PRs](https://github.com/Kickball/awesome-selfhosted/pulls?utf8=%E2%9C%93&q=is%3Aclosed+).
|
||||
* The list of contributors can be updated with `make contrib`. Several checks are available: `make noexternallink; make missinglicenselanguage; make nofullstop`
|
||||
* Software with no development activity for 6-12 months may be removed from the list.
|
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
14
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
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:
|
||||
|
||||
- [ ] Your submissions are formatted according to the guidelines.
|
||||
|
||||
``[Name](http://homepage/) - Short description. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code)) `License` `Language` ``
|
||||
|
||||
- [ ] Your additions are ordered alphabetically.
|
||||
- [ ] Your additions are [Free software](https://en.wikipedia.org/wiki/Free_software), or if not they have been added to [non-free](non-free.md).
|
||||
- [ ] Your additions are not already listed at [awesome-sysadmin](https://github.com/n1trux/awesome-sysadmin) (IT infrastructure management), [staticgen.com](https://www.staticgen.com/) or [staticsitegenerators.net](https://staticsitegenerators.net/) (static site generators).
|
||||
- [ ] Any licenses you have added are in our [list of licenses](https://github.com/Kickball/awesome-selfhosted/blob/master/README.md#list-of-licenses).
|
||||
- [ ] You have searched the repository for any relevant issues or PRs.
|
||||
- [ ] Any category you are creating has the minimum requirement of 3 items.
|
1
.github/join-chat.svg
vendored
Normal file
1
.github/join-chat.svg
vendored
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="148" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="a"><rect width="148" height="20" rx="3" fill="#fff"/></mask><g mask="url(#a)"><path fill="#555" d="M0 0h77v20H0z"/><path fill="#4c1" d="M77 0h71v20H77z"/><path fill="url(#b)" d="M0 0h148v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="38.5" y="15" fill="#010101" fill-opacity=".3">Rocket.Chat</text><text x="38.5" y="14">Rocket.Chat</text><text x="111.5" y="15" fill="#010101" fill-opacity=".3">JOIN CHAT</text><text x="111.5" y="14">JOIN CHAT</text></g></svg>
|
After Width: | Height: | Size: 757 B |
20
.travis.yml
Normal file
20
.travis.yml
Normal file
@ -0,0 +1,20 @@
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- "node"
|
||||
|
||||
before_install:
|
||||
- rvm install 2.2
|
||||
- gem install awesome_bot
|
||||
- gem install danger
|
||||
|
||||
before_script:
|
||||
|
||||
script:
|
||||
- git diff master.. -U0 README.md | grep -Pos "(?<=^\+).*" >> temp.md || (exit 0)
|
||||
- node test.js temp.md
|
||||
- awesome_bot temp.md --allow-redirect || (exit 0)
|
||||
- danger --verbose
|
||||
|
||||
notifications:
|
||||
email: false
|
363
AUTHORS.md
Normal file
363
AUTHORS.md
Normal file
@ -0,0 +1,363 @@
|
||||
Commits | Author
|
||||
:---: | ---
|
||||
435 nodiscc <nodiscc@gmail.com>
|
||||
291 Kickball <ed.kickball@hotmail.com>
|
||||
163 n8225 <n8225@users.noreply.github.com>
|
||||
114 Andrew Rylatt <AndyR207@users.noreply.github.com>
|
||||
35 Kovah <mail@kovah.de>
|
||||
17 Thomas Dalichow <info@thomasdalichow.de>
|
||||
14 Miguel Piedrafita <github@miguelpiedrafita.com>
|
||||
13 jungle-boogie <sean@jungleboogie.me>
|
||||
12 Alex <alex@maximum.guru>
|
||||
12 Pe46dro <pietro@marangon.me>
|
||||
10 cave beat <cave@cavebeat.org>
|
||||
9 Joubert RedRat <eu+github@redrat.com.br>
|
||||
8 CooperBarrett <anthony.lhuissier@openmailbox.org>
|
||||
7 édouard u. <mail@edouard.us>
|
||||
7 phre4k <me@phre4k.at>
|
||||
7 Ilian <ugg.rock@gmail.com>
|
||||
7 Andrew Peng <pengc99@gmail.com>
|
||||
7 DJCrashdummy <DJCrashdummy@users.noreply.github.com>
|
||||
7 Hammy Havoc <hammy@splitanatom.com>
|
||||
7 Andrew Rylatt <arylatt@users.noreply.github.com>
|
||||
7 n1trux <n1trux@users.noreply.github.com>
|
||||
6 cave <cavebeat@users.noreply.github.com>
|
||||
6 Per Guth <mail@perguth.de>
|
||||
6 Touhid Arastu <touhid.arastu@gmail.com>
|
||||
5 Max Maischein <github@corion.net>
|
||||
5 Jean Champémont <jchampemont@users.noreply.github.com>
|
||||
5 Philip Kirkbride <kirkins@gmail.com>
|
||||
5 Moti Korets <moti.kor@gmail.com>
|
||||
5 Mohammad Faisal <faisalhmohd@live.com>
|
||||
4 Rodolfo Berrios <inbox@rodolfoberrios.com>
|
||||
4 Eliot Whalan <ewhal@pantsu.cat>
|
||||
4 Joshua Westerheide <dev@jdoubleu.de>
|
||||
4 Johannes Zellner <johannes@nebulon.de>
|
||||
4 Joery Zegers <accounts@jzegers.nl>
|
||||
4 Jean Elchinger <jinformatique@riseup.net>
|
||||
4 Jan Vlnas <jnv@users.noreply.github.com>
|
||||
4 Ilya Sevostyanov <d3th@zeen.ru>
|
||||
4 AndrewCz <smacz42@users.noreply.github.com>
|
||||
4 dyu <david.yu.ftw@gmail.com>
|
||||
4 dpfaffenbauer <dominik@lineofcode.at>
|
||||
4 dattaz <taz@dattaz.fr>
|
||||
4 Valmik <mail@valmik.in>
|
||||
4 Alexandr Emelin <frvzmb@gmail.com>
|
||||
4 Chris McCormick <chris@mccormick.cx>
|
||||
4 Cory Gibbons <hello@corygibbons.com>
|
||||
4 /c² <cagataycali@icloud.com>
|
||||
4 D <DL88250@gmail.com>
|
||||
4 paddo <mail@patrickrichter.net>
|
||||
4 Marius Voila <marius.voila@gmail.com>
|
||||
4 MK <kohenkatz@gmail.com>
|
||||
4 Dominik Pfaffenbauer <dominik@lineofcode.at>
|
||||
4 Dr. Azrael Tod <github.com@g33ky.de>
|
||||
3 Yann Forget <forget.yann31@gmail.com>
|
||||
3 Pavan Yara <yarapavan@gmail.com>
|
||||
3 Ovidiu Dan <zmarty@users.noreply.github.com>
|
||||
3 rett gerst <rettgerst@users.noreply.github.com>
|
||||
3 Conor O'Callaghan <brioscaibriste@users.noreply.github.com>
|
||||
3 jungle-boogie <sean@rastasean.net>
|
||||
3 IrosTheBeggar <paul.sori@gmail.com>
|
||||
3 Leo Gaggl <leo@brightcookie.com.au>
|
||||
3 Morris Jobke <hey@morrisjobke.de>
|
||||
3 Görkem Çetin <gc@count.ly>
|
||||
3 Cédric Krier <cedk@users.noreply.github.com>
|
||||
3 Ethan Lowman <ethanal@users.noreply.github.com>
|
||||
3 George C. Privon <privong@users.noreply.github.com>
|
||||
3 Garrett Martin <me@garrettqmartin.com>
|
||||
3 Gabin <hello@gabinaureche.com>
|
||||
3 Danja Vasiliev <danja@k0a1a.net>
|
||||
3 Mathieu Leplatre <mathieu@leplat.re>
|
||||
3 Lee Watson <rev@revthefox.co.uk>
|
||||
3 Martin Gontovnikas <martin@gon.to>
|
||||
3 FoxMaSk <foxmask@users.noreply.github.com>
|
||||
3 Mariusz Kozakowski <11mariom+wordpress@gmail.com>
|
||||
3 Kevin Hinterlong <kevinhinterlong@users.noreply.github.com>
|
||||
3 Harvey Kandola <harvey@documize.com>
|
||||
3 Aguay <baraise.valentin@gmail.com>
|
||||
3 Marc Picaud <picaud.marc@gmail.com>
|
||||
3 Burak Emre Kabakcı <emrekabakci@gmail.com>
|
||||
3 Pietro Marangon <pietro.marangon@gmail.com>
|
||||
3 Pierre Tinard <Edraens@users.noreply.github.com>
|
||||
3 Tobi Schäfer <interface@p3k.org>
|
||||
3 Peter Thaleikis <spekulatius@users.noreply.github.com>
|
||||
3 pszlazak <pszlazak@users.noreply.github.com>
|
||||
3 Akhyar Amarullah <akhyrul@gmail.com>
|
||||
3 moba <moba@users.noreply.github.com>
|
||||
3 Ye Lin Aung <me@yelinaung.com>
|
||||
2 王可森 <wangkesen@users.noreply.github.com>
|
||||
2 Adminrezo (Nico Dewaele) <nico@adminrezo.fr>
|
||||
2 Albert Cervera i Areny <albert@nan-tic.com>
|
||||
2 Alexander Ryzhov <gtihub@ryzhov-al.ru>
|
||||
2 Alexis Metaireau <alexis@notmyidea.org>
|
||||
2 Andrei Poenaru <andrei.poenaru@gmail.com>
|
||||
2 Andrew Hayworth <hayworth@meraki.net>
|
||||
2 Arik Fraimovich <arik@arikfr.com>
|
||||
2 Bartłomiej Kurzeja <B3QL@users.noreply.github.com>
|
||||
2 Brendan Abolivier <contact@brendanabolivier.com>
|
||||
2 Brian Morin <bdmorin@gmail.com>
|
||||
2 Charles Farence III <charles@charlessite90.com>
|
||||
2 Chris Missal <chris.missal@gmail.com>
|
||||
2 Costin Moise <necenzurat@gmail.com>
|
||||
2 David Leonard <david@appliedtrust.com>
|
||||
2 David Wayne Baxter <dbxt@users.noreply.github.com>
|
||||
2 Derek Viera <ma.dmviera01@gmail.com>
|
||||
2 Deryck <dhenson02@users.noreply.github.com>
|
||||
2 Dillon Stadther <dlstadther@gmail.com>
|
||||
2 Feleg <fegul@users.noreply.github.com>
|
||||
2 Felix Bartels <felix@host-consultants.de>
|
||||
2 Gabin Aureche <gabin.aureche@live.fr>
|
||||
2 Gabriel Cossette <gabriel.cossette@gmail.com>
|
||||
2 Gonçalo Valério <dethos@users.noreply.github.com>
|
||||
2 Greg V <greg@unrelenting.technology>
|
||||
2 Henry Ruhs <info@redaxmedia.com>
|
||||
2 Jake Breindel <j.breindel2@outlook.com>
|
||||
2 James Cole <JC5@users.noreply.github.com>
|
||||
2 Jan Soendermann <jan.soendermann+git@gmail.com>
|
||||
2 Jason Robinson <mail@jasonrobinson.me>
|
||||
2 Joseph Dykstra <josephdykstra@gmail.com>
|
||||
2 Julien Bisconti <veggiemonk@users.noreply.github.com>
|
||||
2 Jérémie Astori <jeremie@astori.fr>
|
||||
2 Keith Thibodeaux <kthibodeaux@peachtreebilling.com>
|
||||
2 Kevin Lin <developer@kevinlin.info>
|
||||
2 Kevin Vandenborne <kevin.vandenborne@gmail.com>
|
||||
2 Madhu GB <github@madhugb.com>
|
||||
2 Malte Kiefer <malte.kiefer@mailgermania.de>
|
||||
2 Marc Laporte <marc@laporte.name>
|
||||
2 Marien Fressinaud <dev@marienfressinaud.fr>
|
||||
2 Massimo Santini <massimo.santini@gmail.com>
|
||||
2 Matthieu Aubry <matt@piwik.org>
|
||||
2 Michael Tunnell <MichaelTunnell@users.noreply.github.com>
|
||||
2 Mikael Peigney <Mika56@users.noreply.github.com>
|
||||
2 Nicolas Carlier <n.carlier@nunux.org>
|
||||
2 Patrik Ragnarsson <patrik@starkast.net>
|
||||
2 Pavel Lobashov <ShockwaveNN@gmail.com>
|
||||
2 Peter Demin <poslano@gmail.com>
|
||||
2 Peter Ivanov <peter@microweber.com>
|
||||
2 Pierre Ozoux <pierre@ozoux.net>
|
||||
2 Poorchop <Poorchop@users.noreply.github.com>
|
||||
2 ReadmeCritic <frankensteinbot@gmail.com>
|
||||
2 Ricardo Torres <ricardo@rictorres.com.br>
|
||||
2 Rodolfo Berrios <rodolfo.berrios@gmail.com>
|
||||
2 Roland Geider <roland@geider.net>
|
||||
2 Ryan Mulligan <ryan@ryantm.com>
|
||||
2 Sam Tuke <mail@samtuke.com>
|
||||
2 Sameer Al-Sakran <salsakran@users.noreply.github.com>
|
||||
2 Shane Cooke <shanecooke@mac.com>
|
||||
2 Simon Vieille <simon@deblan.fr>
|
||||
2 Simone Grignola <sito@grignola.ch>
|
||||
2 Stefan Bohacek <stefan.bohacek@gmail.com>
|
||||
2 Stefane Fermigier <sf@fermigier.com>
|
||||
2 Stefano <sabas88@gmail.com>
|
||||
2 Suraj Patil <thewhitetulip@users.noreply.github.com>
|
||||
2 Think <iwhiz@users.noreply.github.com>
|
||||
2 Thomas Citharel <tcit@tcit.fr>
|
||||
2 Tomer <tomer@campuscruizer.com>
|
||||
2 Vadim Rutkovsky <vrutkovs@redhat.com>
|
||||
2 Van-Duyet Le <lvduit08@gmail.com>
|
||||
2 Will Bennett <william.11bennett@gmail.com>
|
||||
2 Yann <forget.yann31@gmail.com>
|
||||
2 Zeniic <Zeniic@users.noreply.github.com>
|
||||
2 cornerot <cornerot@gmail.com>
|
||||
2 cron410 <cron410@gmail.com>
|
||||
2 digiou <digitalbckp@gmail.com>
|
||||
2 erdihu <erdihu@users.noreply.github.com>
|
||||
2 fengshaun <amoradi@fedoraproject.org>
|
||||
2 fuerbringer <severin@protonmail.ch>
|
||||
2 gseva <gavrilovseva@gmail.com>
|
||||
2 hebbet <pascal.herbert@gmail.com>
|
||||
2 icterine <account@caravat.e4ward.com>
|
||||
2 jimykk <JimyKK@users.noreply.github.com>
|
||||
2 markkrj <markkrj@users.noreply.github.com>
|
||||
2 rafael-santiago <voidbrainvoid@gmail.com>
|
||||
2 thomasfrivold <thomas.frivold@gmail.com>
|
||||
2 tillarnold <throwable42@gmail.com>
|
||||
2 tomc3 <wordoftheday003@gmail.com>
|
||||
2 yuche <i@yuche.me>
|
||||
1 florianl <florianl@users.noreply.github.com>
|
||||
1 Marcin Karpezo <m.karpezo@nencki.gov.pl>
|
||||
1 Marco Dickert <dickert.marco@gmail.com>
|
||||
1 Marcus Ramberg <marcus@nordaaker.com>
|
||||
1 foorb <foorb@users.noreply.github.com>
|
||||
1 Denis <isdn@users.noreply.github.com>
|
||||
1 David Yu <david.yu.ftw@gmail.com>
|
||||
1 Mark Ide <mark@cranstonide.com>
|
||||
1 Mark Railton <mark@markrailton.com>
|
||||
1 David Ng <david90@users.noreply.github.com>
|
||||
1 Martin Malinda <malindacz@gmail.com>
|
||||
1 trebonius0 <trebonius@worldofwargraphs.com>
|
||||
1 MatFluor <MatFluor@users.noreply.github.com>
|
||||
1 David Baldwynn <whitef0x0@users.noreply.github.com>
|
||||
1 Matt Hazinski <matt@matthazinski.com>
|
||||
1 Matt Lee <mattl@users.noreply.github.com>
|
||||
1 Matteo Piccina <matteo@beiphone.it>
|
||||
1 ghaseminya <ghaseminya@gmail.com>
|
||||
1 Dan <rocks.in.the.cloud@gmail.com>
|
||||
1 Michael Barrow <michael@barrow.me>
|
||||
1 Michael Burns <michael@mirwin.net>
|
||||
1 ttoups <ich@timotoups.de>
|
||||
1 Michael van Tricht <mvantricht@expandonline.nl>
|
||||
1 Michael van Tricht <swordbeta@users.noreply.github.com>
|
||||
1 Damir Gainetdinov <damir.gaynetdinov@gmail.com>
|
||||
1 uchchishta <uchchishta@users.noreply.github.com>
|
||||
1 Mike Goodwin <xenithorb@users.noreply.github.com>
|
||||
1 Mike Steele <mike@steel.fm>
|
||||
1 MinorTom <TheMinorTom@users.noreply.github.com>
|
||||
1 Cristian Menghi <cristian@menghi.biz>
|
||||
1 Moritz Kröger <write@morkro.de>
|
||||
1 Craig Davison <craig@davison.io>
|
||||
1 Clément AUBIN <caubin@caubin.fr>
|
||||
1 Murdoc Bates <trockenasche@gmail.com>
|
||||
1 vincent-clipet <vincent.clipet.7@gmail.com>
|
||||
1 NicolasCARPi <nicolas.carpi@curie.fr>
|
||||
1 Norman Xu <im@norm.im>
|
||||
1 Nÿco <nicolas.verite@gmail.com>
|
||||
1 Ober7 <k.latif.misc@gmail.com>
|
||||
1 Oliver Kopp <kopp.dev@gmail.com>
|
||||
1 Christophe Hamerling <christophe.hamerling@gmail.com>
|
||||
1 Paolo Pustorino <stickgrinder@gmail.com>
|
||||
1 ilsi <ilsi@users.noreply.github.com>
|
||||
1 Pau Kiat Wee <paukiatwee@gmail.com>
|
||||
1 Paul <paul@rosanbo.com>
|
||||
1 Christoph Wiechert <wio@psitrax.de>
|
||||
1 itsnotv <itsnotv@users.noreply.github.com>
|
||||
1 Paweł Kapała <bylek77@gmail.com>
|
||||
1 Christoph Kappestein <k42b3.x@gmail.com>
|
||||
1 Chema <neo22s@gmail.com>
|
||||
1 jake <jake@diesel>
|
||||
1 wxcafé <wxcafe@wxcafe.net>
|
||||
1 Chanchal Kumar Ghosh <chanchal_ghosh1987@yahoo.co.in>
|
||||
1 Peter van den Hurk <runical1991@gmail.com>
|
||||
1 Carlos Rodriguez <carlos@s8f.org>
|
||||
1 Phill <phill@formbet.co.uk>
|
||||
1 Phonic Mouse <phonicmouse@users.noreply.github.com>
|
||||
1 Pierre Blanes <inattendu@users.noreply.github.com>
|
||||
1 Anton Troyanov <anton@troyanov.net>
|
||||
1 Calle Wolff <carl@wolff.se>
|
||||
1 Caleb Xu <calebcenter@live.com>
|
||||
1 Angel Velasquez <angvp@archlinux.org>
|
||||
1 Rafael Milewski <Milewski@users.noreply.github.com>
|
||||
1 lachlan-00 <lachlan.00@gmail.com>
|
||||
1 Remi Rampin <remirampin@gmail.com>
|
||||
1 Remy Adriaanse <remy@adriaanse.it>
|
||||
1 Remy Honig <remyhonig@users.noreply.github.com>
|
||||
1 littleguga <littleguga@users.noreply.github.com>
|
||||
1 Riddler <Iamjithin@live.com>
|
||||
1 Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
|
||||
1 C.J. Jameson <cjcjameson@gmail.com>
|
||||
1 lsascha <lsascha@gmail.com>
|
||||
1 xuansamdinh <xuansamdinh.n2i@gmail.com>
|
||||
1 Ryan DeShone <rfdeshon@gmail.com>
|
||||
1 Ryan Halliday <ry167@ry167.com>
|
||||
1 memorex258 <phillip.a.brown@live.com>
|
||||
1 Sahin Boydas <sahin@movielala.com>
|
||||
1 Salvatore Gentile <SalGnt@users.noreply.github.com>
|
||||
1 mertinop <martin.santibanez.a@gmail.com>
|
||||
1 Andrew Nesbitt <andrewnez@gmail.com>
|
||||
1 Scott Humphries <sscotth@users.noreply.github.com>
|
||||
1 Sergey Bronnikov <sergeyb@bronevichok.ru>
|
||||
1 Andrew Murray <radarhere@gmail.com>
|
||||
1 Simon Hanna <simon.hanna@jesus.de>
|
||||
1 n2i <xuansamdinh.n2i@gmail.com>
|
||||
1 Andre <andre.lehmann@posteo.de>
|
||||
1 Spencer McIntyre <zeroSteiner@gmail.com>
|
||||
1 Starbeamrainbowlabs <sbrl@starbeamrainbowlabs.com>
|
||||
1 Alys <alice.harris@oldgods.net>
|
||||
1 Stefan Weil <sw@weilnetz.de>
|
||||
1 nodomain <ff@nodomain.cc>
|
||||
1 Alfred Bez <alfred.bez@googlemail.com>
|
||||
1 Steve Divskinsy <stevesbrain@users.noreply.github.com>
|
||||
1 Alexey Strokach <alex.strokach@utoronto.ca>
|
||||
1 Sylvain Boily <sylvainboilydroid@gmail.com>
|
||||
1 THS-on <THS-on@users.noreply.github.com>
|
||||
1 Tanner Collin <git@tannercollin.com>
|
||||
1 The Scorpion <tehscorpion@users.noreply.github.com>
|
||||
1 pips <pips@e5150.fr>
|
||||
1 Alexandr Nesterenko <kuchaspama@gmail.com>
|
||||
1 Burung Hantu <privacytoolsIO@users.noreply.github.com>
|
||||
1 Thorsten Rinne <thorsten@phpmyfaq.de>
|
||||
1 Tim Allingham <tim@timallingham.net>
|
||||
1 Brian <bdmorin@users.noreply.github.com>
|
||||
1 Tobias Zeising <tobias.zeising@aditu.de>
|
||||
1 Alashov Berkeli <yunus.alashow@gmail.com>
|
||||
1 Brett <brettex@hotmail.com>
|
||||
1 Alex Fornuto <alex@fornuto.com>
|
||||
1 Bob Mottram <bob@robotics.uk.to>
|
||||
1 sc0repi0 <sc0repi0@gmx.de>
|
||||
1 Viktor Geringer <devfakeplus@googlemail.com>
|
||||
1 skarphet <skarphet@users.noreply.github.com>
|
||||
1 steven jacobs <stjacobs@fastmail.fm>
|
||||
1 Ben <ben@rngr.org>
|
||||
1 Beard of War <rebelgeek@blainsmith.com>
|
||||
1 stevesbrain <stevesbrain@users.noreply.github.com>
|
||||
1 axeloz <axel@mabox.eu>
|
||||
1 benmaynard11 <allowin-217941-github@vhost244.maynardnetworks.com>
|
||||
1 bricej13 <bricej13@gmail.com>
|
||||
1 Bas <mega@ioexception.at>
|
||||
1 Austin <austi_gillm935@ahapps.anoka.k12.mn.us>
|
||||
1 cbdev <cb@cbcdn.com>
|
||||
1 Guilherme Oenning <me@goenning.net>
|
||||
1 Greg Chetcuti <greg@chetcuti.com>
|
||||
1 Girish Ramakrishnan <mail@girish.in>
|
||||
1 FortressBuilder <FortressBuilder@users.noreply.github.com>
|
||||
1 t1st3 <contact@tiste.org>
|
||||
1 Icantcodeatall <francois.lachese@me.com>
|
||||
1 Igor Antun <IgorAntun@users.noreply.github.com>
|
||||
1 Igor Petrov <garik.piton@gmail.com>
|
||||
1 Florian Wilhelm <f.wilhelm@tarent.de>
|
||||
1 Ilya Pirozhenko <ilya.pir@gmail.com>
|
||||
1 Florian Kaiser <florian.kaiser@fnkr.net>
|
||||
1 Fazal Majid <github@sentfrom.com>
|
||||
1 Ivan Krutov <vania-pooh@vania-pooh.com>
|
||||
1 Izac Lorimer <izaclorimer@users.noreply.github.com>
|
||||
1 cpdev <cpdevelops@users.noreply.github.com>
|
||||
1 Jakob Gillich <jakob@gillich.me>
|
||||
1 zotlabs <mike@macgirvin.com>
|
||||
1 James Mills <prologic@shortcircuit.net.au>
|
||||
1 Jan <jayphizzle@users.noreply.github.com>
|
||||
1 ArthurHoaro <arthur@hoa.ro>
|
||||
1 Evelthon Prodromou <epro@prodromou.eu>
|
||||
1 Jannik Anker <jannikanker@users.noreply.github.com>
|
||||
1 Jarek Lipski <pub@loomchild.net>
|
||||
1 Alex Bogdanovski <alex@erudika.com>
|
||||
1 Eugen <eugen@zeonfederated.com>
|
||||
1 Ethan Madden <crazeh.monkeh@gmail.com>
|
||||
1 Jean Menezes da Rocha <jean@menezesdarocha.info>
|
||||
1 Jeremiah Marks <jeremiah@jlmarks.org>
|
||||
1 Joel Calado <joelcalado@gmail.com>
|
||||
1 Eric Moon <eric@ericmoon.net>
|
||||
1 Eren Hatırnaz <erenhatirnaz@hotmail.com.tr>
|
||||
1 dimqua <dimqua@lavabit.com>
|
||||
1 Josh Harmon <me@joshharmon.me>
|
||||
1 Joshua Hamilton <joshua.hamilton@fabricut.com>
|
||||
1 Emeric POUPON <epoupon@users.noreply.github.com>
|
||||
1 José Castro <cogurov@gmail.com>
|
||||
1 Eike Kettner <eike.kettner@posteo.de>
|
||||
1 Julien <bibich@users.noreply.github.com>
|
||||
1 Julien Bisconti <julien.bisconti@gmail.com>
|
||||
1 domainzero <domainzero@users.noreply.github.com>
|
||||
1 Julien Reichardt <jul.reich43@opmbx.org>
|
||||
1 Justin Clift <justin@postgresql.org>
|
||||
1 Justin O'Reilly <justin@oreilly.me>
|
||||
1 Armando Lüscher <armando@noplanman.ch>
|
||||
1 Arda Kılıçdağı <ardakilicdagi@gmail.com>
|
||||
1 Ketrel <webmaster@krahs-emag.com>
|
||||
1 Edreih Aldana <edreihaldana@yahoo.com>
|
||||
1 Kevin Lin <LINKIWI@users.noreply.github.com>
|
||||
1 ePirat <epirat07@gmail.com>
|
||||
1 timbe16 <timbe16@users.noreply.github.com>
|
||||
1 Keyhaku <jones@bious.fr>
|
||||
1 Ed Tewiah <etewiah@hotmail.com>
|
||||
1 Kieran <kieran.brahney@gmail.com>
|
||||
1 Konstantin Sorokin <kvs@sigterm.ru>
|
||||
1 Dražen Lučanin <kermit666@gmail.com>
|
||||
1 Kyle Farwell <m@kfarwell.org>
|
||||
1 Kyle Stetz <kylestetz@gmail.com>
|
||||
1 Doğan Çelik <dogancelik@users.noreply.github.com>
|
||||
1 Dmitriy Volkov <wldhx+vcs+github_com@wldhx.me>
|
||||
1 Liran Tal <liran.tal@gmail.com>
|
||||
1 Dirk Krause <dirkk0@googlemail.com>
|
||||
1 evitalis <evitalis@users.noreply.github.com>
|
||||
1 Руслан Корнев <oganer@gmail.com>
|
||||
1 Diego Molina <diemol@users.noreply.github.com>
|
36
Dangerfile
Normal file
36
Dangerfile
Normal file
@ -0,0 +1,36 @@
|
||||
#Check for changes to README.md
|
||||
has_readme_changes = git.modified_files.include?("README.md")
|
||||
|
||||
# Ensure there is a summary for a pull request
|
||||
fail 'Please provide a summary in the Pull Request description' if github.pr_body.length < 5
|
||||
|
||||
# Warn if PR guideline boxes are not checked.
|
||||
warn 'Please check PR guidelines and check the boxes.' if github.pr_body.include? '- [ ]'
|
||||
|
||||
# Warn if pull request is not updated
|
||||
warn 'Please update the Pull Request title to contain the script name' if github.pr_title.include? 'Update README.md'
|
||||
|
||||
# Warn when there are merge commits in the diff
|
||||
warn 'Please rebase to get rid of the merge commits in this Pull Request' if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ }
|
||||
|
||||
# Check links
|
||||
if has_readme_changes
|
||||
require 'json'
|
||||
results = File.read 'ab-results-temp.md-markdown-table.json'
|
||||
j = JSON.parse results
|
||||
if j['error']==true
|
||||
warn j['title']
|
||||
markdown j['message']
|
||||
end
|
||||
end
|
||||
|
||||
# Check syntax
|
||||
if has_readme_changes
|
||||
require 'json'
|
||||
syntaxresults = File.read 'syntaxcheck.json'
|
||||
sj = JSON.parse syntaxresults
|
||||
if sj['error']==true
|
||||
fail sj['title']
|
||||
markdown sj['message']
|
||||
end
|
||||
end
|
62
Makefile
Executable file
62
Makefile
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/make -f
|
||||
SHELL = /bin/bash
|
||||
all: checks
|
||||
|
||||
checks: nolicenselanguage nofullstop longdescriptions syntaxerrors
|
||||
|
||||
noexternallink:
|
||||
@echo -e "\nLines with no source/demo/other link:"
|
||||
@sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '^ *\* ' | egrep --color=always '[a-z\.] `'
|
||||
|
||||
nolicenselanguage:
|
||||
@echo -e "\nLines with only 1 or no language/license entry:"
|
||||
@! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '^ *\* ' | egrep -v '` `'
|
||||
|
||||
nofullstop:
|
||||
@echo -e "\nLines without a full stop after description:"
|
||||
@! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '[a-z] \(\['
|
||||
@! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '[a-z] `'
|
||||
|
||||
longdescriptions:
|
||||
@echo -e "\nDescriptions exceeding 250 chars:"
|
||||
@! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep --only-matching '\) - [Aa-Zz|.|\(|\)|/| |,|-]*\s\(\[' README.md | grep '.\{257\}'
|
||||
|
||||
listlicenses:
|
||||
@echo -e "\nList of licenses:"
|
||||
@sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep --only-matching '([Aa0-Zz9]|\s|\.|-)*` `' README.md | sort --unique
|
||||
|
||||
syntaxerrors:
|
||||
@echo -e "\n Syntax errors:"
|
||||
@! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '\)\(|``|\)`'
|
||||
|
||||
contrib:
|
||||
@mv .github/.mailmap . && printf "Commits | Author \n:---: | ---\n" > AUTHORS.md && git shortlog -sne >> AUTHORS.md && sed -i 's/\t/ | /g' AUTHORS.md && mv .mailmap .github/.mailmap
|
||||
|
||||
add:
|
||||
@#add a new entry
|
||||
@printf 'Software name: ' ;\
|
||||
read Name; if [ -z "$$Name" ]; then printf 'Missing software name!\n'; exit 1 ; fi ;\
|
||||
printf 'Homepage URL: ' ;\
|
||||
read Url; if [ -z "$$Url" ]; then printf 'Missing main project URL!\n'; exit 1 ; fi ;\
|
||||
printf 'Description (max 250 char): ' ;\
|
||||
read Description; if [ -z "$$Description" ]; then printf 'Missing description!\n'; exit 1 ; fi ;\
|
||||
printf 'License: ' ;\
|
||||
read License; if [ -z "$$License" ]; then printf 'Missing license!\n'; exit 1 ; fi ;\
|
||||
printf 'Main server-side language/platform/requirement: ' ;\
|
||||
read Language; if [ -z "$$Language" ]; then printf 'Missing language!\n'; exit 1 ; fi ;\
|
||||
printf 'Demo URL (if any): ' ;\
|
||||
read Demo; if [ -z "$$Demo" ]; then CDemo="" ; else CDemo="[Demo]($$Demo)" ; fi ;\
|
||||
printf 'Source code URL (if different from Homepage): ' ;\
|
||||
read Source; if [ -z "$$Source" ]; then CSource="" ; else CSource="[Source Code]($$Source)" ; fi ;\
|
||||
if [[ "$$CSource" == "" && "$$Demo" == "" ]]; \
|
||||
then Moreinfo="";\ printf "debug" ;\
|
||||
else Moreinfo=$$(echo "($$CDemo$$CSource)" | sed 's|)\[|), [|g') ;\
|
||||
fi ;\
|
||||
echo -e "Copy this entry to your clipboard, paste it in the appropriate category:\n\n" ;\
|
||||
echo " * [$$Name]($$Url) - $${Description}. $$Moreinfo \`$$License\` \`$$Language\`"
|
||||
|
||||
|
||||
#TODO ask for category and insert item accordingly
|
||||
#TODO check for unsorted entries
|
||||
#TODO automatically sort entries/sections
|
||||
#TODO autoupdate contributors list
|
115
non-free.md
Normal file
115
non-free.md
Normal file
@ -0,0 +1,115 @@
|
||||
# Awesome Selfhosted - Proprietary Software
|
||||
|
||||
**Software listed here does not allow you to run it for any purpose, study, modify or distribute the source code.** Some of the software here may not be audited due to its closed source nature, and can therefore contain anti-features, such as but not limited to: undisclosed security vulnerabilties, backdoors, user lock-in, sending personal data to a third party.
|
||||
|
||||
|
||||
## Analytics
|
||||
|
||||
* [Mint](http://haveamint.com/) `⊘ Proprietary` - Extensible self-hosted web analytics, license costs $30 per site. ([Demo](http://mimeoverse.com/mint/)) `PHP`
|
||||
|
||||
|
||||
## Content Management Systems (CMS)
|
||||
|
||||
* [CraftCMS](https://craftcms.com/) `⊘ Proprietary` - Craft is a content-first CMS that aims to make life enjoyable for developers and content managers alike. ([Demo](https://demo.craftcms.com/)) `PHP`
|
||||
* [Gazelle](https://github.com/WhatCD/Gazelle) - Gazelle is a web framework geared towards private BitTorrent trackers. Although naturally focusing on music, it can be modified for most needs. `unlicensed` `PHP`
|
||||
* [Kirby](https://getkirby.com/) `⊘ Proprietary` - File-based CMS. Easy to setup. Easy to use. Flexible as hell. ([Source Code](https://github.com/getkirby/kirby)) `PHP`
|
||||
|
||||
|
||||
## Communication Systems
|
||||
|
||||
* [HipChat](https://www.atlassian.com/software/hipchat) `⊘ Proprietary` - A team chat solution with 1:1 chat audio and video, third party integration and more `PHP/Python`
|
||||
|
||||
|
||||
## Decentralized Network
|
||||
|
||||
* [Synereo](https://www.synereo.com/) - Decentralized network system based on blockchain that allows fast speed and great trust level. ([Source Code](https://github.com/synereo/synereo)) `Scala`
|
||||
|
||||
## Document Archiving
|
||||
* [Ambar](https://ambar.cloud) - Self-Hosted Smart Document Archive (OCR, Store & Search) ([Source Code](https://github.com/RD17/ambar)) `Fair Source 1 v0.9` `Nodejs/Python`
|
||||
|
||||
## Federated Identity/Authentication
|
||||
|
||||
* [Auth0](https://auth0.com/docs/appliance): `⊘ Proprietary`. Identity made simple for developers. `NodeJS`
|
||||
|
||||
|
||||
## Feed Readers
|
||||
|
||||
* [Fever](http://feedafever.com/) `⊘ Proprietary` - Self-hosted feed aggregator that can sort items by popularity `PHP`
|
||||
|
||||
|
||||
## File Sharing and Synchronization
|
||||
|
||||
* [Resilio Sync](https://www.resilio.com/) `⊘ Proprietary` - Resilio Sync by Resilio, Inc is a proprietary peer-to-peer file synchronisation tool.
|
||||
* [Drive Virtual](http://www.drivevirtual.com/) `⊘ Proprietary` - With Drive Virtual you can sync, backup and share your files privately with your own FTP (SFTP) server or account.
|
||||
* [Dropcenter](http://projet.idleman.fr/dropcenter/) - Upload files by simple drag-n-drop. ([Source Code](https://github.com/ldleman/dropcenter)) `CCBYNCSAv3` `PHP`
|
||||
* [FileRun](http://www.filerun.com/) `⊘ Proprietary` - A complete solution for your files with integration with Google and Office. ([Demo](http://www.filerun.com/demo)) `PHP`
|
||||
|
||||
|
||||
## Games
|
||||
|
||||
* [Cubiks-2048](https://github.com/Kshitij-Banerjee/Cubiks-2048) - Clone of 2048 game in 3D. ([Demo](https://kshitij-banerjee.github.io/Cubiks-2048/)) `CCBYNCv4` `HTML5`
|
||||
* [untrusted](https://github.com/AlexNisnevich/untrusted) - Untrusted is a unique puzzle game designed for geeks and developers, where you solve the puzzles in the game by reading and writing Javascript. ([Demo](http://alex.nisnevich.com/untrusted/)) `CCBYNCSAv3/Custom` `Nodejs`
|
||||
|
||||
## IPBX
|
||||
|
||||
* [Elastix](http://www.elastix.org) `⊘ Proprietary` - Unified communications server software based on 3CX. ([Source Code](https://svn.code.sf.net/p/elastix/code/trunk/)) `GPLv2` `PHP`
|
||||
|
||||
|
||||
## Media Streaming
|
||||
|
||||
* [Plex](https://plex.tv/) `⊘ Proprietary` - Plex is a centralized home media playback system with a powerful central server.
|
||||
* [Subsonic](http://subsonic.org/) - Web-based media streamer and jukebox. ([Demo](http://demo.subsonic.org/login.view?user=guest4&password=guest))
|
||||
|
||||
|
||||
## Money, Budgeting and Management
|
||||
|
||||
* [Anchor](http://theanchorapp.com/) - Anchor is an invoicing system that integrates with Stripe and Paypal. Includes features such as: reporting, dashboard and no client limit. ([Demo](http://theanchorapp.com/demo/admin-login)) `PHP`
|
||||
* [FusionInvoice](https://www.fusioninvoice.com) `⊘ Proprietary` - FusionInvoice is an invoicing system for freelancers and small businesses. `PHP`
|
||||
* [Manager](http://manager.io/server) `⊘ Proprietary` - Online accounting software for small businesses. `Mono`
|
||||
* [Pancake](http://pancakeapp.com/) `⊘ Proprietary` - Online invoicing, project management, time tracking and proposal software. `PHP`
|
||||
|
||||
|
||||
## Photo and Video Galleries
|
||||
|
||||
* [ArtVenue](http://codecanyon.net/item/artvenue-image-sharing-community-script/5771542) `⊘ Proprietary` - Start your own photography community website, platform based on the Laravel PHP Framework. ([Demo](http://codecanyon.net/item/artvenue-image-sharing-community-script/full_screen_preview/5771542)) `PHP`
|
||||
* [Chevereto](https://chevereto.com/) `⊘ Proprietary` - A powerful and fast image hosting script that allows you to create your very own full featured image hosting website in just minutes. ([Demo](http://demo.chevereto.com/)) `PHP`
|
||||
* [Koken](http://koken.me/) `⊘ Proprietary` - Content management and web site publishing for photographers. `PHP`
|
||||
* [Single File PHP Gallery](http://sye.dk/sfpg/) `⊘ Proprietary` - is a web gallery in one single PHP file. `PHP`
|
||||
|
||||
|
||||
## Project Management
|
||||
* [Active Collab](https://www.activecollab.com/) `⊘ Proprietary` - Project management - `PHP`
|
||||
* [Duet](https://duetapp.com/) `⊘ Proprietary` - Invoicing and project management with an integrated client portal. ([Demo](https://duetapp.com/demo/#dashboard)) `PHP`
|
||||
* [Solo](http://www.getsoloapp.com/) - Solo is a free project management app created for freelancers. Create contacts, manage tasks, upload files, track project progress, and keep notes. ([Demo](http://www.getsoloapp.com/demo/)) `PHP`
|
||||
|
||||
|
||||
## Proxy
|
||||
* [Glype](https://www.glype.com/) `⊘ Proprietary` - Web-based proxy script written in PHP which focuses on features, functionality, and ease of use. Glype helps users to defeat Internet censorship and be anonymous while web browsing. `[Custom license](https://www.glype.com/license.php)` `PHP`
|
||||
|
||||
|
||||
## Self-hosting Solutions
|
||||
* [Axigen](https://www.axigen.com/mail-server/free/) `⊘ Proprietary` - Great alternative to open source. It's a turnkey messaging solution, perfect for small & micro businesses, integration projects or test environments.
|
||||
* [hMailServer](https://www.hmailserver.com) `⊘ Proprietary` - Open source e-mail server for Microsoft Windows. ([Source Code](https://github.com/hmailserver/hmailserver)) `C++`
|
||||
* [Poste.io](https://poste.io) `⊘ Proprietary` - Full featured solution for your Email server. Native implementation of last anti-SPAM metods, webmail and easy administration included. Free tier available. ([Demo](https://poste.io/admin/login#admin@poste.io;admin))
|
||||
|
||||
|
||||
## Software Development
|
||||
|
||||
* [92five](http://92fiveapp.com/) `⊘ Proprietary` - Self hosted project management application ([Source code](https://github.com/chintanbanugaria/92five)) `CC BY-NC 4.0` `PHP`
|
||||
* [Bamboo](https://www.atlassian.com/software/bamboo) `⊘ Proprietary` - A continuous integration server `Java`
|
||||
* [Cloud9](https://c9.io/) `⊘ Proprietary` - Your development environment, in the cloud ([Source code](https://github.com/c9/core)) `Nodejs`
|
||||
* [Confluence](https://www.atlassian.com/software/confluence) `⊘ Proprietary` - A team collaboration software `Java`
|
||||
* [Crucible](https://www.atlassian.com/software/crucible/overview) `⊘ Proprietary` - A peer code review application `Java`
|
||||
* [Documize](https://documize.com) `⊘ Proprietary` - Modern docs & wiki software built for software team collaboration. `Go`
|
||||
* [JIRA](https://www.atlassian.com/software/jira) `⊘ Proprietary` - A professional and extensible issue tracker `Java`
|
||||
* [RhodeCode](https://rhodecode.com) `⊘ Proprietary` - On-premise Source Code Management for Mercurial, Git & Subversion. `Python`
|
||||
* [Stash](https://www.atlassian.com/software/stash) `⊘ Proprietary` - An enterprise-level Git solution similar to GitLab `Java`
|
||||
|
||||
|
||||
## Ticketing
|
||||
* [SupportPal](https://www.supportpal.com/) `⊘ Proprietary` - Powerful help desk software - easy, fast and intuitive. ([Demo](http://demo.supportpal.com/)) `PHP`
|
||||
|
||||
|
||||
## Remote Support
|
||||
|
||||
* [ScreenConnect](https://www.screenconnect.com/) `⊘ Proprietary` - ScreenConnect offers lightning-fast remote support and remote access to connect instantly and solve problems faster.
|
85
test.js
Normal file
85
test.js
Normal file
@ -0,0 +1,85 @@
|
||||
// Accepts input of any filename, ie. node test.js README.md
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
let log = '{\n';
|
||||
let issuelog = ' "message": "#### Syntax Issues\\n\\n Name | Entry\\n----|----------------------\\n';
|
||||
|
||||
const file = fs.readFileSync(process.argv[2], 'utf8'); // Reads argv into var file
|
||||
|
||||
function entryFilter(md) { // Function to find lines with entries
|
||||
const linepatt = /^ {0,4}\* \[.*`/;
|
||||
return linepatt.test(md);
|
||||
}
|
||||
|
||||
function split(text) { // Function to split lines into array
|
||||
return text.split(/\r?\n/);
|
||||
}
|
||||
|
||||
function findPattern(text) { // Test entries against 8 patterns. If matches pattern returns true
|
||||
const nodnospatt = /^ {0,4}\* \[.*?\]\(.*?\) - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with no demo and no source code
|
||||
const slpatt = /^ {0,4}\* \[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with demo and source code
|
||||
const nodpatt = / {0,4}\* \[.*?\]\(.*?\) - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no demo
|
||||
const nospatt = / {0,4}\* \[.*?\]\(.*?\) - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with no source code
|
||||
const pnodnospatt = / {0,4}\* \[.*?\]\(.*?\) `⚠` - .{0,249}?\. `.*?` `.*?`/; // Regex for entries with proprietary with no demo and no source code
|
||||
const pslpatt = / {0,4}\* \[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\b\]\(.*?\), \[Source Code\b\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with demo and source code
|
||||
const pnodpatt = / {0,4}\* \[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Source Code\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no demo
|
||||
const pnospatt = / {0,4}\* \[.*?\]\(.*?\) `⚠` - .{0,249}?\. \(\[Demo\]\(.*?\)\) `.*?` `.*?`/; // Regex for entries with proprietary with no source code
|
||||
if (nodnospatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (slpatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (nodpatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (nospatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (pnodnospatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (pslpatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (pnodpatt.test(text) === true) {
|
||||
return true;
|
||||
} else if (pnospatt.test(text) === true) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function entryErrorCheck(md) {
|
||||
const namepatt = /\* \[(.*?)\]/; // regex pattern to find name of entryArray
|
||||
const entries = split(md); // Inserts each line into the entries array
|
||||
let totalFail = 0;
|
||||
let totalPass = 0;
|
||||
let total = 0;
|
||||
const entryArray = [];
|
||||
for (let i = 0, len = entries.length; i < len; i += 1) { // Loop to create array of objects
|
||||
entryArray[i] = new Object;
|
||||
entryArray[i].raw = entries[i];
|
||||
if (entryFilter(entries[i]) === true) { // filter out lines that don't with * [)
|
||||
total += 1;
|
||||
entryArray[i].name = namepatt.exec(entries[i])[1]; // Parses name of entry
|
||||
entryArray[i].pass = findPattern(entries[i]); // Tests against known patterns
|
||||
if (entryArray[i].pass === true) { // If entry passes increment totalPass counter
|
||||
totalPass += 1;
|
||||
} else {
|
||||
console.log(`${entryArray[i].name} Failed.`); // If entry fails increment totalFail counter and append error to issuelog
|
||||
// entryArray[i].error = findError(entries[i]) //WIP
|
||||
totalFail += 1;
|
||||
issuelog += `${entryArray[i].name} | ${entries[i]} \\n`;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (totalFail > 0) { // Logs # passed & failed to console, and failures to syntaxcheck.json
|
||||
console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total}`);
|
||||
log += ` "error": true,\n "title": "Found ${totalFail} entries with syntax error(s).",\n`;
|
||||
fs.writeFileSync('syntaxcheck.json', `${log} ${issuelog} "\n}`);
|
||||
process.exit(1);
|
||||
} else { // Logs # of entries passed to console and error: false to syntaxcheck.json
|
||||
console.log(`${totalFail} Failed, ${totalPass} Passed, of ${total} \n`);
|
||||
log += ' "error": false\n}';
|
||||
fs.writeFileSync('syntaxcheck.json', log);
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
entryErrorCheck(file);
|
Loading…
Reference in New Issue
Block a user