From 4a477adc6165a8a8fc33f7ddc93ce2a9d25bdb24 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 9 Sep 2015 11:59:24 -0400 Subject: [PATCH] nitcatalog: do not crash if the dependency poset is empty (--no-parse) Signed-off-by: Jean Privat --- src/nitcatalog.nit | 116 ++++++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 54 deletions(-) diff --git a/src/nitcatalog.nit b/src/nitcatalog.nit index 5e2584a..ba0cb1c 100644 --- a/src/nitcatalog.nit +++ b/src/nitcatalog.nit @@ -382,50 +382,52 @@ class Catalog if cat != null then cat2proj[cat].add mpackage score += ts2.length.score - var reqs = deps[mpackage].greaters.to_a - reqs.remove(mpackage) - alpha_comparator.sort(reqs) - res.add "

Requirements

\n" - if reqs.is_empty then - res.add "none" - else - var list = new Array[String] - for r in reqs do - var direct = deps.has_direct_edge(mpackage, r) - var s = "" - if direct then s += "" - s += r.to_s - if direct then s += "" - s += "" - list.add s + if deps.has(mpackage) then + var reqs = deps[mpackage].greaters.to_a + reqs.remove(mpackage) + alpha_comparator.sort(reqs) + res.add "

Requirements

\n" + if reqs.is_empty then + res.add "none" + else + var list = new Array[String] + for r in reqs do + var direct = deps.has_direct_edge(mpackage, r) + var s = "" + if direct then s += "" + s += r.to_s + if direct then s += "" + s += "" + list.add s + end + res.add_list(list, ", ", " and ") end - res.add_list(list, ", ", " and ") - end - reqs = deps[mpackage].smallers.to_a - reqs.remove(mpackage) - alpha_comparator.sort(reqs) - res.add "

Clients

\n" - if reqs.is_empty then - res.add "none" - else - var list = new Array[String] - for r in reqs do - var direct = deps.has_direct_edge(r, mpackage) - var s = "" - if direct then s += "" - s += r.to_s - if direct then s += "" - s += "" - list.add s + reqs = deps[mpackage].smallers.to_a + reqs.remove(mpackage) + alpha_comparator.sort(reqs) + res.add "

Clients

\n" + if reqs.is_empty then + res.add "none" + else + var list = new Array[String] + for r in reqs do + var direct = deps.has_direct_edge(r, mpackage) + var s = "" + if direct then s += "" + s += r.to_s + if direct then s += "" + s += "" + list.add s + end + res.add_list(list, ", ", " and ") end - res.add_list(list, ", ", " and ") - end - score += deps[mpackage].greaters.length.score - score += deps[mpackage].direct_greaters.length.score - score += deps[mpackage].smallers.length.score - score += deps[mpackage].direct_smallers.length.score + score += deps[mpackage].greaters.length.score + score += deps[mpackage].direct_greaters.length.score + score += deps[mpackage].smallers.length.score + score += deps[mpackage].direct_smallers.length.score + end var contributors = mpackage.contributors if not contributors.is_empty then @@ -598,10 +600,12 @@ class Catalog res.add "name\n" res.add "maint\n" res.add "contrib\n" - res.add "reqs\n" - res.add "direct
reqs\n" - res.add "clients\n" - res.add "direct
clients\n" + if deps.not_empty then + res.add "reqs\n" + res.add "direct
reqs\n" + res.add "clients\n" + res.add "direct
clients\n" + end res.add "modules\n" res.add "classes\n" res.add "methods\n" @@ -615,10 +619,12 @@ class Catalog if p.maintainers.not_empty then maint = p.maintainers.first res.add "{maint}" res.add "{p.contributors.length}" - res.add "{deps[p].greaters.length-1}" - res.add "{deps[p].direct_greaters.length}" - res.add "{deps[p].smallers.length-1}" - res.add "{deps[p].direct_smallers.length}" + if deps.not_empty then + res.add "{deps[p].greaters.length-1}" + res.add "{deps[p].direct_greaters.length}" + res.add "{deps[p].smallers.length-1}" + res.add "{deps[p].direct_smallers.length}" + end res.add "{mmodules[p]}" res.add "{mclasses[p]}" res.add "{mmethods[p]}" @@ -684,7 +690,7 @@ for p in model.mpackages do end end -if not opt_no_git.value then for p in model.mprojects do +if not opt_no_git.value then for p in model.mpackages do catalog.git_info(p) end @@ -817,12 +823,14 @@ index.add """ index.add "

Highlighted Packages

\n" index.add catalog.list_best(catalog.score) -index.add "

Most Required

\n" -var reqs = new Counter[MPackage] -for p in model.mpackages do - reqs[p] = catalog.deps[p].smallers.length - 1 +if catalog.deps.not_empty then + index.add "

Most Required

\n" + var reqs = new Counter[MPackage] + for p in model.mpackages do + reqs[p] = catalog.deps[p].smallers.length - 1 + end + index.add catalog.list_best(reqs) end -index.add catalog.list_best(reqs) index.add "

By First Tag

\n" index.add catalog.list_by(catalog.cat2proj, "cat_") -- 1.7.9.5