|
5 | 5 | ;; License-Filename: LICENSE.txt |
6 | 6 |
|
7 | 7 | ;; TODO: |
8 | | -;; - spit stats.json |
9 | 8 | ;; - spit tags.json for awesome software |
10 | 9 | ;; - spit latest-tags.json for awesome software |
11 | 10 |
|
|
273 | 272 | (let [n (if (= "GitHub" name) "github.com" name)] |
274 | 273 | (spit "forges.csv" (str n "," kind "\n") :append true)))) |
275 | 274 |
|
| 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 | + |
276 | 308 | ;; Main execution |
277 | 309 | (defn -main [args] |
278 | 310 | (let [{:keys [test-msg] :as opts} |
|
287 | 319 | (output-repositories-json) |
288 | 320 | (output-latest-repositories-xml) |
289 | 321 | (output-forges-csv) |
| 322 | + (output-stats-json) |
290 | 323 | (log/info "Hosts:" (count @hosts)) |
291 | 324 | (log/info "Owners:" (count @owners)) |
292 | 325 | (log/info "Repositories:" (count @repositories)) |
293 | 326 | (log/info "Forges:" (count @forges)))) |
294 | 327 |
|
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 | | - |
319 | 328 | (-main *command-line-args*) |
320 | | - |
|
0 commit comments