|
13 | 13 |
|
14 | 14 | ;; Define CLI options |
15 | 15 | (def cli-options |
16 | | - {:test {:desc "Testing?" |
17 | | - :default nil}}) |
| 16 | + {:test {:desc "Testing?" |
| 17 | + :default nil} |
| 18 | + :owners {:desc "Only handle owners" |
| 19 | + :default nil}}) |
18 | 20 |
|
19 | 21 | ;; Initialize atoms |
20 | 22 | (def hosts (atom ())) |
|
64 | 66 | (into {}))) |
65 | 67 |
|
66 | 68 | ;; Set hosts, owners, repositories and public forges |
67 | | -(defn set-hosts! [test] |
| 69 | +(defn set-hosts! [opts] |
68 | 70 | (log/info "Fetching hosts from" (:hosts urls)) |
69 | 71 | (let [res (or (fetch-json (:hosts urls)) ())] |
70 | | - (reset! hosts (if test (take 1 res) res)))) |
| 72 | + (reset! hosts |
| 73 | + (if (or (:test opts) (:owners opts)) |
| 74 | + (take 1 res) |
| 75 | + res)))) |
71 | 76 |
|
72 | 77 | (defn set-owners! [] |
73 | 78 | (doseq [{:keys [owners_url]} @hosts] |
|
171 | 176 | annuaire-tops (fetch-annuaire-tops)] |
172 | 177 | (doseq [[k v] (filter #(:pso_id (val %)) @owners)] |
173 | 178 | (let [pso_id (:pso_id v) |
174 | | - top_id (or (some (into #{} (keys annuaire-tops)) #{pso_id}) |
175 | | - (:top (get annuaire pso_id)) |
176 | | - pso_id) |
| 179 | + top_id (if (some #{pso_id} (into #{} (map name (keys annuaire-tops)))) |
| 180 | + pso_id |
| 181 | + (:top (get annuaire pso_id))) |
177 | 182 | top_id_name (:nom (get annuaire top_id))] |
178 | 183 | (swap! owners update-in [k] |
179 | 184 | conj {:pso_top_id top_id :pso_top_id_name top_id_name}))))) |
|
377 | 382 |
|
378 | 383 | ;; Main execution |
379 | 384 | (defn -main [args] |
380 | | - (let [{:keys [test]} (cli/parse-opts args {:spec cli-options})] |
381 | | - (set-hosts! test) |
| 385 | + (let [{:keys [test owners] :as opts} (cli/parse-opts args {:spec cli-options})] |
| 386 | + (set-hosts! opts) |
382 | 387 | (set-owners!) |
383 | | - (set-repos!) |
| 388 | + (when-not owners (set-repos!)) |
384 | 389 | (set-public-sector-forges!) |
385 | 390 | (update-owners!) |
386 | | - (set-awesome!) |
387 | | - (set-awesome-releases!) |
388 | | - (update-awesome!) |
| 391 | + (when-not owners |
| 392 | + (set-awesome!) |
| 393 | + (set-awesome-releases!) |
| 394 | + (update-awesome!)) |
389 | 395 | (output-owners-json) |
390 | | - (output-latest-owners-xml) |
391 | | - (output-repositories-json) |
392 | | - (output-latest-repositories-xml) |
393 | | - (output-latest-releases-xml) |
394 | | - (output-forges-csv) |
395 | | - (output-stats-json) |
396 | | - (output-awesome-json) |
397 | | - (output-releases-json) |
398 | | - (log/info "Hosts:" (count @hosts)) |
399 | | - (log/info "Owners:" (count @owners)) |
400 | | - (log/info "Repositories:" (count @repositories)) |
401 | | - (log/info "Forges:" (count @forges)))) |
| 396 | + (when-not owners |
| 397 | + (output-latest-owners-xml) |
| 398 | + (output-repositories-json) |
| 399 | + (output-latest-repositories-xml) |
| 400 | + (output-latest-releases-xml) |
| 401 | + (output-forges-csv) |
| 402 | + (output-stats-json) |
| 403 | + (output-awesome-json) |
| 404 | + (output-releases-json) |
| 405 | + (log/info "Hosts:" (count @hosts)) |
| 406 | + (log/info "Owners:" (count @owners)) |
| 407 | + (log/info "Repositories:" (count @repositories)) |
| 408 | + (log/info "Forges:" (count @forges))))) |
402 | 409 |
|
403 | 410 | (-main *command-line-args*) |
0 commit comments