aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2015-05-18 19:47:18 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2015-05-18 19:47:18 +0100
commit32fe581193dd011519b1e69cf65078a98cb36ab9 (patch)
tree5eae1f38d67a3d8bb08c16ddd958b6474dd8e48f
parent677c101bacb7e2180437bfa9b5d14c575118f34f (diff)
parentda041b8c609d9d75f81e385896b42f2fa24143a5 (diff)
downloadpackages-32fe581193dd011519b1e69cf65078a98cb36ab9.tar.gz
packages-32fe581193dd011519b1e69cf65078a98cb36ab9.zip
Merge pull request #139 from FedericoCeratto/travis-ci
Related to #138, add package scanner and .travis.yml
-rw-r--r--.travis.yml23
-rw-r--r--package_scanner.nim101
2 files changed, 124 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..944e760
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,23 @@
+
+os:
+ - linux
+
+language: c
+
+env:
+ - BRANCH="travis"
+ - BRANCH="devel"
+
+install:
+ - git clone -b $BRANCH git://github.com/Araq/Nim.git; cd Nim; git clone -b $BRANCH --depth 1 git://github.com/nim-lang/csources; cd csources && sh build.sh; cd ..; bin/nim c koch; ./koch boot -d:release; cd ..
+
+before_script:
+ - set -e
+ - set -x
+ - export PATH=`pwd`/Nim/bin:$PATH
+
+script:
+ - nim c -d:ssl -r package_scanner.nim
+
+notifications:
+ email: false # noisy
diff --git a/package_scanner.nim b/package_scanner.nim
new file mode 100644
index 0000000..8f9bc3f
--- /dev/null
+++ b/package_scanner.nim
@@ -0,0 +1,101 @@
+
+# A very simple Nim package scanner.
+#
+# Scan the package list from:
+# https://github.com/nim-lang/packages/blob/master/packages.json
+#
+# Check the packages for:
+# * Missing/unknown license
+# * Missing description
+# * Missing name
+# * Missing/unknown method
+# * Missing/unreachable repository
+#
+# Usage: nim c -d:ssl -r package_scanner.nim
+#
+# Copyright 2015 Federico Ceratto <federico.ceratto@gmail.com>
+# Released under GPLv3 License, see /usr/share/common-licenses/GPL-3
+
+import httpclient
+import net
+import json
+
+const
+ PKG_LIST_URL = "https://raw.githubusercontent.com/nim-lang/packages/master/packages.json"
+
+ LICENSES = @[
+ "Allegro 4 Giftware",
+ "BSD",
+ "BSD3",
+ "CC0",
+ "GPL",
+ "GPLv2",
+ "GPLv3",
+ "LGPLv2",
+ "LGPLv3",
+ "MIT",
+ "MS-PL",
+ "WTFPL",
+ "libpng",
+ "zlib"
+ ]
+
+ VCS_TYPES = @["git", "hg"]
+
+proc check(): int =
+ var
+ name: string
+ url: string
+
+
+ echo ""
+ let
+ pkg_list = parseJson(getContent(PKG_LIST_URL))
+
+ for pdata in pkg_list:
+ if not pdata.hasKey("name"):
+ echo "E: missing package name"
+ result.inc()
+ continue
+
+ name = pdata["name"].str
+ if not pdata.hasKey("method"):
+ echo "E: ", name, "has no method"
+ result.inc()
+
+ elif not (pdata["method"].str in VCS_TYPES):
+ echo "E: ", name, "has an unknown method: ", pdata["method"].str
+ result.inc()
+
+ if not pdata.hasKey("license"):
+ echo "E: ", name, "has no license"
+ result.inc()
+ elif not (pdata["license"].str in LICENSES):
+ echo "W: ", name, "has an unexpected license: ", pdata["license"]
+
+ if not pdata.hasKey("description"):
+ echo "E: ", name, "has no description"
+ result.inc()
+
+ if not pdata.hasKey("web"):
+ echo "E: ", name, "has no URL"
+ result.inc()
+ continue
+
+ for pdata in pkg_list:
+ if pdata.hasKey("name") and pdata.hasKey("web"):
+ name = pdata["name"].str
+ url = pdata["web"].str
+ try:
+ discard getContent(url, timeout=3000)
+
+ except HttpRequestError, TimeoutError, AssertionError:
+ echo "E: ", name, ": unable to fetch repository ", url, " ", getCurrentExceptionMsg()
+ result.inc()
+
+ echo "Error count: ", result
+ return
+
+when isMainModule:
+ quit(check())
+