Skip to content

Commit e8c8a26

Browse files
author
Bastien Guerry
committed
src/consolidate-datacodegouvfr.clj: Spit stats.json
1 parent 2457cf5 commit e8c8a26

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

src/consolidate-datacodegouvfr.clj

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
;; License-Filename: LICENSE.txt
66

77
;; TODO:
8-
;; - spit stats.json
98
;; - spit tags.json for awesome software
109
;; - spit latest-tags.json for awesome software
1110

@@ -273,6 +272,39 @@
273272
(let [n (if (= "GitHub" name) "github.com" name)]
274273
(spit "forges.csv" (str n "," kind "\n") :append true))))
275274

275+
(defn get-top-owners-by [k]
276+
(->> @owners
277+
(filter #(when-let [s (get (val %) k)] (> s 1)))
278+
(map #(let [v (val %)]
279+
(hash-map (str (:name v) " (" (:forge v) ")")
280+
(get v k))))
281+
(into {})
282+
(sort-by val)
283+
reverse
284+
(take 10)))
285+
286+
(defn get-top-x [k]
287+
(let [m (filter k (vals @repositories))]
288+
(->> m
289+
(group-by k)
290+
(map (fn [[k v]] {k (* 100 (/ (* (count v) 1.0) (count m)))}))
291+
(into {})
292+
(sort-by val)
293+
reverse
294+
(take 10))))
295+
296+
(defn output-stats-json []
297+
(let [repositories_cnt (filter int? (map #(:repositories_count (val %)) @owners))]
298+
(->> {:repos_cnt (str (count @repositories))
299+
:orgas_cnt (str (count @owners))
300+
:avg_repos_cnt (format "%.2f" (/ (reduce + repositories_cnt) (* 1.0 (count repositories_cnt))))
301+
:top_orgs_by_stars (get-top-owners-by :total_stars)
302+
:top_orgs_by_repos (get-top-owners-by :repositories_count)
303+
:top_licenses (get-top-x :license)
304+
:top_languages (get-top-x :language)}
305+
json/generate-string
306+
(spit "stats.json"))))
307+
276308
;; Main execution
277309
(defn -main [args]
278310
(let [{:keys [test-msg] :as opts}
@@ -287,34 +319,10 @@
287319
(output-repositories-json)
288320
(output-latest-repositories-xml)
289321
(output-forges-csv)
322+
(output-stats-json)
290323
(log/info "Hosts:" (count @hosts))
291324
(log/info "Owners:" (count @owners))
292325
(log/info "Repositories:" (count @repositories))
293326
(log/info "Forges:" (count @forges))))
294327

295-
(let [repositories_cnt (filter #(and (int? %) (> % 3)) (map #(:repositories_count (val %)) @owners))
296-
;; repos_cnt (count @repositories)
297-
]
298-
;; (/ (reduce + repositories_cnt)
299-
;; (* 1.0 (count repositories_cnt)))
300-
(median repositories_cnt)
301-
)
302-
303-
304-
;; avg_repos_cnt "5.38"
305-
;; sill_cnt 511
306-
;; orgas_cnt 3384
307-
;; deps_cnt 7674
308-
;; top_orgs_by_stars […]
309-
;; libs_cnt 897
310-
;; repos_cnt 21033
311-
;; top_topics […]
312-
;; median_repos_cnt 1
313-
;; top_languages […]
314-
;; top_ministries []
315-
;; top_orgs_by_repos […]
316-
;; top_forges […]
317-
;; top_licenses […]
318-
319328
(-main *command-line-args*)
320-

0 commit comments

Comments
 (0)