├── .github
├── FUNDING.yml
├── dependabot.yml
└── workflows
│ ├── add_user.yml
│ ├── rebuild_cache.yml
│ └── regenerate.yml
├── .gitignore
├── README.md
├── authors
├── ATOOMIC.json
├── BDFOY.json
├── BYTEROCK.json
├── CROMEDOME.json
├── DAVECROSS.json
├── DCANTRELL.json
├── DRCLAW.json
├── FERKI.json
├── GDT.json
├── GEEKRUTH.json
├── MANWAR.json
├── NHORNE.json
├── OALDERS.json
├── PETDANCE.json
├── PMQS.json
├── PSCUST.json
├── SKIM.json
├── SLAFFAN.json
├── SLU.json
├── SZABGAB.json
├── TEODESIAN.json
├── TOBYINK.json
├── TODDR.json
├── VOEGELAS.json
└── data
│ ├── ATOOMIC
│ └── data.json
│ ├── BDFOY
│ └── data.json
│ ├── BYTEROCK
│ └── data.json
│ ├── CROMEDOME
│ └── data.json
│ ├── DAVECROSS
│ └── data.json
│ ├── DCANTRELL
│ └── data.json
│ ├── DRCLAW
│ └── data.json
│ ├── FERKI
│ └── data.json
│ ├── GEEKRUTH
│ └── data.json
│ ├── MANWAR
│ └── data.json
│ ├── NHORNE
│ └── data.json
│ ├── OALDERS
│ └── data.json
│ ├── PETDANCE
│ └── data.json
│ ├── PMQS
│ └── data.json
│ ├── PSCUST
│ └── data.json
│ ├── SKIM
│ └── data.json
│ ├── SLAFFAN
│ └── data.json
│ ├── SLU
│ └── data.json
│ ├── SZABGAB
│ └── data.json
│ ├── TEODESIAN
│ └── data.json
│ ├── TOBYINK
│ └── data.json
│ ├── TODDR
│ └── data.json
│ └── VOEGELAS
│ └── data.json
├── bin
├── add_user
└── dashboard
├── cpanfile
├── dashboard.json
├── lib
└── Dashboard
│ ├── App.pm
│ ├── Author.pm
│ ├── BadgeMaker.pm
│ └── Distribution.pm
├── refresh_branch_cache
├── repo_def_branch.json
├── src
├── CNAME
├── add
│ └── index.html
├── css
│ └── style.css
├── favicon.ico
├── images
│ ├── dashboard.png
│ ├── gravatar.png
│ ├── gravatar.webp
│ └── missing_image.png
├── js
│ └── dashboard.js
└── robots.txt
└── tt_lib
├── add.tt
├── dashboard.tt
├── index.tt
├── page.tt
└── sitemap.tt
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: davorg
2 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Set update schedule for GitHub Actions
2 |
3 | version: 2
4 | updates:
5 |
6 | - package-ecosystem: "github-actions"
7 | directory: "/"
8 | schedule:
9 | # Check for updates to GitHub Actions every week
10 | interval: "weekly"
11 |
--------------------------------------------------------------------------------
/.github/workflows/add_user.yml:
--------------------------------------------------------------------------------
1 | name: Add user
2 |
3 | on:
4 | repository_dispatch:
5 | types: [add_user]
6 |
7 | jobs:
8 | add_user:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: Checkout
12 | uses: actions/checkout@v4
13 | - name: Do the thing
14 | run: bin/add_user '${{ toJSON(github.event.client_payload) }}'
15 |
16 |
--------------------------------------------------------------------------------
/.github/workflows/rebuild_cache.yml:
--------------------------------------------------------------------------------
1 | name: Rebuild default branch cache
2 |
3 | on:
4 | schedule:
5 | - cron: '0 0 * * 1'
6 | workflow_dispatch:
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout
14 | uses: actions/checkout@v4
15 |
16 | - name: Install cpanm
17 | run: sudo apt-get update && sudo apt-get install -y cpanminus
18 |
19 | - name: Install modules
20 | run: |
21 | sudo cpanm --installdeps --notest .
22 |
23 | - name: Rebuild branch cache
24 | env:
25 | PERL5LIB: lib
26 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27 | run: |
28 | perl refresh_branch_cache
29 |
30 | - name: Commit new page
31 | if: github.repository == 'PerlToolsTeam/dashboard'
32 | run: |
33 | git config --global --add safe.directory /__w/dashboard/dashboard
34 | GIT_STATUS=$(git status --porcelain)
35 | echo $GIT_STATUS
36 | git config user.name github-actions[bot]
37 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com
38 | git add repo_def_branch.json
39 | if [ "$GIT_STATUS" != "" ]; then git commit -m "Automated Web page generation"; fi
40 | if [ "$GIT_STATUS" != "" ]; then git push; fi
41 |
42 |
--------------------------------------------------------------------------------
/.github/workflows/regenerate.yml:
--------------------------------------------------------------------------------
1 | name: Generate web page
2 |
3 | on:
4 | push:
5 | branches: 'master'
6 | schedule:
7 | - cron: '7 */6 * * *'
8 | workflow_dispatch:
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 | container: perl:latest
14 |
15 | steps:
16 | - name: Install snapd
17 | run: |
18 | apt-get -y update
19 | apt-get -y install gh
20 |
21 | - name: Perl version
22 | run: perl -v
23 |
24 | - name: Checkout
25 | uses: actions/checkout@v4
26 |
27 | - name: Install cpanm
28 | run: apt-get update && apt-get install -y cpanminus
29 |
30 | - name: Install modules
31 | run: |
32 | cpanm --installdeps --notest .
33 |
34 | - name: Create pages
35 | env:
36 | PERL5LIB: lib
37 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38 | run: |
39 | mkdir -p docs
40 | perl bin/dashboard
41 |
42 | - name: Commit new page
43 | if: github.repository == 'PerlToolsTeam/dashboard'
44 | run: |
45 | git config --global --add safe.directory /__w/dashboard/dashboard
46 | GIT_STATUS=$(git status --porcelain)
47 | echo $GIT_STATUS
48 | git config user.name github-actions[bot]
49 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com
50 | git add .
51 | if [ "$GIT_STATUS" != "" ]; then git commit -m "Automated Web page generation"; fi
52 | if [ "$GIT_STATUS" != "" ]; then git push; fi
53 |
54 | - name: Update pages artifact
55 | uses: actions/upload-pages-artifact@v3
56 | with:
57 | path: docs/
58 |
59 | deploy:
60 | needs: build
61 | permissions:
62 | pages: write
63 | id-token: write
64 | environment:
65 | name: github-pages
66 | url: ${{ steps.deployment.outputs.page_url }}
67 | runs-on: ubuntu-latest
68 | steps:
69 | - name: Deploy to GitHub Pages
70 | id: deployment
71 | uses: actions/deploy-pages@v4
72 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | docs/
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # dashboard
2 | Simple dashboard for monitoring CPAN modules
3 |
4 | ## Simple Set-Up
5 |
6 | To configure this system to work with your system, do the following:
7 |
8 | * Register with Coveralls using your Github login
9 | * Activate the repos that you want to report on Coveralls
10 | * Edit the `dashboard.json` file so it is configured correctly
11 | * Push changes to your repos
12 | * Run `dashboard`
13 |
14 | **Note:** For (slightly) more detail about setting up Coveralls, see
15 | [my presentation on the subject](http://www.slideshare.net/davorg/github-travisci-and-perl).
16 |
17 |
18 | ## Configuration
19 |
20 | You configure the system by editing `dashboard.json`. There are two main sections in the file.
21 |
22 | * **author** - information about the author of the modules.
23 | * **github** - your Github username.
24 | * **cpan** - your CPAN username.
25 | * **output** - various output parameters
26 | * **file** - the name of the output file.
27 | * **template** - the name of the input template.
28 | * **title** - the title to use on the output page.
29 | * **menu** - a list of menu items to appear in header of the output page. Each item should be a JSON object with a **link** attribute and a **title** attribute.
30 | * **analytics** - a Google Analytics code. If this is given, then a Google Analytics section is added to the output.
31 |
32 | ## Example
33 |
34 | You can see this code in action at https://cpandashboard.com/DAVECROSS/.
35 |
--------------------------------------------------------------------------------
/authors/ATOOMIC.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "ATOOMIC",
4 | "github" : "atoomic"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "ubuntu", "linux", "macos", "windows", "testsuite", "test" ],
9 | "use_travis" : 0,
10 | "use_coveralls" :0,
11 | "use_codecov" : 0,
12 | "use_appveyor" : 0
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/authors/BDFOY.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "BDFOY",
4 | "github" : "briandfoy"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "ubuntu", "macos", "windows" ],
9 | "use_travis" : 1,
10 | "use_coveralls" : 1,
11 | "use_codecov" : 0,
12 | "use_appveyor" : 1
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/authors/BYTEROCK.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "BYTEROCK",
4 | "github" : "byterock"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/CROMEDOME.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "CROMEDOME",
4 | "github" : "cromedome"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/DAVECROSS.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "DAVECROSS",
4 | "github" : "davorg"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/DCANTRELL.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "DCANTRELL",
4 | "github" : "DrHyde"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "Linux", "FreeBSD", "OpenBSD", "MacOS", "Windows" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis_com" : 0,
12 | "use_coveralls" : 1,
13 | "use_codecov" : 0
14 | }
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/authors/DRCLAW.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "DRCLAW",
4 | "github" : "drclaw1394"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_travis" : 0,
10 | "use_coveralls" : 0,
11 | "use_codecov" : 0
12 | },
13 | "sort": {
14 | "column": 3,
15 | "direction": "desc"
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/authors/FERKI.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "FERKI",
4 | "github" : "ferki"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "build and test" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/GDT.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "GDT",
4 | "github" : "giterlizzi"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/GEEKRUTH.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "GEEKRUTH",
4 | "github" : "GeekRuthie"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 0,
8 | "gh_workflow_names" : [ ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
19 |
--------------------------------------------------------------------------------
/authors/MANWAR.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "MANWAR",
4 | "github" : "manwar"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/NHORNE.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "NHORNE",
4 | "github" : "nigelhorne"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 1,
11 | "use_travis" : 1,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/OALDERS.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "OALDERS",
4 | "github" : "oalders"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "Build", "dzil build and test", "test" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 1
15 | },
16 | "sort": {
17 | "column": 3,
18 | "direction": "desc"
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/authors/PETDANCE.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PETDANCE",
4 | "github" : "petdance"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "testsuite" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/PMQS.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PMQS",
4 | "github" : "pmqs"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "linux", "macos", "windows" ],
9 | "use_cirrus" : 1,
10 | "use_appveyor" : 1,
11 | "use_travis" : 0,
12 | "use_travis_com" : 1,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/PSCUST.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PSCUST",
4 | "github" : "pauloscustodio"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/authors/SKIM.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SKIM",
4 | "github" : "michal-josef-spacek"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/SLAFFAN.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SLAFFAN",
4 | "github" : "shawnlaffan"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 1,
10 | "use_appveyor" : 1,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 0,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/SLU.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SLU",
4 | "github" : "soren"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 0,
8 | "gh_workflow_names" : [ ],
9 | "use_travis" : 1,
10 | "use_coveralls" : 1
11 | }
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/authors/SZABGAB.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SZABGAB",
4 | "github" : "szabgab"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_travis" : 1,
10 | "use_coveralls" : 1,
11 | "use_codecov" : 0
12 | },
13 | "sort": {
14 | "column": 3,
15 | "direction": "desc"
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/authors/TEODESIAN.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "TEODESIAN",
4 | "github" : "teodesian"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 0,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 1,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/TOBYINK.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "TOBYINK",
4 | "github" : "tobyink"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "CI" ],
9 | "use_travis" : 0,
10 | "use_coveralls" : 1,
11 | "use_codecov" : 1
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/authors/TODDR.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "TODDR",
4 | "github" : "toddr"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "ubuntu", "macos", "windows", "testsuite", "bsd", "windows_installation" ],
9 | "use_travis" : 0,
10 | "use_coveralls" :0,
11 | "use_codecov" : 0,
12 | "use_appveyor" : 0
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/authors/VOEGELAS.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "VOEGELAS",
4 | "github" : "voegelas"
5 | },
6 | "ci" : {
7 | "use_gh_actions" : 1,
8 | "gh_workflow_names" : [ "linux" ],
9 | "use_cirrus" : 0,
10 | "use_appveyor" : 0,
11 | "use_travis" : 0,
12 | "use_travis_com" : 0,
13 | "use_coveralls" : 1,
14 | "use_codecov" : 0
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/authors/data/ATOOMIC/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "ATOOMIC",
4 | "github" : "atoomic",
5 | "gravatar" : "https://secure.gravatar.com/avatar/7df78e735b7ef916d691e0b574a14f06?s=130&d=identicon",
6 | "name" : "âicolas â."
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "ubuntu",
11 | "linux",
12 | "macos",
13 | "windows",
14 | "testsuite",
15 | "test"
16 | ],
17 | "use_appveyor" : 0,
18 | "use_codecov" : 0,
19 | "use_coveralls" : 0,
20 | "use_gh_actions" : 1,
21 | "use_travis" : 0
22 | },
23 | "modules" : [
24 | {
25 | "auth" : "ATOOMIC",
26 | "date" : "2017-02-01",
27 | "dist" : "Amazon-Dash-Button",
28 | "insecure_repo" : false,
29 | "name" : "Amazon-Dash-Button-0.11",
30 | "repo" : "https://github.com/atoomic/Amazon-Dash-Button",
31 | "repo_def_branch" : "master",
32 | "repo_name" : "Amazon-Dash-Button",
33 | "repo_owner" : "atoomic",
34 | "ver" : "0.11"
35 | },
36 | {
37 | "auth" : "ATOOMIC",
38 | "bugtracker" : "https://github.com/atoomic/B-COW/issues",
39 | "date" : "2022-10-20",
40 | "dist" : "B-COW",
41 | "insecure_repo" : false,
42 | "name" : "B-COW-0.007",
43 | "repo" : "https://github.com/atoomic/B-COW.git",
44 | "repo_def_branch" : "master",
45 | "repo_name" : "B-COW",
46 | "repo_owner" : "atoomic",
47 | "uses_rt" : false,
48 | "ver" : "0.007"
49 | },
50 | {
51 | "auth" : "ATOOMIC",
52 | "bugtracker" : "https://github.com/atoomic/Char-Replace/issues",
53 | "date" : "2019-01-30",
54 | "dist" : "Char-Replace",
55 | "insecure_repo" : false,
56 | "name" : "Char-Replace-0.004",
57 | "repo" : "https://github.com/atoomic/Char-Replace.git",
58 | "repo_def_branch" : "master",
59 | "repo_name" : "Char-Replace",
60 | "repo_owner" : "atoomic",
61 | "uses_rt" : false,
62 | "ver" : "0.004"
63 | },
64 | {
65 | "auth" : "ATOOMIC",
66 | "bugtracker" : "https://github.com/atoomic/Check-GlobalPhase/issues",
67 | "date" : "2019-08-12",
68 | "dist" : "Check-GlobalPhase",
69 | "insecure_repo" : false,
70 | "name" : "Check-GlobalPhase-0.001",
71 | "repo" : "https://github.com/atoomic/Check-GlobalPhase.git",
72 | "repo_def_branch" : "master",
73 | "repo_name" : "Check-GlobalPhase",
74 | "repo_owner" : "atoomic",
75 | "uses_rt" : false,
76 | "ver" : "0.001"
77 | },
78 | {
79 | "auth" : "ATOOMIC",
80 | "bugtracker" : "https://github.com/garu/Clone/issues",
81 | "date" : "2024-08-17",
82 | "dist" : "Clone",
83 | "insecure_repo" : true,
84 | "name" : "Clone-0.47",
85 | "repo" : "http://github.com/garu/Clone",
86 | "repo_def_branch" : "master",
87 | "repo_name" : "Clone",
88 | "repo_owner" : "garu",
89 | "uses_rt" : false,
90 | "ver" : "0.47"
91 | },
92 | {
93 | "auth" : "ATOOMIC",
94 | "bugtracker" : "https://github.com/atoomic/Colon-Config/issues",
95 | "date" : "2018-12-28",
96 | "dist" : "Colon-Config",
97 | "insecure_repo" : false,
98 | "name" : "Colon-Config-0.004",
99 | "repo" : "https://github.com/atoomic/Colon-Config.git",
100 | "repo_def_branch" : "master",
101 | "repo_name" : "Colon-Config",
102 | "repo_owner" : "atoomic",
103 | "uses_rt" : false,
104 | "ver" : "0.004"
105 | },
106 | {
107 | "auth" : "ATOOMIC",
108 | "bugtracker" : "https://github.com/Dual-Life/Devel-PPPort/issues",
109 | "date" : "2022-03-18",
110 | "dist" : "Devel-PPPort",
111 | "insecure_repo" : false,
112 | "name" : "Devel-PPPort-3.68",
113 | "repo" : "https://github.com/Dual-Life/Devel-PPPort",
114 | "repo_def_branch" : "master",
115 | "repo_name" : "Devel-PPPort",
116 | "repo_owner" : "Dual-Life",
117 | "uses_rt" : false,
118 | "ver" : "3.68"
119 | },
120 | {
121 | "auth" : "ATOOMIC",
122 | "date" : "2018-07-13",
123 | "dist" : "Dist-Zilla-PluginBundle-ATOOMIC",
124 | "insecure_repo" : false,
125 | "name" : "Dist-Zilla-PluginBundle-ATOOMIC-1.00",
126 | "repo" : "https://github.com/atoomic/Dist-Zilla-PluginBundle-ATOOMIC",
127 | "repo_def_branch" : "master",
128 | "repo_name" : "Dist-Zilla-PluginBundle-ATOOMIC",
129 | "repo_owner" : "atoomic",
130 | "ver" : "1.00"
131 | },
132 | {
133 | "auth" : "ATOOMIC",
134 | "bugtracker" : "https://github.com/atoomic/ExtUtils-MakeMaker-PPPort/issues",
135 | "date" : "2020-07-22",
136 | "dist" : "ExtUtils-MakeMaker-PPPort",
137 | "insecure_repo" : false,
138 | "name" : "ExtUtils-MakeMaker-PPPort-0.02",
139 | "repo" : "https://github.com/atoomic/ExtUtils-MakeMaker-PPPort.git",
140 | "repo_def_branch" : "master",
141 | "repo_name" : "ExtUtils-MakeMaker-PPPort",
142 | "repo_owner" : "atoomic",
143 | "uses_rt" : false,
144 | "ver" : "0.02"
145 | },
146 | {
147 | "auth" : "ATOOMIC",
148 | "bugtracker" : "https://github.com/atoomic/FastGlob/issues",
149 | "date" : "2019-05-30",
150 | "dist" : "FastGlob",
151 | "insecure_repo" : false,
152 | "name" : "FastGlob-1.5",
153 | "repo" : "https://github.com/atoomic/FastGlob.git",
154 | "repo_def_branch" : "master",
155 | "repo_name" : "FastGlob",
156 | "repo_owner" : "atoomic",
157 | "uses_rt" : false,
158 | "ver" : "1.5"
159 | },
160 | {
161 | "auth" : "ATOOMIC",
162 | "bugtracker" : "https://github.com/bricas/geo-ipfree/issues",
163 | "date" : "2022-02-01",
164 | "dist" : "Geo-IPfree",
165 | "insecure_repo" : false,
166 | "name" : "Geo-IPfree-1.160000",
167 | "repo" : "https://github.com/bricas/geo-ipfree.git",
168 | "repo_def_branch" : "master",
169 | "repo_name" : "geo-ipfree",
170 | "repo_owner" : "bricas",
171 | "uses_rt" : false,
172 | "ver" : "1.160000"
173 | },
174 | {
175 | "auth" : "ATOOMIC",
176 | "bugtracker" : "https://github.com/mschilli/net-google-drive-simple/issues",
177 | "date" : "2022-04-14",
178 | "dist" : "Net-Google-Drive-Simple",
179 | "insecure_repo" : false,
180 | "name" : "Net-Google-Drive-Simple-3.02",
181 | "repo" : "https://github.com/mschilli/net-google-drive-simple",
182 | "repo_def_branch" : "master",
183 | "repo_name" : "net-google-drive-simple",
184 | "repo_owner" : "mschilli",
185 | "uses_rt" : false,
186 | "ver" : "3.02"
187 | },
188 | {
189 | "auth" : "ATOOMIC",
190 | "bugtracker" : "https://github.com/atoomic/Net-Whois-IANA/issues",
191 | "date" : "2022-03-10",
192 | "dist" : "Net-Whois-IANA",
193 | "insecure_repo" : false,
194 | "name" : "Net-Whois-IANA-0.49",
195 | "repo" : "https://github.com/atoomic/Net-Whois-IANA",
196 | "repo_def_branch" : "master",
197 | "repo_name" : "Net-Whois-IANA",
198 | "repo_owner" : "atoomic",
199 | "uses_rt" : false,
200 | "ver" : "0.49"
201 | },
202 | {
203 | "auth" : "ATOOMIC",
204 | "bugtracker" : "https://github.com/mschilli/oauth-cmdline/issues",
205 | "date" : "2022-01-28",
206 | "dist" : "OAuth-Cmdline",
207 | "insecure_repo" : false,
208 | "name" : "OAuth-Cmdline-0.07",
209 | "repo" : "https://github.com/mschilli/oauth-cmdline.git",
210 | "repo_def_branch" : "master",
211 | "repo_name" : "oauth-cmdline",
212 | "repo_owner" : "mschilli",
213 | "uses_rt" : false,
214 | "ver" : "0.07"
215 | },
216 | {
217 | "auth" : "ATOOMIC",
218 | "bugtracker" : "https://github.com/atoomic/OpenStack-MetaAPI/issues",
219 | "date" : "2019-04-29",
220 | "dist" : "OpenStack-MetaAPI",
221 | "insecure_repo" : false,
222 | "name" : "OpenStack-MetaAPI-0.003",
223 | "repo" : "https://github.com/atoomic/OpenStack-MetaAPI.git",
224 | "repo_def_branch" : "master",
225 | "repo_name" : "OpenStack-MetaAPI",
226 | "repo_owner" : "atoomic",
227 | "uses_rt" : false,
228 | "ver" : "0.003"
229 | },
230 | {
231 | "auth" : "ATOOMIC",
232 | "bugtracker" : "https://github.com/CpanelInc/Overload-FileCheck/issues",
233 | "date" : "2022-02-23",
234 | "dist" : "Overload-FileCheck",
235 | "insecure_repo" : false,
236 | "name" : "Overload-FileCheck-0.013",
237 | "repo" : "https://github.com/CpanelInc/Overload-FileCheck.git",
238 | "repo_def_branch" : "master",
239 | "repo_name" : "Overload-FileCheck",
240 | "repo_owner" : "CpanelInc",
241 | "uses_rt" : false,
242 | "ver" : "0.013"
243 | },
244 | {
245 | "auth" : "ATOOMIC",
246 | "bugtracker" : "https://github.com/atoomic/Parallel-Subs/issues",
247 | "date" : "2018-03-20",
248 | "dist" : "Parallel-Subs",
249 | "insecure_repo" : false,
250 | "name" : "Parallel-Subs-0.002",
251 | "repo" : "https://github.com/atoomic/Parallel-Subs",
252 | "repo_def_branch" : "master",
253 | "repo_name" : "Parallel-Subs",
254 | "repo_owner" : "atoomic",
255 | "uses_rt" : false,
256 | "ver" : "0.002"
257 | },
258 | {
259 | "auth" : "ATOOMIC",
260 | "bugtracker" : "https://github.com/atoomic/Perl-Critic-Policy-PreferredModules/issues",
261 | "date" : "2022-01-24",
262 | "dist" : "Perl-Critic-Policy-PreferredModules",
263 | "insecure_repo" : false,
264 | "name" : "Perl-Critic-Policy-PreferredModules-0.004",
265 | "repo" : "https://github.com/atoomic/Perl-Critic-Policy-PreferredModules.git",
266 | "repo_def_branch" : "master",
267 | "repo_name" : "Perl-Critic-Policy-PreferredModules",
268 | "repo_owner" : "atoomic",
269 | "uses_rt" : false,
270 | "ver" : "0.004"
271 | },
272 | {
273 | "auth" : "ATOOMIC",
274 | "bugtracker" : "https://github.com/kohts/Schedule--Cron--Events/issues",
275 | "date" : "2020-01-20",
276 | "dist" : "Schedule-Cron-Events",
277 | "insecure_repo" : false,
278 | "name" : "Schedule-Cron-Events-1.96",
279 | "repo" : "https://github.com/kohts/Schedule--Cron--Events.git",
280 | "repo_def_branch" : "master",
281 | "repo_name" : "Schedule--Cron--Events",
282 | "repo_owner" : "kohts",
283 | "uses_rt" : false,
284 | "ver" : "1.96"
285 | },
286 | {
287 | "auth" : "ATOOMIC",
288 | "date" : "2020-03-31",
289 | "dist" : "Simple-Accessor",
290 | "insecure_repo" : false,
291 | "name" : "Simple-Accessor-1.13",
292 | "repo" : "https://github.com/atoomic/Simple-Accessor",
293 | "repo_def_branch" : "master",
294 | "repo_name" : "Simple-Accessor",
295 | "repo_owner" : "atoomic",
296 | "ver" : "1.13"
297 | },
298 | {
299 | "auth" : "ATOOMIC",
300 | "bugtracker" : "https://github.com/atoomic/Slack-WebHook/issues",
301 | "date" : "2020-09-01",
302 | "dist" : "Slack-WebHook",
303 | "insecure_repo" : false,
304 | "name" : "Slack-WebHook-0.003",
305 | "repo" : "https://github.com/atoomic/Slack-WebHook.git",
306 | "repo_def_branch" : "master",
307 | "repo_name" : "Slack-WebHook",
308 | "repo_owner" : "atoomic",
309 | "uses_rt" : false,
310 | "ver" : "0.003"
311 | },
312 | {
313 | "auth" : "ATOOMIC",
314 | "bugtracker" : "https://github.com/atoomic/Test-Mojo-Role-Debug-JSON/issues",
315 | "date" : "2020-03-27",
316 | "dist" : "Test-Mojo-Role-Debug-JSON",
317 | "insecure_repo" : false,
318 | "name" : "Test-Mojo-Role-Debug-JSON-0.005",
319 | "repo" : "https://github.com/atoomic/Test-Mojo-Role-Debug-JSON",
320 | "repo_def_branch" : "master",
321 | "repo_name" : "Test-Mojo-Role-Debug-JSON",
322 | "repo_owner" : "atoomic",
323 | "uses_rt" : false,
324 | "ver" : "0.005"
325 | },
326 | {
327 | "auth" : "ATOOMIC",
328 | "bugtracker" : "https://github.com/Perl/perl5/issues",
329 | "date" : "2020-08-10",
330 | "dist" : "Time-HiRes",
331 | "insecure_repo" : false,
332 | "name" : "Time-HiRes-1.9764",
333 | "repo" : "https://github.com/Perl/perl5.git",
334 | "repo_def_branch" : "blead",
335 | "repo_name" : "perl5",
336 | "repo_owner" : "Perl",
337 | "uses_rt" : false,
338 | "ver" : "1.9764"
339 | },
340 | {
341 | "auth" : "ATOOMIC",
342 | "bugtracker" : "https://github.com/atoomic/perl-TimeDate/issues",
343 | "date" : "2020-05-19",
344 | "dist" : "TimeDate",
345 | "insecure_repo" : false,
346 | "name" : "TimeDate-2.33",
347 | "repo" : "https://github.com/atoomic/perl-TimeDate",
348 | "repo_def_branch" : "master",
349 | "repo_name" : "perl-TimeDate",
350 | "repo_owner" : "atoomic",
351 | "uses_rt" : false,
352 | "ver" : "2.33"
353 | },
354 | {
355 | "auth" : "ATOOMIC",
356 | "bugtracker" : "https://github.com/atoomic/XS-Logger/issues",
357 | "date" : "2018-05-21",
358 | "dist" : "XS-Logger",
359 | "insecure_repo" : false,
360 | "name" : "XS-Logger-0.005",
361 | "repo" : "https://github.com/atoomic/XS-Logger.git",
362 | "repo_def_branch" : "master",
363 | "repo_name" : "XS-Logger",
364 | "repo_owner" : "atoomic",
365 | "uses_rt" : false,
366 | "ver" : "0.005"
367 | },
368 | {
369 | "auth" : "ATOOMIC",
370 | "bugtracker" : "https://github.com/atoomic/XString/issues",
371 | "date" : "2020-10-20",
372 | "dist" : "XString",
373 | "insecure_repo" : false,
374 | "name" : "XString-0.005",
375 | "repo" : "https://github.com/atoomic/XString.git",
376 | "repo_def_branch" : "master",
377 | "repo_name" : "XString",
378 | "repo_owner" : "atoomic",
379 | "uses_rt" : false,
380 | "ver" : "0.005"
381 | }
382 | ],
383 | "sort" : {
384 | "column" : 0,
385 | "direction" : "asc"
386 | }
387 | }
388 |
--------------------------------------------------------------------------------
/authors/data/BYTEROCK/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "BYTEROCK",
4 | "github" : "byterock",
5 | "gravatar" : "https://secure.gravatar.com/avatar/48b6c6e939091d3232825ec95a816128?s=130&d=identicon",
6 | "name" : "John Scoles"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 1,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "BYTEROCK",
23 | "bugtracker" : "https://github.com/byterock/Mojolicious_Command_generate_routes_restsful/issues",
24 | "date" : "2016-12-12",
25 | "dist" : "Mojolicious-Command-generate-routes_restsful",
26 | "insecure_repo" : false,
27 | "name" : "Mojolicious-Command-generate-routes_restsful-0.02",
28 | "repo" : "https://github.com/byterock/Mojolicious_Command_generate_routes_restsful",
29 | "repo_def_branch" : "",
30 | "repo_name" : "Mojolicious_Command_generate_routes_restsful",
31 | "repo_owner" : "byterock",
32 | "uses_rt" : false,
33 | "ver" : "0.02"
34 | },
35 | {
36 | "auth" : "BYTEROCK",
37 | "bugtracker" : "https://github.com/byterock/Mojolicious_Command_generate_routes_restsful_just_routes/issues",
38 | "date" : "2016-12-12",
39 | "dist" : "Mojolicious-Command-generate-routes_restsful_just_routes",
40 | "insecure_repo" : false,
41 | "name" : "Mojolicious-Command-generate-routes_restsful_just_routes-0.01",
42 | "repo" : "https://github.com/byterock/Mojolicious_Command_generate_routes_restsful",
43 | "repo_def_branch" : "",
44 | "repo_name" : "Mojolicious_Command_generate_routes_restsful",
45 | "repo_owner" : "byterock",
46 | "uses_rt" : false,
47 | "ver" : "0.01"
48 | },
49 | {
50 | "auth" : "BYTEROCK",
51 | "bugtracker" : "https://github.com/byterock/mojolicious-plugin-authorization/issues",
52 | "date" : "2021-05-19",
53 | "dist" : "Mojolicious-Plugin-Authorization",
54 | "insecure_repo" : false,
55 | "name" : "Mojolicious-Plugin-Authorization-1.06",
56 | "repo" : "https://github.com/byterock/mojolicious-plugin-authorization",
57 | "repo_def_branch" : "master",
58 | "repo_name" : "mojolicious-plugin-authorization",
59 | "repo_owner" : "byterock",
60 | "uses_rt" : false,
61 | "ver" : "1.06"
62 | },
63 | {
64 | "auth" : "BYTEROCK",
65 | "bugtracker" : "https://github.com/byterock/mojolicious-plugin-routes-restful/issues",
66 | "date" : "2023-01-30",
67 | "dist" : "Mojolicious-Plugin-Routes-Restful",
68 | "insecure_repo" : false,
69 | "name" : "Mojolicious-Plugin-Routes-Restful-0.04",
70 | "repo" : "https://github.com/byterock/mojolicious-plugin-routes-restful",
71 | "repo_def_branch" : "master",
72 | "repo_name" : "mojolicious-plugin-routes-restful",
73 | "repo_owner" : "byterock",
74 | "uses_rt" : false,
75 | "ver" : "0.04"
76 | },
77 | {
78 | "auth" : "BYTEROCK",
79 | "date" : "2014-03-22",
80 | "dist" : "Orignal",
81 | "insecure_repo" : false,
82 | "name" : "Orignal-0.04",
83 | "repo" : "https://github.com/byterock/Orignal",
84 | "repo_def_branch" : "master",
85 | "repo_name" : "Orignal",
86 | "repo_owner" : "byterock",
87 | "ver" : "0.04"
88 | }
89 | ],
90 | "sort" : {
91 | "column" : 0,
92 | "direction" : "asc"
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/authors/data/CROMEDOME/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "CROMEDOME",
4 | "github" : "cromedome",
5 | "gravatar" : "https://secure.gravatar.com/avatar/fcf781200bb62080ccf106bac3d24937.png",
6 | "name" : "Jason A. Crome"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 0,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "CROMEDOME",
23 | "date" : "2011-01-06",
24 | "dist" : "CGI-Application-Plugin-CAPTCHA",
25 | "insecure_repo" : false,
26 | "name" : "CGI-Application-Plugin-CAPTCHA-0.04",
27 | "repo" : "https://github.com/cromedome/cgi-application-plugin-captcha",
28 | "repo_def_branch" : "master",
29 | "repo_name" : "cgi-application-plugin-captcha",
30 | "repo_owner" : "cromedome",
31 | "ver" : "0.04"
32 | },
33 | {
34 | "auth" : "CROMEDOME",
35 | "bugtracker" : "https://github.com/PerlDancer/dancer-debug/issues",
36 | "date" : "2024-04-14",
37 | "dist" : "Dancer-Debug",
38 | "insecure_repo" : false,
39 | "name" : "Dancer-Debug-0.04",
40 | "repo" : "git://github.com/PerlDancer/dancer-debug.git",
41 | "repo_def_branch" : "main",
42 | "repo_name" : "dancer-debug",
43 | "repo_owner" : "PerlDancer",
44 | "uses_rt" : false,
45 | "ver" : "0.04"
46 | },
47 | {
48 | "auth" : "CROMEDOME",
49 | "bugtracker" : "https://github.com/cromedome/Dancer-Plugin-reCAPTCHA/issues",
50 | "date" : "2018-11-10",
51 | "dist" : "Dancer-Plugin-reCAPTCHA",
52 | "insecure_repo" : false,
53 | "name" : "Dancer-Plugin-reCAPTCHA-0.91",
54 | "repo" : "https://github.com/cromedome/Dancer-Plugin-reCAPTCHA",
55 | "repo_def_branch" : "master",
56 | "repo_name" : "Dancer-Plugin-reCAPTCHA",
57 | "repo_owner" : "cromedome",
58 | "uses_rt" : false,
59 | "ver" : "0.91"
60 | },
61 | {
62 | "auth" : "CROMEDOME",
63 | "bugtracker" : "https://github.com/PerlDancer/dancer-session-psgi/issues",
64 | "date" : "2024-04-14",
65 | "dist" : "Dancer-Session-PSGI",
66 | "insecure_repo" : false,
67 | "name" : "Dancer-Session-PSGI-0.02",
68 | "repo" : "git://github.com/PerlDancer/dancer-session-psgi.git",
69 | "repo_def_branch" : "main",
70 | "repo_name" : "dancer-session-psgi",
71 | "repo_owner" : "PerlDancer",
72 | "uses_rt" : false,
73 | "ver" : "0.02"
74 | },
75 | {
76 | "auth" : "CROMEDOME",
77 | "bugtracker" : "https://github.com/PerlDancer/dancer-template-xslate/issues",
78 | "date" : "2024-04-14",
79 | "dist" : "Dancer-Template-Xslate",
80 | "insecure_repo" : false,
81 | "name" : "Dancer-Template-Xslate-0.04",
82 | "repo" : "https://github.com/PerlDancer/dancer-template-xslate",
83 | "repo_def_branch" : "main",
84 | "repo_name" : "dancer-template-xslate",
85 | "repo_owner" : "PerlDancer",
86 | "uses_rt" : false,
87 | "ver" : "0.04"
88 | },
89 | {
90 | "auth" : "CROMEDOME",
91 | "bugtracker" : "https://github.com/PerlDancer/Dancer2/issues",
92 | "date" : "2024-07-18",
93 | "dist" : "Dancer2",
94 | "insecure_repo" : false,
95 | "name" : "Dancer2-1.1.1",
96 | "repo" : "https://github.com/PerlDancer/Dancer2",
97 | "repo_def_branch" : "main",
98 | "repo_name" : "Dancer2",
99 | "repo_owner" : "PerlDancer",
100 | "uses_rt" : false,
101 | "ver" : "1.1.1"
102 | },
103 | {
104 | "auth" : "CROMEDOME",
105 | "bugtracker" : "https://github.com/cromedome/Dancer2-Logger-Log4perl/issues",
106 | "date" : "2023-12-17",
107 | "dist" : "Dancer2-Logger-Log4perl",
108 | "insecure_repo" : false,
109 | "name" : "Dancer2-Logger-Log4perl-0.07",
110 | "repo" : "https://github.com/cromedome/Dancer2-Logger-Log4perl",
111 | "repo_def_branch" : "master",
112 | "repo_name" : "Dancer2-Logger-Log4perl",
113 | "repo_owner" : "cromedome",
114 | "uses_rt" : false,
115 | "ver" : "0.07"
116 | },
117 | {
118 | "auth" : "CROMEDOME",
119 | "bugtracker" : "https://github.com/PerlDancer/Dancer2-Plugin-Ajax/issues",
120 | "date" : "2018-11-13",
121 | "dist" : "Dancer2-Plugin-Ajax",
122 | "insecure_repo" : false,
123 | "name" : "Dancer2-Plugin-Ajax-0.400000",
124 | "repo" : "https://github.com/PerlDancer/Dancer2-Plugin-Ajax",
125 | "repo_def_branch" : "master",
126 | "repo_name" : "Dancer2-Plugin-Ajax",
127 | "repo_owner" : "PerlDancer",
128 | "uses_rt" : false,
129 | "ver" : "0.400000"
130 | },
131 | {
132 | "auth" : "CROMEDOME",
133 | "bugtracker" : "https://github.com/cromedome/Dancer2-Plugin-Minion/issues",
134 | "date" : "2024-07-06",
135 | "dist" : "Dancer2-Plugin-Minion",
136 | "insecure_repo" : false,
137 | "name" : "Dancer2-Plugin-Minion-1.0.0",
138 | "repo" : "https://github.com/cromedome/Dancer2-Plugin-Minion",
139 | "repo_def_branch" : "main",
140 | "repo_name" : "Dancer2-Plugin-Minion",
141 | "repo_owner" : "cromedome",
142 | "uses_rt" : false,
143 | "ver" : "1.0.0"
144 | },
145 | {
146 | "auth" : "CROMEDOME",
147 | "bugtracker" : "https://github.com/PerlDancer/dancer2-plugin-queue/issues",
148 | "date" : "2016-01-26",
149 | "dist" : "Dancer2-Plugin-Queue",
150 | "insecure_repo" : false,
151 | "name" : "Dancer2-Plugin-Queue-0.006",
152 | "repo" : "https://github.com/PerlDancer/dancer2-plugin-queue",
153 | "repo_def_branch" : "master",
154 | "repo_name" : "dancer2-plugin-queue",
155 | "repo_owner" : "PerlDancer",
156 | "uses_rt" : false,
157 | "ver" : "0.006"
158 | },
159 | {
160 | "auth" : "CROMEDOME",
161 | "bugtracker" : "https://github.com/dagolden/dancer2-plugin-syntax-getpost/issues",
162 | "date" : "2023-12-13",
163 | "dist" : "Dancer2-Plugin-Syntax-GetPost",
164 | "insecure_repo" : false,
165 | "name" : "Dancer2-Plugin-Syntax-GetPost-0.003",
166 | "repo" : "https://github.com/dagolden/dancer2-plugin-syntax-getpost",
167 | "repo_def_branch" : "main",
168 | "repo_name" : "dancer2-plugin-syntax-getpost",
169 | "repo_owner" : "dagolden",
170 | "uses_rt" : false,
171 | "ver" : "0.002"
172 | },
173 | {
174 | "auth" : "CROMEDOME",
175 | "bugtracker" : "https://github.com/cromedome/Dancer2-Plugin-Syntax-ParamKeywords/issues",
176 | "date" : "2021-05-14",
177 | "dist" : "Dancer2-Plugin-Syntax-ParamKeywords",
178 | "insecure_repo" : false,
179 | "name" : "Dancer2-Plugin-Syntax-ParamKeywords-0.2.0",
180 | "repo" : "https://github.com/cromedome/Dancer2-Plugin-Syntax-ParamKeywords",
181 | "repo_def_branch" : "main",
182 | "repo_name" : "Dancer2-Plugin-Syntax-ParamKeywords",
183 | "repo_owner" : "cromedome",
184 | "uses_rt" : false,
185 | "ver" : "0.2.0"
186 | },
187 | {
188 | "auth" : "CROMEDOME",
189 | "bugtracker" : "https://github.com/cromedome/Dancer2-Session-CHI/issues",
190 | "date" : "2023-02-05",
191 | "dist" : "Dancer2-Session-CHI",
192 | "insecure_repo" : false,
193 | "name" : "Dancer2-Session-CHI-0.05",
194 | "repo" : "https://github.com/cromedome/Dancer2-Session-CHI",
195 | "repo_def_branch" : "master",
196 | "repo_name" : "Dancer2-Session-CHI",
197 | "repo_owner" : "cromedome",
198 | "uses_rt" : false,
199 | "ver" : "0.05"
200 | },
201 | {
202 | "auth" : "CROMEDOME",
203 | "bugtracker" : "https://github.com/PerlDancer/dancer2-session-json/issues",
204 | "date" : "2020-04-10",
205 | "dist" : "Dancer2-Session-JSON",
206 | "insecure_repo" : false,
207 | "name" : "Dancer2-Session-JSON-0.003",
208 | "repo" : "https://github.com/PerlDancer/dancer2-session-json",
209 | "repo_def_branch" : "master",
210 | "repo_name" : "dancer2-session-json",
211 | "repo_owner" : "PerlDancer",
212 | "uses_rt" : false,
213 | "ver" : "0.003"
214 | },
215 | {
216 | "auth" : "CROMEDOME",
217 | "bugtracker" : "https://github.com/PerlDancer/dancer2-session-mongodb/issues",
218 | "date" : "2016-08-17",
219 | "dist" : "Dancer2-Session-MongoDB",
220 | "insecure_repo" : false,
221 | "name" : "Dancer2-Session-MongoDB-0.004",
222 | "repo" : "https://github.com/PerlDancer/dancer2-session-mongodb",
223 | "repo_def_branch" : "master",
224 | "repo_name" : "dancer2-session-mongodb",
225 | "repo_owner" : "PerlDancer",
226 | "uses_rt" : false,
227 | "ver" : "0.004"
228 | },
229 | {
230 | "auth" : "CROMEDOME",
231 | "bugtracker" : "https://github.com/PerlDancer/dancer2-template-xslate/issues",
232 | "date" : "2023-02-05",
233 | "dist" : "Dancer2-Template-Xslate",
234 | "insecure_repo" : false,
235 | "name" : "Dancer2-Template-Xslate-v0.2.0",
236 | "repo" : "git://github.com/PerlDancer/dancer2-template-xslate.git",
237 | "repo_def_branch" : "master",
238 | "repo_name" : "dancer2-template-xslate",
239 | "repo_owner" : "PerlDancer",
240 | "uses_rt" : false,
241 | "ver" : "v0.2.0"
242 | }
243 | ],
244 | "sort" : {
245 | "column" : 0,
246 | "direction" : "asc"
247 | }
248 | }
249 |
--------------------------------------------------------------------------------
/authors/data/DAVECROSS/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "DAVECROSS",
4 | "github" : "davorg",
5 | "gravatar" : "https://secure.gravatar.com/avatar/d9f8bf9efe6afedec1b5b4ea24301933?s=130&d=identicon",
6 | "name" : "Dave Cross"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 1,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "DAVECROSS",
23 | "bugtracker" : "https://github.com/davorg-cpan/amazon-sites/issues",
24 | "date" : "2024-08-30",
25 | "dist" : "Amazon-Sites",
26 | "insecure_repo" : false,
27 | "name" : "Amazon-Sites-0.1.7",
28 | "repo" : "https://github.com/davorg-cpan/amazon-sites",
29 | "repo_def_branch" : "main",
30 | "repo_name" : "amazon-sites",
31 | "repo_owner" : "davorg-cpan",
32 | "uses_rt" : false,
33 | "ver" : "v0.1.7"
34 | },
35 | {
36 | "auth" : "DAVECROSS",
37 | "bugtracker" : "https://github.com/davorg-cpan/app-aphra/issues",
38 | "date" : "2024-08-13",
39 | "dist" : "App-Aphra",
40 | "insecure_repo" : false,
41 | "name" : "App-Aphra-0.2.1",
42 | "repo" : "https://github.com/davorg-cpan/app-aphra",
43 | "repo_def_branch" : "main",
44 | "repo_name" : "app-aphra",
45 | "repo_owner" : "davorg-cpan",
46 | "uses_rt" : false,
47 | "ver" : "v0.2.1"
48 | },
49 | {
50 | "auth" : "DAVECROSS",
51 | "bugtracker" : "https://github.com/davorg-cpan/app-cpanmodulesite/issues",
52 | "date" : "2024-01-24",
53 | "dist" : "App-CPANModuleSite",
54 | "insecure_repo" : false,
55 | "name" : "App-CPANModuleSite-0.0.10",
56 | "repo" : "https://github.com/davorg-cpan/app-cpanmodulesite",
57 | "repo_def_branch" : "main",
58 | "repo_name" : "app-cpanmodulesite",
59 | "repo_owner" : "davorg-cpan",
60 | "uses_rt" : false,
61 | "ver" : "v0.0.10"
62 | },
63 | {
64 | "auth" : "DAVECROSS",
65 | "bugtracker" : "https://github.com/davorg/app-httpthis/issues",
66 | "date" : "2023-06-21",
67 | "dist" : "App-HTTPThis",
68 | "insecure_repo" : false,
69 | "name" : "App-HTTPThis-0.009",
70 | "repo" : "https://github.com/davorg/app-httpthis",
71 | "repo_def_branch" : "master",
72 | "repo_name" : "app-httpthis",
73 | "repo_owner" : "davorg",
74 | "uses_rt" : false,
75 | "ver" : "0.009"
76 | },
77 | {
78 | "auth" : "DAVECROSS",
79 | "bugtracker" : "https://github.com/davorg-cpan/app-laststats/issues",
80 | "date" : "2024-08-29",
81 | "dist" : "App-LastStats",
82 | "insecure_repo" : false,
83 | "name" : "App-LastStats-0.0.8",
84 | "repo" : "https://github.com/davorg-cpan/app-laststats",
85 | "repo_def_branch" : "main",
86 | "repo_name" : "app-laststats",
87 | "repo_owner" : "davorg-cpan",
88 | "uses_rt" : false,
89 | "ver" : "v0.0.8"
90 | },
91 | {
92 | "auth" : "DAVECROSS",
93 | "bugtracker" : "https://github.com/davorg-cpan/app-mergecal/issues",
94 | "date" : "2024-08-18",
95 | "dist" : "App-MergeCal",
96 | "insecure_repo" : false,
97 | "name" : "App-MergeCal-0.0.5",
98 | "repo" : "https://github.com/davorg-cpan/app-mergecal",
99 | "repo_def_branch" : "main",
100 | "repo_name" : "app-mergecal",
101 | "repo_owner" : "davorg-cpan",
102 | "uses_rt" : false,
103 | "ver" : "v0.0.5"
104 | },
105 | {
106 | "auth" : "DAVECROSS",
107 | "bugtracker" : "https://github.com/davorg/array-compare/issues",
108 | "date" : "2020-12-21",
109 | "dist" : "Array-Compare",
110 | "insecure_repo" : false,
111 | "name" : "Array-Compare-v3.0.8",
112 | "repo" : "https://github.com/davorg/array-compare",
113 | "repo_def_branch" : "master",
114 | "repo_name" : "array-compare",
115 | "repo_owner" : "davorg",
116 | "uses_rt" : false,
117 | "ver" : "v3.0.8"
118 | },
119 | {
120 | "auth" : "DAVECROSS",
121 | "bugtracker" : "https://github.com/davorg/audiofile-info-mp3-id3lib/issues",
122 | "date" : "2021-03-02",
123 | "dist" : "AudioFile-Info-MP3-ID3Lib",
124 | "insecure_repo" : false,
125 | "name" : "AudioFile-Info-MP3-ID3Lib-v1.8.1",
126 | "repo" : "https://github.com/davorg/audiofile-info-mp3-id3lib",
127 | "repo_def_branch" : "master",
128 | "repo_name" : "audiofile-info-mp3-id3lib",
129 | "repo_owner" : "davorg",
130 | "uses_rt" : false,
131 | "ver" : "v1.8.1"
132 | },
133 | {
134 | "auth" : "DAVECROSS",
135 | "bugtracker" : "https://github.com/davorg/audiofile-info-mp3-info/issues",
136 | "date" : "2024-01-04",
137 | "dist" : "AudioFile-Info-MP3-Info",
138 | "insecure_repo" : false,
139 | "name" : "AudioFile-Info-MP3-Info-v1.5.1",
140 | "repo" : "https://github.com/davorg/audiofile-info-mp3-info",
141 | "repo_def_branch" : "master",
142 | "repo_name" : "audiofile-info-mp3-info",
143 | "repo_owner" : "davorg",
144 | "uses_rt" : false,
145 | "ver" : "v1.5.1"
146 | },
147 | {
148 | "auth" : "DAVECROSS",
149 | "bugtracker" : "https://github.com/davorg/audiofile-info-mp3-tag/issues",
150 | "date" : "2023-12-28",
151 | "dist" : "AudioFile-Info-MP3-Tag",
152 | "insecure_repo" : false,
153 | "name" : "AudioFile-Info-MP3-Tag-v1.6.4",
154 | "repo" : "https://github.com/davorg/audiofile-info-mp3-tag",
155 | "repo_def_branch" : "master",
156 | "repo_name" : "audiofile-info-mp3-tag",
157 | "repo_owner" : "davorg",
158 | "uses_rt" : false,
159 | "ver" : "v1.6.4"
160 | },
161 | {
162 | "auth" : "DAVECROSS",
163 | "bugtracker" : "https://github.com/davorg/audiofile-info-ogg-vorbis-header-pureperl/issues",
164 | "date" : "2021-01-23",
165 | "dist" : "AudioFile-Info-Ogg-Vorbis-Header-PurePerl",
166 | "insecure_repo" : false,
167 | "name" : "AudioFile-Info-Ogg-Vorbis-Header-PurePerl-v1.5.5",
168 | "repo" : "https://github.com/davorg/audiofile-info-ogg-vorbis-header-pureperl",
169 | "repo_def_branch" : "master",
170 | "repo_name" : "audiofile-info-ogg-vorbis-header-pureperl",
171 | "repo_owner" : "davorg",
172 | "uses_rt" : false,
173 | "ver" : "v1.5.5"
174 | },
175 | {
176 | "auth" : "DAVECROSS",
177 | "bugtracker" : "https://github.com/davorg/audiofile-info-ogg-vorbis-header/issues",
178 | "date" : "2021-01-04",
179 | "dist" : "AudioFile-Info-Ogg-Vorbis-Header",
180 | "insecure_repo" : false,
181 | "name" : "AudioFile-Info-Ogg-Vorbis-Header-v1.8.3",
182 | "repo" : "https://github.com/davorg/audiofile-info-ogg-vorbis-header",
183 | "repo_def_branch" : "master",
184 | "repo_name" : "audiofile-info-ogg-vorbis-header",
185 | "repo_owner" : "davorg",
186 | "uses_rt" : false,
187 | "ver" : "v1.8.3"
188 | },
189 | {
190 | "auth" : "DAVECROSS",
191 | "bugtracker" : "https://github.com/davorg/audiofile-info/issues",
192 | "date" : "2021-01-04",
193 | "dist" : "AudioFile-Info",
194 | "insecure_repo" : false,
195 | "name" : "AudioFile-Info-v2.0.2",
196 | "repo" : "https://github.com/davorg/audiofile-info",
197 | "repo_def_branch" : "master",
198 | "repo_name" : "audiofile-info",
199 | "repo_owner" : "davorg",
200 | "uses_rt" : false,
201 | "ver" : "v2.0.2"
202 | },
203 | {
204 | "auth" : "DAVECROSS",
205 | "bugtracker" : "https://github.com/davorg-cpan/calendar-simple/issues",
206 | "date" : "2024-05-04",
207 | "dist" : "Calendar-Simple",
208 | "insecure_repo" : false,
209 | "name" : "Calendar-Simple-v2.1.0",
210 | "repo" : "https://github.com/davorg-cpan/calendar-simple",
211 | "repo_def_branch" : "master",
212 | "repo_name" : "calendar-simple",
213 | "repo_owner" : "davorg-cpan",
214 | "uses_rt" : false,
215 | "ver" : "v2.1.0"
216 | },
217 | {
218 | "auth" : "DAVECROSS",
219 | "date" : "2022-10-18",
220 | "dist" : "Feed-Find",
221 | "insecure_repo" : false,
222 | "name" : "Feed-Find-0.13",
223 | "repo" : "git://github.com/davorg/Feed-Find.git",
224 | "repo_def_branch" : "master",
225 | "repo_name" : "Feed-Find",
226 | "repo_owner" : "davorg",
227 | "ver" : "0.13"
228 | },
229 | {
230 | "auth" : "DAVECROSS",
231 | "bugtracker" : "https://github.com/davorg/genealogy-ahnentafel/issues",
232 | "date" : "2021-01-22",
233 | "dist" : "Genealogy-Ahnentafel",
234 | "insecure_repo" : false,
235 | "name" : "Genealogy-Ahnentafel-1.0.3",
236 | "repo" : "https://github.com/davorg/genealogy-ahnentafel",
237 | "repo_def_branch" : "master",
238 | "repo_name" : "genealogy-ahnentafel",
239 | "repo_owner" : "davorg",
240 | "uses_rt" : false,
241 | "ver" : "v1.0.3"
242 | },
243 | {
244 | "auth" : "DAVECROSS",
245 | "bugtracker" : "https://github.com/davorg/genealogy-ancestorchart/issues",
246 | "date" : "2022-02-15",
247 | "dist" : "Genealogy-AncestorChart",
248 | "insecure_repo" : false,
249 | "name" : "Genealogy-AncestorChart-0.0.2",
250 | "repo" : "https://github.com/davorg/genealogy-ancestorchart",
251 | "repo_def_branch" : "main",
252 | "repo_name" : "genealogy-ancestorchart",
253 | "repo_owner" : "davorg",
254 | "uses_rt" : false,
255 | "ver" : "v0.0.2"
256 | },
257 | {
258 | "auth" : "DAVECROSS",
259 | "bugtracker" : "https://github.com/davorg/genealogy-relationship/issues",
260 | "date" : "2023-05-24",
261 | "dist" : "Genealogy-Relationship",
262 | "insecure_repo" : false,
263 | "name" : "Genealogy-Relationship-0.2.0",
264 | "repo" : "https://github.com/davorg/genealogy-relationship",
265 | "repo_def_branch" : "master",
266 | "repo_name" : "genealogy-relationship",
267 | "repo_owner" : "davorg",
268 | "uses_rt" : false,
269 | "ver" : "v0.2.0"
270 | },
271 | {
272 | "auth" : "DAVECROSS",
273 | "bugtracker" : "https://github.com/tokuhirom/HTML-TreeBuilder-LibXML/issues",
274 | "date" : "2024-06-20",
275 | "dist" : "HTML-TreeBuilder-LibXML",
276 | "insecure_repo" : false,
277 | "name" : "HTML-TreeBuilder-LibXML-0.28",
278 | "repo" : "https://github.com/tokuhirom/HTML-TreeBuilder-LibXML",
279 | "repo_def_branch" : "master",
280 | "repo_name" : "HTML-TreeBuilder-LibXML",
281 | "repo_owner" : "tokuhirom",
282 | "uses_rt" : false,
283 | "ver" : "0.28"
284 | },
285 | {
286 | "auth" : "DAVECROSS",
287 | "bugtracker" : "https://github.com/davorg/moox-role-json_ld/issues",
288 | "date" : "2021-06-06",
289 | "dist" : "MooX-Role-JSON_LD",
290 | "insecure_repo" : false,
291 | "name" : "MooX-Role-JSON_LD-1.0.1",
292 | "repo" : "https://github.com/davorg/moox-role-json_ld",
293 | "repo_def_branch" : "master",
294 | "repo_name" : "moox-role-json_ld",
295 | "repo_owner" : "davorg",
296 | "uses_rt" : false,
297 | "ver" : "v1.0.1"
298 | },
299 | {
300 | "auth" : "DAVECROSS",
301 | "bugtracker" : "https://github.com/davorg/net-songkick/issues",
302 | "date" : "2023-07-27",
303 | "dist" : "Net-Songkick",
304 | "insecure_repo" : false,
305 | "name" : "Net-Songkick-v1.0.8",
306 | "repo" : "https://github.com/davorg/net-songkick",
307 | "repo_def_branch" : "master",
308 | "repo_name" : "net-songkick",
309 | "repo_owner" : "davorg",
310 | "uses_rt" : false,
311 | "ver" : "v1.0.8"
312 | },
313 | {
314 | "auth" : "DAVECROSS",
315 | "bugtracker" : "https://github.com/p5-number-fraction/number-fraction/issues",
316 | "date" : "2024-02-25",
317 | "dist" : "Number-Fraction",
318 | "insecure_repo" : false,
319 | "name" : "Number-Fraction-v3.1.0",
320 | "repo" : "https://github.com/p5-number-fraction/number-fraction",
321 | "repo_def_branch" : "master",
322 | "repo_name" : "number-fraction",
323 | "repo_owner" : "p5-number-fraction",
324 | "uses_rt" : false,
325 | "ver" : "v3.1.0"
326 | },
327 | {
328 | "auth" : "DAVECROSS",
329 | "bugtracker" : "https://github.com/davorg/Ogg-Vorbis-Header/issues",
330 | "date" : "2021-01-04",
331 | "dist" : "Ogg-Vorbis-Header",
332 | "insecure_repo" : false,
333 | "name" : "Ogg-Vorbis-Header-0.11",
334 | "repo" : "https://github.com/davorg/Ogg-Vorbis-Header",
335 | "repo_def_branch" : "master",
336 | "repo_name" : "Ogg-Vorbis-Header",
337 | "repo_owner" : "davorg",
338 | "uses_rt" : false,
339 | "ver" : "0.11"
340 | },
341 | {
342 | "auth" : "DAVECROSS",
343 | "bugtracker" : "https://github.com/davorg/perl-ogg-vorbis-header-pureperl/issues",
344 | "date" : "2020-12-06",
345 | "dist" : "Ogg-Vorbis-Header-PurePerl",
346 | "insecure_repo" : false,
347 | "name" : "Ogg-Vorbis-Header-PurePerl-1.05",
348 | "repo" : "https://github.com/davorg/perl-ogg-vorbis-header-pureperl",
349 | "repo_def_branch" : "master",
350 | "repo_name" : "perl-ogg-vorbis-header-pureperl",
351 | "repo_owner" : "davorg",
352 | "uses_rt" : false,
353 | "ver" : "1.05"
354 | },
355 | {
356 | "auth" : "DAVECROSS",
357 | "bugtracker" : "https://github.com/davorg/parse-rpm-spec/issues",
358 | "date" : "2023-01-13",
359 | "dist" : "Parse-RPM-Spec",
360 | "insecure_repo" : false,
361 | "name" : "Parse-RPM-Spec-v1.1.2",
362 | "repo" : "https://github.com/davorg/parse-rpm-spec",
363 | "repo_def_branch" : "master",
364 | "repo_name" : "parse-rpm-spec",
365 | "repo_owner" : "davorg",
366 | "uses_rt" : false,
367 | "ver" : "v1.1.2"
368 | },
369 | {
370 | "auth" : "DAVECROSS",
371 | "bugtracker" : "https://github.com/davorg/perlanet/issues",
372 | "date" : "2023-05-22",
373 | "dist" : "Perlanet",
374 | "insecure_repo" : false,
375 | "name" : "Perlanet-v3.0.3",
376 | "repo" : "https://github.com/davorg/perlanet",
377 | "repo_def_branch" : "master",
378 | "repo_name" : "perlanet",
379 | "repo_owner" : "davorg",
380 | "uses_rt" : false,
381 | "ver" : "v3.0.3"
382 | },
383 | {
384 | "auth" : "DAVECROSS",
385 | "bugtracker" : "https://github.com/davorg/plack-app-directoryindex/issues",
386 | "date" : "2023-06-05",
387 | "dist" : "Plack-App-DirectoryIndex",
388 | "insecure_repo" : false,
389 | "name" : "Plack-App-DirectoryIndex-0.0.4",
390 | "repo" : "https://github.com/davorg/plack-app-directoryindex",
391 | "repo_def_branch" : "main",
392 | "repo_name" : "plack-app-directoryindex",
393 | "repo_owner" : "davorg",
394 | "uses_rt" : false,
395 | "ver" : "v0.0.4"
396 | },
397 | {
398 | "auth" : "DAVECROSS",
399 | "bugtracker" : "https://github.com/ranguard/plack-middleware-dirindex/issues",
400 | "date" : "2022-03-26",
401 | "dist" : "Plack-Middleware-DirIndex",
402 | "insecure_repo" : false,
403 | "name" : "Plack-Middleware-DirIndex-1.01",
404 | "repo" : "https://github.com/ranguard/plack-middleware-dirindex",
405 | "repo_def_branch" : "master",
406 | "repo_name" : "plack-middleware-dirindex",
407 | "repo_owner" : "ranguard",
408 | "uses_rt" : false,
409 | "ver" : "1.01"
410 | },
411 | {
412 | "auth" : "DAVECROSS",
413 | "bugtracker" : "https://github.com/davorg/qmail-queuehandler/issues",
414 | "date" : "2021-01-13",
415 | "dist" : "QMail-QueueHandler",
416 | "insecure_repo" : false,
417 | "name" : "QMail-QueueHandler-2.0.4",
418 | "repo" : "https://github.com/davorg/qmail-queuehandler",
419 | "repo_def_branch" : "master",
420 | "repo_name" : "qmail-queuehandler",
421 | "repo_owner" : "davorg",
422 | "uses_rt" : false,
423 | "ver" : "v2.0.4"
424 | },
425 | {
426 | "auth" : "DAVECROSS",
427 | "bugtracker" : "https://github.com/davorg/svg-christmastree/issues",
428 | "date" : "2021-01-12",
429 | "dist" : "SVG-ChristmasTree",
430 | "insecure_repo" : false,
431 | "name" : "SVG-ChristmasTree-0.0.5",
432 | "repo" : "https://github.com/davorg/svg-christmastree",
433 | "repo_def_branch" : "master",
434 | "repo_name" : "svg-christmastree",
435 | "repo_owner" : "davorg",
436 | "uses_rt" : false,
437 | "ver" : "v0.0.5"
438 | },
439 | {
440 | "auth" : "DAVECROSS",
441 | "bugtracker" : "https://github.com/davorg/svg-timeline/issues",
442 | "date" : "2022-11-01",
443 | "dist" : "SVG-Timeline",
444 | "insecure_repo" : false,
445 | "name" : "SVG-Timeline-0.1.3",
446 | "repo" : "https://github.com/davorg/svg-timeline",
447 | "repo_def_branch" : "master",
448 | "repo_name" : "svg-timeline",
449 | "repo_owner" : "davorg",
450 | "uses_rt" : false,
451 | "ver" : "v0.1.3"
452 | },
453 | {
454 | "auth" : "DAVECROSS",
455 | "bugtracker" : "https://github.com/davorg/svg-timeline-genealogy/issues",
456 | "date" : "2021-03-22",
457 | "dist" : "SVG-Timeline-Genealogy",
458 | "insecure_repo" : false,
459 | "name" : "SVG-Timeline-Genealogy-0.0.5",
460 | "repo" : "https://github.com/davorg/svg-timeline-genealogy",
461 | "repo_def_branch" : "master",
462 | "repo_name" : "svg-timeline-genealogy",
463 | "repo_owner" : "davorg",
464 | "uses_rt" : false,
465 | "ver" : "v0.0.5"
466 | },
467 | {
468 | "auth" : "DAVECROSS",
469 | "bugtracker" : "https://github.com/davorg/svg-trafficlight/issues",
470 | "date" : "2020-12-22",
471 | "dist" : "SVG-TrafficLight",
472 | "insecure_repo" : false,
473 | "name" : "SVG-TrafficLight-0.1.4",
474 | "repo" : "https://github.com/davorg/svg-trafficlight",
475 | "repo_def_branch" : "master",
476 | "repo_name" : "svg-trafficlight",
477 | "repo_owner" : "davorg",
478 | "uses_rt" : false,
479 | "ver" : "v0.1.4"
480 | },
481 | {
482 | "auth" : "DAVECROSS",
483 | "bugtracker" : "https://github.com/davorg/symbol-approx-sub/issues",
484 | "date" : "2021-01-13",
485 | "dist" : "Symbol-Approx-Sub",
486 | "insecure_repo" : false,
487 | "name" : "Symbol-Approx-Sub-v3.1.3",
488 | "repo" : "https://github.com/davorg/symbol-approx-sub",
489 | "repo_def_branch" : "master",
490 | "repo_name" : "symbol-approx-sub",
491 | "repo_owner" : "davorg",
492 | "uses_rt" : false,
493 | "ver" : "v3.1.3"
494 | },
495 | {
496 | "auth" : "DAVECROSS",
497 | "bugtracker" : "https://github.com/mithun/perl-tmdb/issues",
498 | "date" : "2024-04-03",
499 | "dist" : "TMDB",
500 | "insecure_repo" : false,
501 | "name" : "TMDB-v1.2.2",
502 | "repo" : "git://github.com/mithun/perl-tmdb.git",
503 | "repo_def_branch" : "master",
504 | "repo_name" : "perl-tmdb",
505 | "repo_owner" : "mithun",
506 | "uses_rt" : false,
507 | "ver" : "v1.2.2"
508 | },
509 | {
510 | "auth" : "DAVECROSS",
511 | "bugtracker" : "https://github.com/davorg/template-plugin-audiofile-info/issues",
512 | "date" : "2021-01-23",
513 | "dist" : "Template-Plugin-AudioFile-Info",
514 | "insecure_repo" : false,
515 | "name" : "Template-Plugin-AudioFile-Info-v2.0.2",
516 | "repo" : "https://github.com/davorg/template-plugin-audiofile-info",
517 | "repo_def_branch" : "master",
518 | "repo_name" : "template-plugin-audiofile-info",
519 | "repo_owner" : "davorg",
520 | "uses_rt" : false,
521 | "ver" : "v2.0.2"
522 | },
523 | {
524 | "auth" : "DAVECROSS",
525 | "bugtracker" : "https://github.com/davorg/template-plugin-rpm2/issues",
526 | "date" : "2021-01-25",
527 | "dist" : "Template-Plugin-RPM2",
528 | "insecure_repo" : false,
529 | "name" : "Template-Plugin-RPM2-v1.3.4",
530 | "repo" : "https://github.com/davorg/template-plugin-rpm2",
531 | "repo_def_branch" : "master",
532 | "repo_name" : "template-plugin-rpm2",
533 | "repo_owner" : "davorg",
534 | "uses_rt" : false,
535 | "ver" : "v1.3.4"
536 | },
537 | {
538 | "auth" : "DAVECROSS",
539 | "bugtracker" : "https://github.com/davorg/template-plugin-xml-feed/issues",
540 | "date" : "2021-01-28",
541 | "dist" : "Template-Plugin-XML-Feed",
542 | "insecure_repo" : false,
543 | "name" : "Template-Plugin-XML-Feed-v1.0.3",
544 | "repo" : "https://github.com/davorg/template-plugin-xml-feed",
545 | "repo_def_branch" : "master",
546 | "repo_name" : "template-plugin-xml-feed",
547 | "repo_owner" : "davorg",
548 | "uses_rt" : false,
549 | "ver" : "v1.0.3"
550 | },
551 | {
552 | "auth" : "DAVECROSS",
553 | "bugtracker" : "https://github.com/davorg-cpan/template-provider-pandoc/issues",
554 | "date" : "2024-02-22",
555 | "dist" : "Template-Provider-Pandoc",
556 | "insecure_repo" : false,
557 | "name" : "Template-Provider-Pandoc-0.0.5",
558 | "repo" : "https://github.com/davorg-cpan/template-provider-pandoc",
559 | "repo_def_branch" : "master",
560 | "repo_name" : "template-provider-pandoc",
561 | "repo_owner" : "davorg-cpan",
562 | "uses_rt" : false,
563 | "ver" : "v0.0.5"
564 | },
565 | {
566 | "auth" : "DAVECROSS",
567 | "bugtracker" : "https://github.com/davorg/tie-hash-cannabinol/issues",
568 | "date" : "2023-05-25",
569 | "dist" : "Tie-Hash-Cannabinol",
570 | "insecure_repo" : false,
571 | "name" : "Tie-Hash-Cannabinol-v1.12.3",
572 | "repo" : "https://github.com/davorg/tie-hash-cannabinol",
573 | "repo_def_branch" : "master",
574 | "repo_name" : "tie-hash-cannabinol",
575 | "repo_owner" : "davorg",
576 | "uses_rt" : false,
577 | "ver" : "v1.12.3"
578 | },
579 | {
580 | "auth" : "DAVECROSS",
581 | "bugtracker" : "https://github.com/davorg/tie-hash-fixedkeys/issues",
582 | "date" : "2021-01-25",
583 | "dist" : "Tie-Hash-FixedKeys",
584 | "insecure_repo" : false,
585 | "name" : "Tie-Hash-FixedKeys-v1.13.2",
586 | "repo" : "https://github.com/davorg/tie-hash-fixedkeys",
587 | "repo_def_branch" : "master",
588 | "repo_name" : "tie-hash-fixedkeys",
589 | "repo_owner" : "davorg",
590 | "uses_rt" : false,
591 | "ver" : "v1.13.2"
592 | },
593 | {
594 | "auth" : "DAVECROSS",
595 | "bugtracker" : "https://github.com/davorg/tie-hash-regex/issues",
596 | "date" : "2021-01-25",
597 | "dist" : "Tie-Hash-Regex",
598 | "insecure_repo" : false,
599 | "name" : "Tie-Hash-Regex-1.14",
600 | "repo" : "https://github.com/davorg/tie-hash-regex",
601 | "repo_def_branch" : "master",
602 | "repo_name" : "tie-hash-regex",
603 | "repo_owner" : "davorg",
604 | "uses_rt" : false,
605 | "ver" : "1.14"
606 | },
607 | {
608 | "auth" : "DAVECROSS",
609 | "bugtracker" : "https://github.com/davorg-cpan/xml-feed/issues",
610 | "date" : "2024-07-08",
611 | "dist" : "XML-Feed",
612 | "insecure_repo" : false,
613 | "name" : "XML-Feed-0.65",
614 | "repo" : "https://github.com/davorg-cpan/xml-feed",
615 | "repo_def_branch" : "master",
616 | "repo_name" : "xml-feed",
617 | "repo_owner" : "davorg-cpan",
618 | "uses_rt" : false,
619 | "ver" : "0.65"
620 | }
621 | ],
622 | "sort" : {
623 | "column" : 0,
624 | "direction" : "asc"
625 | }
626 | }
627 |
--------------------------------------------------------------------------------
/authors/data/DRCLAW/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "DRCLAW",
4 | "github" : "drclaw1394",
5 | "gravatar" : null,
6 | "name" : "Ruben Westerberg"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_codecov" : 0,
13 | "use_coveralls" : 0,
14 | "use_gh_actions" : 1,
15 | "use_travis" : 0
16 | },
17 | "modules" : [
18 | {
19 | "auth" : "DRCLAW",
20 | "date" : "2022-10-23",
21 | "dist" : "Data-Combination",
22 | "insecure_repo" : true,
23 | "name" : "Data-Combination-0.1.0",
24 | "repo" : "http://github.com/drclaw1394/perl-data-combination",
25 | "repo_def_branch" : "main",
26 | "repo_name" : "perl-data-combination",
27 | "repo_owner" : "drclaw1394",
28 | "ver" : "v0.1.0"
29 | },
30 | {
31 | "auth" : "DRCLAW",
32 | "bugtracker" : "https://github.com/drclaw1394/perl-error-show/issues",
33 | "date" : "2024-04-23",
34 | "dist" : "Error-Show",
35 | "insecure_repo" : false,
36 | "name" : "Error-Show-v0.4.0",
37 | "repo" : "https://github.com/drclaw1394/perl-error-show.git",
38 | "repo_def_branch" : "main",
39 | "repo_name" : "perl-error-show",
40 | "repo_owner" : "drclaw1394",
41 | "uses_rt" : false,
42 | "ver" : "v0.4.0"
43 | },
44 | {
45 | "auth" : "DRCLAW",
46 | "date" : "2023-12-04",
47 | "dist" : "Export-These",
48 | "insecure_repo" : true,
49 | "name" : "Export-These-v0.2.1",
50 | "repo" : "http://github.com/drclaw1394/perl-export-these",
51 | "repo_def_branch" : "main",
52 | "repo_name" : "perl-export-these",
53 | "repo_owner" : "drclaw1394",
54 | "ver" : "v0.2.1"
55 | },
56 | {
57 | "auth" : "DRCLAW",
58 | "date" : "2024-02-27",
59 | "dist" : "File-Meta-Cache",
60 | "insecure_repo" : false,
61 | "name" : "File-Meta-Cache-v0.3.0",
62 | "repo" : "https://github.com/drclaw1394/perl-file-meta-cache",
63 | "repo_def_branch" : "main",
64 | "repo_name" : "perl-file-meta-cache",
65 | "repo_owner" : "drclaw1394",
66 | "ver" : "v0.3.0"
67 | },
68 | {
69 | "auth" : "DRCLAW",
70 | "date" : "2024-01-11",
71 | "dist" : "HTTP-State",
72 | "insecure_repo" : false,
73 | "name" : "HTTP-State-v0.1.2",
74 | "repo" : "https://github.com/drclaw1394/perl-http-state",
75 | "repo_def_branch" : "main",
76 | "repo_name" : "perl-http-state",
77 | "repo_owner" : "drclaw1394",
78 | "ver" : "v0.1.2"
79 | },
80 | {
81 | "auth" : "DRCLAW",
82 | "date" : "2023-06-08",
83 | "dist" : "Hustle-Table",
84 | "insecure_repo" : true,
85 | "name" : "Hustle-Table-v0.6.0",
86 | "repo" : "http://github.com/drclaw1394/perl5-hustle-table",
87 | "repo_def_branch" : "main",
88 | "repo_name" : "perl5-hustle-table",
89 | "repo_owner" : "drclaw1394",
90 | "ver" : "v0.6.0"
91 | },
92 | {
93 | "auth" : "DRCLAW",
94 | "date" : "2024-05-11",
95 | "dist" : "IO-FD",
96 | "insecure_repo" : false,
97 | "name" : "IO-FD-v0.3.9",
98 | "repo" : "https://github.com/drclaw1394/perl-io-fd",
99 | "repo_def_branch" : "main",
100 | "repo_name" : "perl-io-fd",
101 | "repo_owner" : "drclaw1394",
102 | "ver" : "v0.3.9"
103 | },
104 | {
105 | "auth" : "DRCLAW",
106 | "date" : "2023-08-26",
107 | "dist" : "Import-These",
108 | "insecure_repo" : true,
109 | "name" : "Import-These-v0.1.2",
110 | "repo" : "http://github.com/drclaw1394/perl-import-these",
111 | "repo_def_branch" : "main",
112 | "repo_name" : "perl-import-these",
113 | "repo_owner" : "drclaw1394",
114 | "ver" : "v0.1.2"
115 | },
116 | {
117 | "auth" : "DRCLAW",
118 | "date" : "2024-01-10",
119 | "dist" : "List-Insertion",
120 | "insecure_repo" : false,
121 | "name" : "List-Insertion-v0.1.4",
122 | "repo" : "https://github.com/drclaw1394/perl-list-insertion",
123 | "repo_def_branch" : "main",
124 | "repo_name" : "perl-list-insertion",
125 | "repo_owner" : "drclaw1394",
126 | "ver" : "v0.1.4"
127 | },
128 | {
129 | "auth" : "DRCLAW",
130 | "date" : "2023-08-27",
131 | "dist" : "Log-OK",
132 | "insecure_repo" : true,
133 | "name" : "Log-OK-v0.2.1",
134 | "repo" : "http://github.com/drclaw1394/perl-log-ok",
135 | "repo_def_branch" : "main",
136 | "repo_name" : "perl-log-ok",
137 | "repo_owner" : "drclaw1394",
138 | "ver" : "v0.2.1"
139 | },
140 | {
141 | "auth" : "DRCLAW",
142 | "date" : "2023-12-17",
143 | "dist" : "Socket-More-Constants",
144 | "insecure_repo" : false,
145 | "name" : "Socket-More-Constants-v0.1.1",
146 | "repo" : "https://github.com/drclaw1394/perl-socket-more-constants",
147 | "repo_def_branch" : "main",
148 | "repo_name" : "perl-socket-more-constants",
149 | "repo_owner" : "drclaw1394",
150 | "ver" : "v0.1.1"
151 | },
152 | {
153 | "auth" : "DRCLAW",
154 | "date" : "2024-01-15",
155 | "dist" : "Socket-More-Interface",
156 | "insecure_repo" : false,
157 | "name" : "Socket-More-Interface-v0.1.0",
158 | "repo" : "https://github.com/drclaw1394/perl-socket-more-interface",
159 | "repo_def_branch" : "main",
160 | "repo_name" : "perl-socket-more-interface",
161 | "repo_owner" : "drclaw1394",
162 | "ver" : "v0.1.0"
163 | },
164 | {
165 | "auth" : "DRCLAW",
166 | "date" : "2024-01-17",
167 | "dist" : "Socket-More-Lookup",
168 | "insecure_repo" : false,
169 | "name" : "Socket-More-Lookup-v0.1.0",
170 | "repo" : "https://github.com/drclaw1394/perl-socket-more-lookup",
171 | "repo_def_branch" : "main",
172 | "repo_name" : "perl-socket-more-lookup",
173 | "repo_owner" : "drclaw1394",
174 | "ver" : "v0.1.0"
175 | },
176 | {
177 | "auth" : "DRCLAW",
178 | "date" : "2024-01-17",
179 | "dist" : "Socket-More-Resolver",
180 | "insecure_repo" : false,
181 | "name" : "Socket-More-Resolver-v0.1.0",
182 | "repo" : "https://github.com/drclaw1394/perl-socket-more-resolver",
183 | "repo_def_branch" : "main",
184 | "repo_name" : "perl-socket-more-resolver",
185 | "repo_owner" : "drclaw1394",
186 | "ver" : "v0.1.0"
187 | },
188 | {
189 | "auth" : "DRCLAW",
190 | "date" : "2024-01-20",
191 | "dist" : "Socket-More",
192 | "insecure_repo" : true,
193 | "name" : "Socket-More-v0.5.1",
194 | "repo" : "http://github.com/drclaw1394/perl-socket-more",
195 | "repo_def_branch" : "main",
196 | "repo_name" : "perl-socket-more",
197 | "repo_owner" : "drclaw1394",
198 | "ver" : "v0.5.1"
199 | },
200 | {
201 | "auth" : "DRCLAW",
202 | "date" : "2023-03-12",
203 | "dist" : "Sub-Middler",
204 | "insecure_repo" : true,
205 | "name" : "Sub-Middler-v0.2.0",
206 | "repo" : "http://github.com/drclaw1394/perl-sub-middler",
207 | "repo_def_branch" : "main",
208 | "repo_name" : "perl-sub-middler",
209 | "repo_owner" : "drclaw1394",
210 | "ver" : "v0.2.0"
211 | },
212 | {
213 | "auth" : "DRCLAW",
214 | "date" : "2024-01-10",
215 | "dist" : "Template-Plex",
216 | "insecure_repo" : false,
217 | "name" : "Template-Plex-v0.7.0",
218 | "repo" : "https://github.com/drclaw1394/perl-template-plex",
219 | "repo_def_branch" : "main",
220 | "repo_name" : "perl-template-plex",
221 | "repo_owner" : "drclaw1394",
222 | "ver" : "v0.7.0"
223 | },
224 | {
225 | "auth" : "DRCLAW",
226 | "date" : "2024-04-09",
227 | "dist" : "constant-more",
228 | "insecure_repo" : false,
229 | "name" : "constant-more-v0.3.1",
230 | "repo" : "https://github.com/drclaw1394/perl-constant-more",
231 | "repo_def_branch" : "main",
232 | "repo_name" : "perl-constant-more",
233 | "repo_owner" : "drclaw1394",
234 | "ver" : "v0.3.1"
235 | },
236 | {
237 | "auth" : "DRCLAW",
238 | "date" : "2022-03-31",
239 | "dist" : "uSAC-MIME",
240 | "insecure_repo" : false,
241 | "name" : "uSAC-MIME-v0.2.2",
242 | "repo" : "https://github.com/drclaw1394/perl-usac-mime",
243 | "repo_def_branch" : "main",
244 | "repo_name" : "perl-usac-mime",
245 | "repo_owner" : "drclaw1394",
246 | "ver" : "v0.2.2"
247 | }
248 | ],
249 | "sort" : {
250 | "column" : 3,
251 | "direction" : "desc"
252 | }
253 | }
254 |
--------------------------------------------------------------------------------
/authors/data/FERKI/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "FERKI",
4 | "github" : "ferki",
5 | "gravatar" : "https://secure.gravatar.com/avatar/4f102f07ec6b79caa1c5a3d08f08e01a.png",
6 | "name" : "Ferenc Erki"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "build and test"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 1,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "FERKI",
23 | "bugtracker" : "https://github.com/RexOps/Rex/issues",
24 | "date" : "2023-08-05",
25 | "dist" : "Rex",
26 | "insecure_repo" : false,
27 | "name" : "Rex-1.14.3",
28 | "repo" : "https://github.com/RexOps/Rex",
29 | "repo_def_branch" : "master",
30 | "repo_name" : "Rex",
31 | "repo_owner" : "RexOps",
32 | "uses_rt" : false,
33 | "ver" : "1.14.3"
34 | },
35 | {
36 | "auth" : "FERKI",
37 | "bugtracker" : "https://github.com/ferki/Rex-Hook-File-Diff/issues",
38 | "date" : "2021-08-18",
39 | "dist" : "Rex-Hook-File-Diff",
40 | "insecure_repo" : false,
41 | "name" : "Rex-Hook-File-Diff-v0.4.0",
42 | "repo" : "https://github.com/ferki/Rex-Hook-File-Diff",
43 | "repo_def_branch" : "master",
44 | "repo_name" : "Rex-Hook-File-Diff",
45 | "repo_owner" : "ferki",
46 | "uses_rt" : false,
47 | "ver" : "v0.4.0"
48 | },
49 | {
50 | "auth" : "FERKI",
51 | "bugtracker" : "https://github.com/ferki/Rex-Hook-File-Impostor/issues",
52 | "date" : "2021-07-28",
53 | "dist" : "Rex-Hook-File-Impostor",
54 | "insecure_repo" : false,
55 | "name" : "Rex-Hook-File-Impostor-v0.2.0",
56 | "repo" : "https://github.com/ferki/Rex-Hook-File-Impostor",
57 | "repo_def_branch" : "master",
58 | "repo_name" : "Rex-Hook-File-Impostor",
59 | "repo_owner" : "ferki",
60 | "uses_rt" : false,
61 | "ver" : "v0.2.0"
62 | }
63 | ],
64 | "sort" : {
65 | "column" : 0,
66 | "direction" : "asc"
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/authors/data/GEEKRUTH/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "GEEKRUTH",
4 | "github" : "GeekRuthie",
5 | "gravatar" : null,
6 | "name" : "D Ruth Holloway"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [],
10 | "use_appveyor" : 0,
11 | "use_cirrus" : 0,
12 | "use_codecov" : 0,
13 | "use_coveralls" : 0,
14 | "use_gh_actions" : 0,
15 | "use_travis" : 0,
16 | "use_travis_com" : 0
17 | },
18 | "modules" : [],
19 | "sort" : {
20 | "column" : 0,
21 | "direction" : "asc"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/authors/data/PETDANCE/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PETDANCE",
4 | "github" : "petdance",
5 | "gravatar" : "https://secure.gravatar.com/avatar/8077a0584e451732420d43f5d0b3bd31?s=130&d=identicon",
6 | "name" : "Andy Lester"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "testsuite"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 0,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "PETDANCE",
23 | "bugtracker" : "http://github.com/petdance/file-next/issues",
24 | "date" : "2019-08-27",
25 | "dist" : "File-Next",
26 | "insecure_repo" : true,
27 | "name" : "File-Next-1.18",
28 | "repo" : "http://github.com/petdance/file-next/tree/master",
29 | "repo_def_branch" : "",
30 | "repo_name" : "file-next/tree/master",
31 | "repo_owner" : "petdance",
32 | "uses_rt" : false,
33 | "ver" : "1.18"
34 | },
35 | {
36 | "auth" : "PETDANCE",
37 | "bugtracker" : "https://github.com/petdance/html-lint/issues",
38 | "date" : "2018-06-22",
39 | "dist" : "HTML-Lint",
40 | "insecure_repo" : false,
41 | "name" : "HTML-Lint-2.32",
42 | "repo" : "https://github.com/petdance/html-lint",
43 | "repo_def_branch" : "dev",
44 | "repo_name" : "html-lint",
45 | "repo_owner" : "petdance",
46 | "uses_rt" : false,
47 | "ver" : "2.32"
48 | },
49 | {
50 | "auth" : "PETDANCE",
51 | "bugtracker" : "https://github.com/petdance/html-tagset/issues",
52 | "date" : "2024-03-11",
53 | "dist" : "HTML-Tagset",
54 | "insecure_repo" : false,
55 | "name" : "HTML-Tagset-3.24",
56 | "repo" : "https://github.com/petdance/html-tagset",
57 | "repo_def_branch" : "dev",
58 | "repo_name" : "html-tagset",
59 | "repo_owner" : "petdance",
60 | "uses_rt" : false,
61 | "ver" : "3.24"
62 | },
63 | {
64 | "auth" : "PETDANCE",
65 | "bugtracker" : "http://github.com/petdance/html-tidy/issues",
66 | "date" : "2017-09-13",
67 | "dist" : "HTML-Tidy",
68 | "insecure_repo" : true,
69 | "name" : "HTML-Tidy-1.60",
70 | "repo" : "http://github.com/petdance/html-tidy",
71 | "repo_def_branch" : "dev",
72 | "repo_name" : "html-tidy",
73 | "repo_owner" : "petdance",
74 | "uses_rt" : false,
75 | "ver" : "1.60"
76 | },
77 | {
78 | "auth" : "PETDANCE",
79 | "bugtracker" : "http://github.com/petdance/html-tidy5/issues",
80 | "date" : "2019-10-26",
81 | "dist" : "HTML-Tidy5",
82 | "insecure_repo" : true,
83 | "name" : "HTML-Tidy5-1.06",
84 | "repo" : "http://github.com/petdance/html-tidy5",
85 | "repo_def_branch" : "dev",
86 | "repo_name" : "html-tidy5",
87 | "repo_owner" : "petdance",
88 | "uses_rt" : false,
89 | "ver" : "1.06"
90 | },
91 | {
92 | "auth" : "PETDANCE",
93 | "bugtracker" : "https://github.com/petdance/list-cycle/issues",
94 | "date" : "2020-12-23",
95 | "dist" : "List-Cycle",
96 | "insecure_repo" : false,
97 | "name" : "List-Cycle-1.04",
98 | "repo" : "git://github.com/petdance/list-cycle.git",
99 | "repo_def_branch" : "main",
100 | "repo_name" : "list-cycle",
101 | "repo_owner" : "petdance",
102 | "uses_rt" : false,
103 | "ver" : "1.04"
104 | },
105 | {
106 | "auth" : "PETDANCE",
107 | "bugtracker" : "https://github.com/Perl-Critic/Perl-Critic/issues",
108 | "date" : "2023-10-17",
109 | "dist" : "Perl-Critic",
110 | "insecure_repo" : false,
111 | "name" : "Perl-Critic-1.152",
112 | "repo" : "git://github.com/Perl-Critic/Perl-Critic.git",
113 | "repo_def_branch" : "dev",
114 | "repo_name" : "Perl-Critic",
115 | "repo_owner" : "Perl-Critic",
116 | "uses_rt" : false,
117 | "ver" : "1.152"
118 | },
119 | {
120 | "auth" : "PETDANCE",
121 | "bugtracker" : "https://github.com/petdance/perl-critic-bangs",
122 | "date" : "2017-05-25",
123 | "dist" : "Perl-Critic-Bangs",
124 | "insecure_repo" : false,
125 | "name" : "Perl-Critic-Bangs-1.12",
126 | "repo" : "git://github.com/petdance/perl-critic-bangs.git",
127 | "repo_def_branch" : "dev",
128 | "repo_name" : "perl-critic-bangs",
129 | "repo_owner" : "petdance",
130 | "uses_rt" : false,
131 | "ver" : "1.12"
132 | },
133 | {
134 | "auth" : "PETDANCE",
135 | "bugtracker" : "https://github.com/Perl-Critic/Perl-Critic-StricterSubs/issues",
136 | "date" : "2022-04-26",
137 | "dist" : "Perl-Critic-StricterSubs",
138 | "insecure_repo" : false,
139 | "name" : "Perl-Critic-StricterSubs-0.06",
140 | "repo" : "git://github.com/Perl-Critic/Perl-Critic-StricterSubs.git",
141 | "repo_def_branch" : "dev",
142 | "repo_name" : "Perl-Critic-StricterSubs",
143 | "repo_owner" : "Perl-Critic",
144 | "uses_rt" : false,
145 | "ver" : "0.06"
146 | },
147 | {
148 | "auth" : "PETDANCE",
149 | "bugtracker" : "https://github.com/petdance/sql-tiny/issues",
150 | "date" : "2019-04-07",
151 | "dist" : "SQL-Tiny",
152 | "insecure_repo" : false,
153 | "name" : "SQL-Tiny-0.04",
154 | "repo" : "git://github.com/petdance/sql-tiny.git",
155 | "repo_def_branch" : "dev",
156 | "repo_name" : "sql-tiny",
157 | "repo_owner" : "petdance",
158 | "uses_rt" : false,
159 | "ver" : "0.04"
160 | },
161 | {
162 | "auth" : "PETDANCE",
163 | "bugtracker" : "https://github.com/Perl-Critic/Test-Perl-Critic/issues",
164 | "date" : "2018-03-26",
165 | "dist" : "Test-Perl-Critic",
166 | "insecure_repo" : false,
167 | "name" : "Test-Perl-Critic-1.04",
168 | "repo" : "git://github.com/Perl-Critic/Test-Perl-Critic.git",
169 | "repo_def_branch" : "dev",
170 | "repo_name" : "Test-Perl-Critic",
171 | "repo_owner" : "Perl-Critic",
172 | "uses_rt" : false,
173 | "ver" : "1.04"
174 | },
175 | {
176 | "auth" : "PETDANCE",
177 | "date" : "2019-06-12",
178 | "dist" : "Test-Taint",
179 | "insecure_repo" : false,
180 | "name" : "Test-Taint-1.08",
181 | "repo" : "https://github.com/petdance/test-taint",
182 | "repo_def_branch" : "dev",
183 | "repo_name" : "test-taint",
184 | "repo_owner" : "petdance",
185 | "ver" : "1.08"
186 | },
187 | {
188 | "auth" : "PETDANCE",
189 | "bugtracker" : "https://github.com/petdance/test-www-mechanize/issues",
190 | "date" : "2022-12-05",
191 | "dist" : "Test-WWW-Mechanize",
192 | "insecure_repo" : false,
193 | "name" : "Test-WWW-Mechanize-1.60",
194 | "repo" : "https://github.com/petdance/test-www-mechanize",
195 | "repo_def_branch" : "dev",
196 | "repo_name" : "test-www-mechanize",
197 | "repo_owner" : "petdance",
198 | "uses_rt" : false,
199 | "ver" : "1.60"
200 | },
201 | {
202 | "auth" : "PETDANCE",
203 | "bugtracker" : "https://github.com/beyondgrep/ack3",
204 | "date" : "2023-02-27",
205 | "dist" : "ack",
206 | "insecure_repo" : false,
207 | "name" : "ack-v3.7.0",
208 | "repo" : "git://github.com/beyondgrep/ack3.git",
209 | "repo_def_branch" : "dev",
210 | "repo_name" : "ack3",
211 | "repo_owner" : "beyondgrep",
212 | "uses_rt" : false,
213 | "ver" : "v3.7.0"
214 | }
215 | ],
216 | "sort" : {
217 | "column" : 0,
218 | "direction" : "asc"
219 | }
220 | }
221 |
--------------------------------------------------------------------------------
/authors/data/PMQS/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PMQS",
4 | "github" : "pmqs",
5 | "gravatar" : "https://secure.gravatar.com/avatar/1bf245ac173d6991ade027315ff58683?s=130&d=identicon",
6 | "name" : "Paul Marquess"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "linux",
11 | "macos",
12 | "windows"
13 | ],
14 | "use_appveyor" : 1,
15 | "use_cirrus" : 1,
16 | "use_codecov" : 0,
17 | "use_coveralls" : 0,
18 | "use_gh_actions" : 1,
19 | "use_travis" : 0,
20 | "use_travis_com" : 1
21 | },
22 | "modules" : [
23 | {
24 | "auth" : "PMQS",
25 | "bugtracker" : "https://github.com/pmqs/zipdetails/issues",
26 | "date" : "2024-04-30",
27 | "dist" : "App-zipdetails",
28 | "insecure_repo" : false,
29 | "name" : "App-zipdetails-4.004",
30 | "repo" : "https://github.com/pmqs/zipdetails",
31 | "repo_def_branch" : "main",
32 | "repo_name" : "zipdetails",
33 | "repo_owner" : "pmqs",
34 | "uses_rt" : false,
35 | "ver" : "4.004"
36 | },
37 | {
38 | "auth" : "PMQS",
39 | "bugtracker" : "https://github.com/pmqs/Archive-Zip-SimpleZip/issues",
40 | "date" : "2024-08-29",
41 | "dist" : "Archive-Zip-SimpleZip",
42 | "insecure_repo" : false,
43 | "name" : "Archive-Zip-SimpleZip-1.002",
44 | "repo" : "https://github.com/pmqs/Archive-Zip-SimpleZip",
45 | "repo_def_branch" : "master",
46 | "repo_name" : "Archive-Zip-SimpleZip",
47 | "repo_owner" : "pmqs",
48 | "uses_rt" : false,
49 | "ver" : "1.002"
50 | },
51 | {
52 | "auth" : "PMQS",
53 | "bugtracker" : "https://github.com/pmqs/BerkeleyDB/issues",
54 | "date" : "2022-05-13",
55 | "dist" : "BerkeleyDB",
56 | "insecure_repo" : false,
57 | "name" : "BerkeleyDB-0.65",
58 | "repo" : "https://github.com/pmqs/BerkeleyDB",
59 | "repo_def_branch" : "master",
60 | "repo_name" : "BerkeleyDB",
61 | "repo_owner" : "pmqs",
62 | "uses_rt" : false,
63 | "ver" : "0.65"
64 | },
65 | {
66 | "auth" : "PMQS",
67 | "bugtracker" : "https://github.com/pmqs/Compress-Raw-Bzip2/issues",
68 | "date" : "2024-08-28",
69 | "dist" : "Compress-Raw-Bzip2",
70 | "insecure_repo" : false,
71 | "name" : "Compress-Raw-Bzip2-2.213",
72 | "repo" : "https://github.com/pmqs/Compress-Raw-Bzip2",
73 | "repo_def_branch" : "master",
74 | "repo_name" : "Compress-Raw-Bzip2",
75 | "repo_owner" : "pmqs",
76 | "uses_rt" : false,
77 | "ver" : "2.213"
78 | },
79 | {
80 | "auth" : "PMQS",
81 | "bugtracker" : "https://github.com/pmqs/Compress-Raw-Lzma/issues",
82 | "date" : "2024-08-28",
83 | "dist" : "Compress-Raw-Lzma",
84 | "insecure_repo" : false,
85 | "name" : "Compress-Raw-Lzma-2.213",
86 | "repo" : "https://github.com/pmqs/Compress-Raw-Lzma",
87 | "repo_def_branch" : "master",
88 | "repo_name" : "Compress-Raw-Lzma",
89 | "repo_owner" : "pmqs",
90 | "uses_rt" : false,
91 | "ver" : "2.213"
92 | },
93 | {
94 | "auth" : "PMQS",
95 | "bugtracker" : "https://github.com/pmqs/Compress-Raw-Zlib/issues",
96 | "date" : "2024-08-28",
97 | "dist" : "Compress-Raw-Zlib",
98 | "insecure_repo" : false,
99 | "name" : "Compress-Raw-Zlib-2.213",
100 | "repo" : "https://github.com/pmqs/Compress-Raw-Zlib",
101 | "repo_def_branch" : "master",
102 | "repo_name" : "Compress-Raw-Zlib",
103 | "repo_owner" : "pmqs",
104 | "uses_rt" : false,
105 | "ver" : "2.213"
106 | },
107 | {
108 | "auth" : "PMQS",
109 | "bugtracker" : "https://github.com/pmqs/Compress-Stream-Zstd/issues",
110 | "date" : "2023-04-08",
111 | "dist" : "Compress-Stream-Zstd",
112 | "insecure_repo" : false,
113 | "name" : "Compress-Stream-Zstd-0.206",
114 | "repo" : "https://github.com/pmqs/Compress-Stream-Zstd",
115 | "repo_def_branch" : "master",
116 | "repo_name" : "Compress-Stream-Zstd",
117 | "repo_owner" : "pmqs",
118 | "uses_rt" : false,
119 | "ver" : "0.206"
120 | },
121 | {
122 | "auth" : "PMQS",
123 | "bugtracker" : "https://github.com/pmqs/DB_File/issues",
124 | "date" : "2023-08-21",
125 | "dist" : "DB_File",
126 | "insecure_repo" : false,
127 | "name" : "DB_File-1.859",
128 | "repo" : "https://github.com/pmqs/DB_File",
129 | "repo_def_branch" : "master",
130 | "repo_name" : "DB_File",
131 | "repo_owner" : "pmqs",
132 | "uses_rt" : false,
133 | "ver" : "1.859"
134 | },
135 | {
136 | "auth" : "PMQS",
137 | "bugtracker" : "https://github.com/pmqs/IO-Compress/issues",
138 | "date" : "2024-08-28",
139 | "dist" : "IO-Compress",
140 | "insecure_repo" : false,
141 | "name" : "IO-Compress-2.213",
142 | "repo" : "https://github.com/pmqs/IO-Compress",
143 | "repo_def_branch" : "master",
144 | "repo_name" : "IO-Compress",
145 | "repo_owner" : "pmqs",
146 | "uses_rt" : false,
147 | "ver" : "2.213"
148 | },
149 | {
150 | "auth" : "PMQS",
151 | "bugtracker" : "https://github.com/pmqs/IO-Compress-Lzf/issues",
152 | "date" : "2024-08-28",
153 | "dist" : "IO-Compress-Lzf",
154 | "insecure_repo" : false,
155 | "name" : "IO-Compress-Lzf-2.213",
156 | "repo" : "https://github.com/pmqs/IO-Compress-Lzf",
157 | "repo_def_branch" : "master",
158 | "repo_name" : "IO-Compress-Lzf",
159 | "repo_owner" : "pmqs",
160 | "uses_rt" : false,
161 | "ver" : "2.213"
162 | },
163 | {
164 | "auth" : "PMQS",
165 | "bugtracker" : "https://github.com/pmqs/IO-Compress-Lzma/issues",
166 | "date" : "2024-08-28",
167 | "dist" : "IO-Compress-Lzma",
168 | "insecure_repo" : false,
169 | "name" : "IO-Compress-Lzma-2.213",
170 | "repo" : "https://github.com/pmqs/IO-Compress-Lzma",
171 | "repo_def_branch" : "master",
172 | "repo_name" : "IO-Compress-Lzma",
173 | "repo_owner" : "pmqs",
174 | "uses_rt" : false,
175 | "ver" : "2.213"
176 | },
177 | {
178 | "auth" : "PMQS",
179 | "bugtracker" : "https://github.com/pmqs/IO-Compress-Lzop/issues",
180 | "date" : "2024-08-28",
181 | "dist" : "IO-Compress-Lzop",
182 | "insecure_repo" : false,
183 | "name" : "IO-Compress-Lzop-2.213",
184 | "repo" : "https://github.com/pmqs/IO-Compress-Lzop",
185 | "repo_def_branch" : "master",
186 | "repo_name" : "IO-Compress-Lzop",
187 | "repo_owner" : "pmqs",
188 | "uses_rt" : false,
189 | "ver" : "2.213"
190 | },
191 | {
192 | "auth" : "PMQS",
193 | "bugtracker" : "https://github.com/pmqs/IO-Compress-Zstd/issues",
194 | "date" : "2024-08-28",
195 | "dist" : "IO-Compress-Zstd",
196 | "insecure_repo" : false,
197 | "name" : "IO-Compress-Zstd-2.213",
198 | "repo" : "https://github.com/pmqs/IO-Compress-Zstd",
199 | "repo_def_branch" : "master",
200 | "repo_name" : "IO-Compress-Zstd",
201 | "repo_owner" : "pmqs",
202 | "uses_rt" : false,
203 | "ver" : "2.213"
204 | }
205 | ],
206 | "sort" : {
207 | "column" : 0,
208 | "direction" : "asc"
209 | }
210 | }
211 |
--------------------------------------------------------------------------------
/authors/data/PSCUST/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "PSCUST",
4 | "github" : "pauloscustodio",
5 | "gravatar" : "https://secure.gravatar.com/avatar/bba6aa3d7ba48d250d898d772c886093?s=130&d=identicon",
6 | "name" : "Paulo Custodio"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 0,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "PSCUST",
23 | "bugtracker" : "https://github.com/pauloscustodio/perl-CPU-Z80-Assembler/issues",
24 | "date" : "2023-05-27",
25 | "dist" : "CPU-Z80-Assembler",
26 | "insecure_repo" : false,
27 | "name" : "CPU-Z80-Assembler-2.25",
28 | "repo" : "https://github.com/pauloscustodio/perl-CPU-Z80-Assembler",
29 | "repo_def_branch" : "master",
30 | "repo_name" : "perl-CPU-Z80-Assembler",
31 | "repo_owner" : "pauloscustodio",
32 | "uses_rt" : false,
33 | "ver" : "2.25"
34 | },
35 | {
36 | "auth" : "PSCUST",
37 | "bugtracker" : "https://github.com/pauloscustodio/perl-CPU-Z80-Disassembler/issues",
38 | "date" : "2023-05-27",
39 | "dist" : "CPU-Z80-Disassembler",
40 | "insecure_repo" : false,
41 | "name" : "CPU-Z80-Disassembler-1.02",
42 | "repo" : "https://github.com/pauloscustodio/perl-CPU-Z80-Disassembler",
43 | "repo_def_branch" : "master",
44 | "repo_name" : "perl-CPU-Z80-Disassembler",
45 | "repo_owner" : "pauloscustodio",
46 | "uses_rt" : false,
47 | "ver" : "1.02"
48 | },
49 | {
50 | "auth" : "PSCUST",
51 | "date" : "2016-05-16",
52 | "dist" : "Parse-FSM",
53 | "insecure_repo" : false,
54 | "name" : "Parse-FSM-1.13",
55 | "repo" : "https://github.com/pauloscustodio/perl-Parse-FSM",
56 | "repo_def_branch" : "master",
57 | "repo_name" : "perl-Parse-FSM",
58 | "repo_owner" : "pauloscustodio",
59 | "ver" : "1.13"
60 | },
61 | {
62 | "auth" : "PSCUST",
63 | "date" : "2016-05-12",
64 | "dist" : "Preproc-Tiny",
65 | "insecure_repo" : false,
66 | "name" : "Preproc-Tiny-0.02",
67 | "repo" : "https://github.com/pauloscustodio/perl-Preproc-Tiny",
68 | "repo_def_branch" : "master",
69 | "repo_name" : "perl-Preproc-Tiny",
70 | "repo_owner" : "pauloscustodio",
71 | "ver" : "0.02"
72 | },
73 | {
74 | "auth" : "PSCUST",
75 | "date" : "2023-05-18",
76 | "dist" : "Text-MacroScript",
77 | "insecure_repo" : false,
78 | "name" : "Text-MacroScript-2.14",
79 | "repo" : "https://github.com/pauloscustodio/Text-MacroScript",
80 | "repo_def_branch" : "master",
81 | "repo_name" : "Text-MacroScript",
82 | "repo_owner" : "pauloscustodio",
83 | "ver" : "2.14"
84 | }
85 | ],
86 | "sort" : {
87 | "column" : 0,
88 | "direction" : "asc"
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/authors/data/SLAFFAN/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SLAFFAN",
4 | "github" : "shawnlaffan",
5 | "gravatar" : "https://secure.gravatar.com/avatar/48789401bfe02f3f10da90999de66b79?s=130&d=identicon",
6 | "name" : "Shawn Laffan"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 1,
13 | "use_cirrus" : 1,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 0,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "SLAFFAN",
23 | "bugtracker" : "https://github.com/shawnlaffan/Alien-Build-Plugin-Cleanse-BuildDir/issues",
24 | "date" : "2022-08-30",
25 | "dist" : "Alien-Build-Plugin-Cleanse-BuildDir",
26 | "insecure_repo" : false,
27 | "name" : "Alien-Build-Plugin-Cleanse-BuildDir-0.06",
28 | "repo" : "https://github.com/shawnlaffan/Alien-Build-Plugin-Cleanse-BuildDir",
29 | "repo_def_branch" : "master",
30 | "repo_name" : "Alien-Build-Plugin-Cleanse-BuildDir",
31 | "repo_owner" : "shawnlaffan",
32 | "uses_rt" : false,
33 | "ver" : "0.06"
34 | },
35 | {
36 | "auth" : "SLAFFAN",
37 | "bugtracker" : "https://github.com/shawnlaffan/Alien-Build-Plugin-PkgConfig-PPWrapper/issues",
38 | "date" : "2021-03-20",
39 | "dist" : "Alien-Build-Plugin-PkgConfig-PPWrapper",
40 | "insecure_repo" : false,
41 | "name" : "Alien-Build-Plugin-PkgConfig-PPWrapper-0.03",
42 | "repo" : "https://github.com/shawnlaffan/lib/Alien-Build-Plugin-PkgConfig-PPWrapper",
43 | "repo_def_branch" : "",
44 | "repo_name" : "lib/Alien-Build-Plugin-PkgConfig-PPWrapper",
45 | "repo_owner" : "shawnlaffan",
46 | "uses_rt" : false,
47 | "ver" : "0.03"
48 | },
49 | {
50 | "auth" : "SLAFFAN",
51 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-freexl/issues/",
52 | "date" : "2022-12-06",
53 | "dist" : "Alien-freexl",
54 | "insecure_repo" : false,
55 | "name" : "Alien-freexl-1.05",
56 | "repo" : "https://github.com/shawnlaffan/perl-alien-freexl",
57 | "repo_def_branch" : "master",
58 | "repo_name" : "perl-alien-freexl",
59 | "repo_owner" : "shawnlaffan",
60 | "uses_rt" : false,
61 | "ver" : "1.05"
62 | },
63 | {
64 | "auth" : "SLAFFAN",
65 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-gdal/issues/",
66 | "date" : "2024-05-28",
67 | "dist" : "Alien-gdal",
68 | "insecure_repo" : false,
69 | "name" : "Alien-gdal-1.37",
70 | "repo" : "https://github.com/shawnlaffan/perl-alien-gdal",
71 | "repo_def_branch" : "master",
72 | "repo_name" : "perl-alien-gdal",
73 | "repo_owner" : "shawnlaffan",
74 | "uses_rt" : false,
75 | "ver" : "1.37"
76 | },
77 | {
78 | "auth" : "SLAFFAN",
79 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-geos/issues/",
80 | "date" : "2023-05-18",
81 | "dist" : "Alien-geos-af",
82 | "insecure_repo" : false,
83 | "name" : "Alien-geos-af-1.012",
84 | "repo" : "https://github.com/shawnlaffan/perl-alien-geos",
85 | "repo_def_branch" : "master",
86 | "repo_name" : "perl-alien-geos",
87 | "repo_owner" : "shawnlaffan",
88 | "uses_rt" : false,
89 | "ver" : "1.012"
90 | },
91 | {
92 | "auth" : "SLAFFAN",
93 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-libtiff/issues/",
94 | "date" : "2020-05-03",
95 | "dist" : "Alien-libtiff",
96 | "insecure_repo" : false,
97 | "name" : "Alien-libtiff-1.01",
98 | "repo" : "https://github.com/shawnlaffan/perl-alien-libtiff",
99 | "repo_def_branch" : "master",
100 | "repo_name" : "perl-alien-libtiff",
101 | "repo_owner" : "shawnlaffan",
102 | "uses_rt" : false,
103 | "ver" : "1.01"
104 | },
105 | {
106 | "auth" : "SLAFFAN",
107 | "bugtracker" : "https://github.com/PerlAlien/Alien-patchelf/issues/",
108 | "date" : "2022-04-21",
109 | "dist" : "Alien-patchelf",
110 | "insecure_repo" : false,
111 | "name" : "Alien-patchelf-0.08",
112 | "repo" : "https://github.com/PerlAlien/Alien-patchelf",
113 | "repo_def_branch" : "main",
114 | "repo_name" : "Alien-patchelf",
115 | "repo_owner" : "PerlAlien",
116 | "uses_rt" : false,
117 | "ver" : "0.08"
118 | },
119 | {
120 | "auth" : "SLAFFAN",
121 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-proj/issues/",
122 | "date" : "2023-12-12",
123 | "dist" : "Alien-proj",
124 | "insecure_repo" : false,
125 | "name" : "Alien-proj-1.27",
126 | "repo" : "https://github.com/shawnlaffan/perl-alien-proj",
127 | "repo_def_branch" : "master",
128 | "repo_name" : "perl-alien-proj",
129 | "repo_owner" : "shawnlaffan",
130 | "uses_rt" : false,
131 | "ver" : "1.27"
132 | },
133 | {
134 | "auth" : "SLAFFAN",
135 | "bugtracker" : "https://github.com/shawnlaffan/perl-alien-sqlite/issues/",
136 | "date" : "2022-09-18",
137 | "dist" : "Alien-sqlite",
138 | "insecure_repo" : false,
139 | "name" : "Alien-sqlite-1.07",
140 | "repo" : "https://github.com/shawnlaffan/perl-alien-sqlite",
141 | "repo_def_branch" : "master",
142 | "repo_name" : "perl-alien-sqlite",
143 | "repo_owner" : "shawnlaffan",
144 | "uses_rt" : false,
145 | "ver" : "1.07"
146 | },
147 | {
148 | "auth" : "SLAFFAN",
149 | "bugtracker" : "https://github.com/shawnlaffan/perl-pp-autolink/issues/",
150 | "date" : "2023-10-28",
151 | "dist" : "App-PP-Autolink",
152 | "insecure_repo" : false,
153 | "name" : "App-PP-Autolink-2.12",
154 | "repo" : "https://github.com/shawnlaffan/perl-pp-autolink",
155 | "repo_def_branch" : "master",
156 | "repo_name" : "perl-pp-autolink",
157 | "repo_owner" : "shawnlaffan",
158 | "uses_rt" : false,
159 | "ver" : "2.12"
160 | },
161 | {
162 | "auth" : "SLAFFAN",
163 | "date" : "2017-01-08",
164 | "dist" : "Geo-Converter-dms2dd",
165 | "insecure_repo" : false,
166 | "name" : "Geo-Converter-dms2dd-0.05",
167 | "repo" : "https://github.com/shawnlaffan/geo-converter-dms2dd",
168 | "repo_def_branch" : "master",
169 | "repo_name" : "geo-converter-dms2dd",
170 | "repo_owner" : "shawnlaffan",
171 | "ver" : "0.05"
172 | },
173 | {
174 | "auth" : "SLAFFAN",
175 | "bugtracker" : "https://github.com/ajolma/Geo-GDAL-FFI/issues/",
176 | "date" : "2024-06-18",
177 | "dist" : "Geo-GDAL-FFI",
178 | "insecure_repo" : false,
179 | "name" : "Geo-GDAL-FFI-0.12",
180 | "repo" : "https://github.com/ajolma/Geo-GDAL-FFI",
181 | "repo_def_branch" : "master",
182 | "repo_name" : "Geo-GDAL-FFI",
183 | "repo_owner" : "ajolma",
184 | "uses_rt" : false,
185 | "ver" : 0.12
186 | },
187 | {
188 | "auth" : "SLAFFAN",
189 | "bugtracker" : "https://github.com/shawnlaffan/Geo-ShapeFile/issues/",
190 | "date" : "2023-02-23",
191 | "dist" : "Geo-ShapeFile",
192 | "insecure_repo" : false,
193 | "name" : "Geo-ShapeFile-3.03",
194 | "repo" : "https://github.com/shawnlaffan/Geo-ShapeFile",
195 | "repo_def_branch" : "master",
196 | "repo_name" : "Geo-ShapeFile",
197 | "repo_owner" : "shawnlaffan",
198 | "uses_rt" : false,
199 | "ver" : "3.03"
200 | },
201 | {
202 | "auth" : "SLAFFAN",
203 | "bugtracker" : "https://github.com/shawnlaffan/perl-List-Unique-DeterministicOrder/issues/",
204 | "date" : "2023-10-05",
205 | "dist" : "List-Unique-DeterministicOrder",
206 | "insecure_repo" : false,
207 | "name" : "List-Unique-DeterministicOrder-0.004",
208 | "repo" : "https://github.com/shawnlaffan/perl-List-Unique-DeterministicOrder",
209 | "repo_def_branch" : "master",
210 | "repo_name" : "perl-List-Unique-DeterministicOrder",
211 | "repo_owner" : "shawnlaffan",
212 | "uses_rt" : false,
213 | "ver" : 0.004
214 | },
215 | {
216 | "auth" : "SLAFFAN",
217 | "bugtracker" : "https://github.com/shawnlaffan/Statistics-Descriptive-PDL/issues/",
218 | "date" : "2024-07-02",
219 | "dist" : "Statistics-Descriptive-PDL",
220 | "insecure_repo" : false,
221 | "name" : "Statistics-Descriptive-PDL-0.17",
222 | "repo" : "https://github.com/shawnlaffan/Statistics-Descriptive-PDL",
223 | "repo_def_branch" : "master",
224 | "repo_name" : "Statistics-Descriptive-PDL",
225 | "repo_owner" : "shawnlaffan",
226 | "uses_rt" : false,
227 | "ver" : "0.17"
228 | },
229 | {
230 | "auth" : "SLAFFAN",
231 | "bugtracker" : "https://github.com/shawnlaffan/perl-statistics-sampler-multinomial/issues/",
232 | "date" : "2022-09-24",
233 | "dist" : "Statistics-Sampler-Multinomial",
234 | "insecure_repo" : false,
235 | "name" : "Statistics-Sampler-Multinomial-1.02",
236 | "repo" : "https://github.com/shawnlaffan/perl-statistics-sampler-multinomial",
237 | "repo_def_branch" : "master",
238 | "repo_name" : "perl-statistics-sampler-multinomial",
239 | "repo_owner" : "shawnlaffan",
240 | "uses_rt" : false,
241 | "ver" : "1.02"
242 | }
243 | ],
244 | "sort" : {
245 | "column" : 0,
246 | "direction" : "asc"
247 | }
248 | }
249 |
--------------------------------------------------------------------------------
/authors/data/SLU/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SLU",
4 | "github" : "soren",
5 | "gravatar" : "https://secure.gravatar.com/avatar/73a36c0741de4c5e128a31f3db4f90b3?s=130&d=identicon",
6 | "name" : "Søren Lund"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [],
10 | "use_coveralls" : 1,
11 | "use_gh_actions" : 0,
12 | "use_travis" : 1
13 | },
14 | "modules" : [
15 | {
16 | "auth" : "SLU",
17 | "bugtracker" : "https://github.com/soren/Acme-Be-Modern/issues",
18 | "date" : "2020-11-11",
19 | "dist" : "Acme-Be-Modern",
20 | "insecure_repo" : false,
21 | "name" : "Acme-Be-Modern-0.04",
22 | "repo" : "https://github.com/soren/Acme-Be-Modern",
23 | "repo_def_branch" : "master",
24 | "repo_name" : "Acme-Be-Modern",
25 | "repo_owner" : "soren",
26 | "uses_rt" : false,
27 | "ver" : "0.04"
28 | },
29 | {
30 | "auth" : "SLU",
31 | "bugtracker" : "https://github.com/soren/App-TimeClock/issues",
32 | "date" : "2017-01-04",
33 | "dist" : "App-TimeClock",
34 | "insecure_repo" : false,
35 | "name" : "App-TimeClock-0.13",
36 | "repo" : "https://github.com/soren/App-TimeClock",
37 | "repo_def_branch" : "master",
38 | "repo_name" : "App-TimeClock",
39 | "repo_owner" : "soren",
40 | "uses_rt" : false,
41 | "ver" : "0.13"
42 | }
43 | ],
44 | "sort" : {
45 | "column" : 0,
46 | "direction" : "asc"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/authors/data/SZABGAB/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "SZABGAB",
4 | "github" : "szabgab",
5 | "gravatar" : "https://secure.gravatar.com/avatar/19821078d3ecf265b2af009548e98ef3?s=130&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2F4e0a6fe2acda5df6095514e7d6329e91%3Fs%3D130%26d%3Didenticon",
6 | "name" : "××××ר ס×× - Gábor Szabó"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_codecov" : 0,
13 | "use_coveralls" : 1,
14 | "use_gh_actions" : 1,
15 | "use_travis" : 1
16 | },
17 | "modules" : [
18 | {
19 | "auth" : "SZABGAB",
20 | "bugtracker" : "https://github.com/szabgab/App-PerlTidy-Tk/issues",
21 | "date" : "2020-11-16",
22 | "dist" : "App-PerlTidy-Tk",
23 | "insecure_repo" : false,
24 | "name" : "App-PerlTidy-Tk-0.03",
25 | "repo" : "https://github.com/szabgab/App-PerlTidy-Tk",
26 | "repo_def_branch" : "master",
27 | "repo_name" : "App-PerlTidy-Tk",
28 | "repo_owner" : "szabgab",
29 | "uses_rt" : false,
30 | "ver" : "0.03"
31 | },
32 | {
33 | "auth" : "SZABGAB",
34 | "bugtracker" : "https://github.com/szabgab/App-Tk-Deparse/issues",
35 | "date" : "2020-11-04",
36 | "dist" : "App-Tk-Deparse",
37 | "insecure_repo" : false,
38 | "name" : "App-Tk-Deparse-0.02",
39 | "repo" : "https://github.com/szabgab/App-Tk-Deparse",
40 | "repo_def_branch" : "master",
41 | "repo_name" : "App-Tk-Deparse",
42 | "repo_owner" : "szabgab",
43 | "uses_rt" : false,
44 | "ver" : "0.02"
45 | },
46 | {
47 | "auth" : "SZABGAB",
48 | "bugtracker" : "https://github.com/szabgab/Array-Unique/issues",
49 | "date" : "2023-05-29",
50 | "dist" : "Array-Unique",
51 | "insecure_repo" : false,
52 | "name" : "Array-Unique-0.09",
53 | "repo" : "https://github.com/szabgab/Array-Unique",
54 | "repo_def_branch" : "main",
55 | "repo_name" : "Array-Unique",
56 | "repo_owner" : "szabgab",
57 | "uses_rt" : false,
58 | "ver" : "0.09"
59 | },
60 | {
61 | "auth" : "SZABGAB",
62 | "bugtracker" : "https://github.com/szabgab/CAM-PDF-Annot/issues",
63 | "date" : "2023-05-29",
64 | "dist" : "CAM-PDF-Annot",
65 | "insecure_repo" : false,
66 | "name" : "CAM-PDF-Annot-0.10",
67 | "repo" : "https://github.com/szabgab/CAM-PDF-Annot",
68 | "repo_def_branch" : "master",
69 | "repo_name" : "CAM-PDF-Annot",
70 | "repo_owner" : "szabgab",
71 | "uses_rt" : false,
72 | "ver" : "0.10"
73 | },
74 | {
75 | "auth" : "SZABGAB",
76 | "bugtracker" : "https://github.com/szabgab/CGI-Upload/issues",
77 | "date" : "2023-12-28",
78 | "dist" : "CGI-Upload",
79 | "insecure_repo" : false,
80 | "name" : "CGI-Upload-1.14",
81 | "repo" : "https://github.com/szabgab/CGI-Upload",
82 | "repo_def_branch" : "main",
83 | "repo_name" : "CGI-Upload",
84 | "repo_owner" : "szabgab",
85 | "uses_rt" : false,
86 | "ver" : "1.14"
87 | },
88 | {
89 | "auth" : "SZABGAB",
90 | "bugtracker" : "https://github.com/szabgab/CPAN-Digger/issues",
91 | "date" : "2020-11-12",
92 | "dist" : "CPAN-Digger",
93 | "insecure_repo" : false,
94 | "name" : "CPAN-Digger-1.04",
95 | "repo" : "https://github.com/szabgab/CPAN-Digger",
96 | "repo_def_branch" : "main",
97 | "repo_name" : "CPAN-Digger",
98 | "repo_owner" : "szabgab",
99 | "uses_rt" : false,
100 | "ver" : "1.04"
101 | },
102 | {
103 | "auth" : "SZABGAB",
104 | "bugtracker" : "https://github.com/szabgab/CPAN-Porters/issues",
105 | "date" : "2023-05-30",
106 | "dist" : "CPAN-Porters",
107 | "insecure_repo" : false,
108 | "name" : "CPAN-Porters-0.04",
109 | "repo" : "https://github.com/szabgab/CPAN-Porters",
110 | "repo_def_branch" : "main",
111 | "repo_name" : "CPAN-Porters",
112 | "repo_owner" : "szabgab",
113 | "uses_rt" : false,
114 | "ver" : "0.04"
115 | },
116 | {
117 | "auth" : "SZABGAB",
118 | "date" : "2014-10-28",
119 | "dist" : "CPAN-Test-Dummy-SCO-Lacks",
120 | "insecure_repo" : false,
121 | "name" : "CPAN-Test-Dummy-SCO-Lacks-0.01",
122 | "repo" : "git://github.com/szabgab/CPAN-Test-Dummy-SCO.git",
123 | "repo_def_branch" : "master",
124 | "repo_name" : "CPAN-Test-Dummy-SCO",
125 | "repo_owner" : "szabgab",
126 | "ver" : "0.01"
127 | },
128 | {
129 | "auth" : "SZABGAB",
130 | "date" : "2014-10-31",
131 | "dist" : "CPAN-Test-Dummy-SCO-Pirated",
132 | "insecure_repo" : true,
133 | "name" : "CPAN-Test-Dummy-SCO-Pirated-1.04",
134 | "repo" : "http://github.com/szabgab/CPAN-Test-Dummy-SCO",
135 | "repo_def_branch" : "master",
136 | "repo_name" : "CPAN-Test-Dummy-SCO",
137 | "repo_owner" : "szabgab",
138 | "ver" : "1.04"
139 | },
140 | {
141 | "auth" : "SZABGAB",
142 | "date" : "2014-10-28",
143 | "dist" : "CPAN-Test-Dummy-SCO-Special",
144 | "insecure_repo" : true,
145 | "name" : "CPAN-Test-Dummy-SCO-Special-0.04",
146 | "repo" : "http://github.com/szabgab/CPAN-Test-Dummy-SCO",
147 | "repo_def_branch" : "master",
148 | "repo_name" : "CPAN-Test-Dummy-SCO",
149 | "repo_owner" : "szabgab",
150 | "ver" : "0.04"
151 | },
152 | {
153 | "auth" : "SZABGAB",
154 | "bugtracker" : "https://github.com/szabgab/File-Tools/issues",
155 | "date" : "2023-06-02",
156 | "dist" : "File-Tools",
157 | "insecure_repo" : false,
158 | "name" : "File-Tools-0.10",
159 | "repo" : "https://github.com/szabgab/File-Tools",
160 | "repo_def_branch" : "master",
161 | "repo_name" : "File-Tools",
162 | "repo_owner" : "szabgab",
163 | "uses_rt" : false,
164 | "ver" : "0.10"
165 | },
166 | {
167 | "auth" : "SZABGAB",
168 | "date" : "2017-10-25",
169 | "dist" : "Games-Sudoku-CLI",
170 | "insecure_repo" : true,
171 | "name" : "Games-Sudoku-CLI-0.02",
172 | "repo" : "http://github.com/szabgab/perl5-Games-Sudoku-CLI",
173 | "repo_def_branch" : "master",
174 | "repo_name" : "perl5-Games-Sudoku-CLI",
175 | "repo_owner" : "szabgab",
176 | "ver" : "0.02"
177 | },
178 | {
179 | "auth" : "SZABGAB",
180 | "bugtracker" : "https://github.com/szabgab/perl5-markua-parser/issues",
181 | "date" : "2018-03-28",
182 | "dist" : "Markua-Parser",
183 | "insecure_repo" : false,
184 | "name" : "Markua-Parser-0.01",
185 | "repo" : "https://github.com/szabgab/perl5-markua-parser",
186 | "repo_def_branch" : "master",
187 | "repo_name" : "perl5-markua-parser",
188 | "repo_owner" : "szabgab",
189 | "uses_rt" : false,
190 | "ver" : 0.01
191 | },
192 | {
193 | "auth" : "SZABGAB",
194 | "date" : "2012-07-27",
195 | "dist" : "Math-RPN",
196 | "insecure_repo" : false,
197 | "name" : "Math-RPN-1.11",
198 | "repo" : "https://github.com/szabgab/Math-RPN",
199 | "repo_def_branch" : "master",
200 | "repo_name" : "Math-RPN",
201 | "repo_owner" : "szabgab",
202 | "ver" : "1.11"
203 | },
204 | {
205 | "auth" : "SZABGAB",
206 | "bugtracker" : "https://github.com/szabgab/MetaCPAN-Clients/issues",
207 | "date" : "2020-11-17",
208 | "dist" : "MetaCPAN-Clients",
209 | "insecure_repo" : false,
210 | "name" : "MetaCPAN-Clients-1.00",
211 | "repo" : "https://github.com/szabgab/MetaCPAN-Clients",
212 | "repo_def_branch" : "master",
213 | "repo_name" : "MetaCPAN-Clients",
214 | "repo_owner" : "szabgab",
215 | "uses_rt" : false,
216 | "ver" : "1.00"
217 | },
218 | {
219 | "auth" : "SZABGAB",
220 | "bugtracker" : "http://padre.perlide.org/trac/",
221 | "date" : "2023-06-14",
222 | "dist" : "Padre",
223 | "insecure_repo" : false,
224 | "name" : "Padre-1.02",
225 | "repo" : "https://github.com/PadreIDE/Padre",
226 | "repo_def_branch" : "master",
227 | "repo_name" : "Padre",
228 | "repo_owner" : "PadreIDE",
229 | "uses_rt" : false,
230 | "ver" : "1.02"
231 | },
232 | {
233 | "auth" : "SZABGAB",
234 | "bugtracker" : "https://github.com/PadreIDE/Parse-Functions/issues",
235 | "date" : "2014-09-12",
236 | "dist" : "Parse-Functions",
237 | "insecure_repo" : false,
238 | "name" : "Parse-Functions-0.01",
239 | "repo" : "https://github.com/PadreIDE/Parse-Functions",
240 | "repo_def_branch" : "master",
241 | "repo_name" : "Parse-Functions",
242 | "repo_owner" : "PadreIDE",
243 | "uses_rt" : false,
244 | "ver" : "0.01"
245 | },
246 | {
247 | "auth" : "SZABGAB",
248 | "bugtracker" : "https://github.com/szabgab/Pipe/issues",
249 | "date" : "2023-06-01",
250 | "dist" : "Pipe",
251 | "insecure_repo" : false,
252 | "name" : "Pipe-0.06",
253 | "repo" : "https://github.com/szabgab/Pipe",
254 | "repo_def_branch" : "master",
255 | "repo_name" : "Pipe",
256 | "repo_owner" : "szabgab",
257 | "uses_rt" : false,
258 | "ver" : "0.06"
259 | },
260 | {
261 | "auth" : "SZABGAB",
262 | "bugtracker" : "https://github.com/szabgab/Pipe-Tube-Csv/issues",
263 | "date" : "2023-06-01",
264 | "dist" : "Pipe-Tube-Csv",
265 | "insecure_repo" : false,
266 | "name" : "Pipe-Tube-Csv-0.05",
267 | "repo" : "https://github.com/szabgab/Pipe-Tube-Csv",
268 | "repo_def_branch" : "master",
269 | "repo_name" : "Pipe-Tube-Csv",
270 | "repo_owner" : "szabgab",
271 | "uses_rt" : false,
272 | "ver" : "0.05"
273 | },
274 | {
275 | "auth" : "SZABGAB",
276 | "date" : "2014-05-24",
277 | "dist" : "Task-DWIM-Linux",
278 | "insecure_repo" : false,
279 | "name" : "Task-DWIM-Linux-0.10",
280 | "repo" : "https://github.com/dwimperl/Task-DWIM",
281 | "repo_def_branch" : "master",
282 | "repo_name" : "Task-DWIM",
283 | "repo_owner" : "dwimperl",
284 | "ver" : "0.10"
285 | },
286 | {
287 | "auth" : "SZABGAB",
288 | "bugtracker" : "https://github.com/szabgab/Task-Test",
289 | "date" : "2014-08-14",
290 | "dist" : "Task-Test",
291 | "insecure_repo" : false,
292 | "name" : "Task-Test-0.06",
293 | "repo" : "https://github.com/szabgab/Task-Test",
294 | "repo_def_branch" : "master",
295 | "repo_name" : "Task-Test",
296 | "repo_owner" : "szabgab",
297 | "uses_rt" : false,
298 | "ver" : "0.06"
299 | },
300 | {
301 | "auth" : "SZABGAB",
302 | "date" : "2014-08-26",
303 | "dist" : "Term-ReadPassword-Win32",
304 | "insecure_repo" : false,
305 | "name" : "Term-ReadPassword-Win32-0.05",
306 | "repo" : "https://github.com/szabgab/Term-ReadPassword-Win32",
307 | "repo_def_branch" : "master",
308 | "repo_name" : "Term-ReadPassword-Win32",
309 | "repo_owner" : "szabgab",
310 | "ver" : "0.05"
311 | },
312 | {
313 | "auth" : "SZABGAB",
314 | "bugtracker" : "http://github.com/szabgab/Test-CircularDependencies",
315 | "date" : "2015-09-23",
316 | "dist" : "Test-CircularDependencies",
317 | "insecure_repo" : true,
318 | "name" : "Test-CircularDependencies-0.02",
319 | "repo" : "http://github.com/szabgab/Test-CircularDependencies",
320 | "repo_def_branch" : "master",
321 | "repo_name" : "Test-CircularDependencies",
322 | "repo_owner" : "szabgab",
323 | "uses_rt" : false,
324 | "ver" : "0.02"
325 | },
326 | {
327 | "auth" : "SZABGAB",
328 | "bugtracker" : "https://github.com/szabgab/test-class/issues",
329 | "date" : "2021-02-17",
330 | "dist" : "Test-Class",
331 | "insecure_repo" : false,
332 | "name" : "Test-Class-0.52",
333 | "repo" : "https://github.com/szabgab/test-class",
334 | "repo_def_branch" : "master",
335 | "repo_name" : "test-class",
336 | "repo_owner" : "szabgab",
337 | "uses_rt" : false,
338 | "ver" : "0.52"
339 | },
340 | {
341 | "auth" : "SZABGAB",
342 | "date" : "2009-04-10",
343 | "dist" : "Test-Snapshots",
344 | "insecure_repo" : true,
345 | "name" : "Test-Snapshots-0.02",
346 | "repo" : "http://github.com/szabgab/test-snapshots",
347 | "repo_def_branch" : "master",
348 | "repo_name" : "test-snapshots",
349 | "repo_owner" : "szabgab",
350 | "ver" : "0.02"
351 | },
352 | {
353 | "auth" : "SZABGAB",
354 | "bugtracker" : "http://github.com/szabgab/Text-MediawikiFormat/issues",
355 | "date" : "2014-12-01",
356 | "dist" : "Text-MediawikiFormat",
357 | "insecure_repo" : true,
358 | "name" : "Text-MediawikiFormat-1.04",
359 | "repo" : "http://github.com/szabgab/Text-MediawikiFormat",
360 | "repo_def_branch" : "master",
361 | "repo_name" : "Text-MediawikiFormat",
362 | "repo_owner" : "szabgab",
363 | "uses_rt" : false,
364 | "ver" : "1.04"
365 | },
366 | {
367 | "auth" : "SZABGAB",
368 | "date" : "2013-09-27",
369 | "dist" : "WWW-AdServer",
370 | "insecure_repo" : false,
371 | "name" : "WWW-AdServer-1.01",
372 | "repo" : "https://github.com/szabgab/WWW-AdServer",
373 | "repo_def_branch" : "master",
374 | "repo_name" : "WWW-AdServer",
375 | "repo_owner" : "szabgab",
376 | "ver" : "1.01"
377 | },
378 | {
379 | "auth" : "SZABGAB",
380 | "bugtracker" : "https://github.com/szabgab/Web-Feed/issues",
381 | "date" : "2023-05-29",
382 | "dist" : "Web-Feed",
383 | "insecure_repo" : false,
384 | "name" : "Web-Feed-0.12",
385 | "repo" : "https://github.com/szabgab/Web-Feed",
386 | "repo_def_branch" : "master",
387 | "repo_name" : "Web-Feed",
388 | "repo_owner" : "szabgab",
389 | "uses_rt" : false,
390 | "ver" : "0.12"
391 | },
392 | {
393 | "auth" : "SZABGAB",
394 | "date" : "2013-10-18",
395 | "dist" : "WebService-GData",
396 | "insecure_repo" : false,
397 | "name" : "WebService-GData-0.06",
398 | "repo" : "https://github.com/szabgab/WebService-GData",
399 | "repo_def_branch" : "master",
400 | "repo_name" : "WebService-GData",
401 | "repo_owner" : "szabgab",
402 | "ver" : "0.06"
403 | }
404 | ],
405 | "sort" : {
406 | "column" : 3,
407 | "direction" : "desc"
408 | }
409 | }
410 |
--------------------------------------------------------------------------------
/authors/data/TEODESIAN/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "TEODESIAN",
4 | "github" : "teodesian",
5 | "gravatar" : "http://teodesian.net/about/doge/cpanlulz-optimized-small.png",
6 | "name" : "George S. Baugh"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "CI"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 1,
16 | "use_gh_actions" : 0,
17 | "use_travis" : 1,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "TEODESIAN",
23 | "bugtracker" : "https://github.com/teodesian/App-Prove-Elasticsearch/issues",
24 | "date" : "2018-06-18",
25 | "dist" : "App-Prove-Plugin-Elasticsearch",
26 | "insecure_repo" : false,
27 | "name" : "App-Prove-Plugin-Elasticsearch-0.001",
28 | "repo" : "https://github.com/teodesian/App-Prove-Elasticsearch",
29 | "repo_def_branch" : "master",
30 | "repo_name" : "App-Prove-Elasticsearch",
31 | "repo_owner" : "teodesian",
32 | "uses_rt" : false,
33 | "ver" : "0.001"
34 | },
35 | {
36 | "auth" : "TEODESIAN",
37 | "bugtracker" : "https://github.com/Troglodyne-Internet-Widgets/Audit-Log-perl/issues",
38 | "date" : "2023-07-11",
39 | "dist" : "Audit-Log",
40 | "insecure_repo" : false,
41 | "name" : "Audit-Log-0.005",
42 | "repo" : "https://github.com/Troglodyne-Internet-Widgets/Audit-Log-perl",
43 | "repo_def_branch" : "master",
44 | "repo_name" : "Audit-Log-perl",
45 | "repo_owner" : "Troglodyne-Internet-Widgets",
46 | "uses_rt" : false,
47 | "ver" : "0.005"
48 | },
49 | {
50 | "auth" : "TEODESIAN",
51 | "bugtracker" : "https://github.com/teodesian/perl-Github-ReleaseFetcher/issues",
52 | "date" : "2024-08-13",
53 | "dist" : "Github-ReleaseFetcher",
54 | "insecure_repo" : false,
55 | "name" : "Github-ReleaseFetcher-1.001",
56 | "repo" : "https://github.com/teodesian/perl-Github-ReleaseFetcher",
57 | "repo_def_branch" : "",
58 | "repo_name" : "perl-Github-ReleaseFetcher",
59 | "repo_owner" : "teodesian",
60 | "uses_rt" : false,
61 | "ver" : "1.001"
62 | },
63 | {
64 | "auth" : "TEODESIAN",
65 | "bugtracker" : "https://github.com/Troglodyne-Internet-Widgets/Microsoft-Translator-Perl/issues",
66 | "date" : "2023-10-26",
67 | "dist" : "Microsoft-Translator",
68 | "insecure_repo" : false,
69 | "name" : "Microsoft-Translator-0.001",
70 | "repo" : "https://github.com/Troglodyne-Internet-Widgets/Microsoft-Translator-Perl.git",
71 | "repo_def_branch" : "master",
72 | "repo_name" : "Microsoft-Translator-Perl",
73 | "repo_owner" : "Troglodyne-Internet-Widgets",
74 | "uses_rt" : false,
75 | "ver" : "0.001"
76 | },
77 | {
78 | "auth" : "TEODESIAN",
79 | "bugtracker" : "https://github.com/teodesian/playwright-perl/issues",
80 | "date" : "2024-08-12",
81 | "dist" : "Playwright",
82 | "insecure_repo" : false,
83 | "name" : "Playwright-1.460",
84 | "repo" : "https://github.com/teodesian/playwright-perl",
85 | "repo_def_branch" : "main",
86 | "repo_name" : "playwright-perl",
87 | "repo_owner" : "teodesian",
88 | "uses_rt" : false,
89 | "ver" : "1.460"
90 | },
91 | {
92 | "auth" : "TEODESIAN",
93 | "bugtracker" : "https://github.com/teodesian/RPM-Verify/issues",
94 | "date" : "2023-12-06",
95 | "dist" : "RPM-Verify",
96 | "insecure_repo" : false,
97 | "name" : "RPM-Verify-1.000",
98 | "repo" : "https://github.com/teodesian/RPM-Verify.git",
99 | "repo_def_branch" : "",
100 | "repo_name" : "RPM-Verify",
101 | "repo_owner" : "teodesian",
102 | "uses_rt" : false,
103 | "ver" : "1.000"
104 | },
105 | {
106 | "auth" : "TEODESIAN",
107 | "bugtracker" : "https://github.com/troglodyne-internet-widgets/selenium-client-perl/issues",
108 | "date" : "2024-08-14",
109 | "dist" : "Selenium-Client",
110 | "insecure_repo" : false,
111 | "name" : "Selenium-Client-2.01",
112 | "repo" : "https://github.com/troglodyne-internet-widgets/selenium-client-perl",
113 | "repo_def_branch" : "main",
114 | "repo_name" : "selenium-client-perl",
115 | "repo_owner" : "troglodyne-internet-widgets",
116 | "uses_rt" : false,
117 | "ver" : "2.01"
118 | },
119 | {
120 | "auth" : "TEODESIAN",
121 | "bugtracker" : "https://github.com/teodesian/Selenium-Remote-Driver/issues",
122 | "date" : "2023-04-06",
123 | "dist" : "Selenium-Remote-Driver",
124 | "insecure_repo" : false,
125 | "name" : "Selenium-Remote-Driver-1.49",
126 | "repo" : "https://github.com/teodesian/Selenium-Remote-Driver",
127 | "repo_def_branch" : "master",
128 | "repo_name" : "Selenium-Remote-Driver",
129 | "repo_owner" : "teodesian",
130 | "uses_rt" : false,
131 | "ver" : "1.49"
132 | },
133 | {
134 | "auth" : "TEODESIAN",
135 | "bugtracker" : "https://rt.cpan.org/Public/Dist/Display.html?Name=TestLink-API",
136 | "date" : "2014-12-05",
137 | "dist" : "TestLink-API",
138 | "insecure_repo" : false,
139 | "name" : "TestLink-API-0.011",
140 | "repo" : "git://github.com/teodesian/TestLink-Perl.git",
141 | "repo_def_branch" : "master",
142 | "repo_name" : "TestLink-Perl",
143 | "repo_owner" : "teodesian",
144 | "uses_rt" : true,
145 | "ver" : "0.011"
146 | },
147 | {
148 | "auth" : "TEODESIAN",
149 | "bugtracker" : "https://github.com/teodesian/TestRail-Perl/issues",
150 | "date" : "2022-09-11",
151 | "dist" : "TestRail-API",
152 | "insecure_repo" : false,
153 | "name" : "TestRail-API-0.052",
154 | "repo" : "https://github.com/teodesian/TestRail-Perl",
155 | "repo_def_branch" : "master",
156 | "repo_name" : "TestRail-Perl",
157 | "repo_owner" : "teodesian",
158 | "uses_rt" : false,
159 | "ver" : "0.052"
160 | },
161 | {
162 | "auth" : "TEODESIAN",
163 | "bugtracker" : "https://github.com/teodesian/Trog-TOTP/issues",
164 | "date" : "2024-06-19",
165 | "dist" : "Trog-TOTP",
166 | "insecure_repo" : false,
167 | "name" : "Trog-TOTP-1.005",
168 | "repo" : "https://github.com/teodesian/Trog-TOTP.git",
169 | "repo_def_branch" : "master",
170 | "repo_name" : "Trog-TOTP",
171 | "repo_owner" : "teodesian",
172 | "uses_rt" : false,
173 | "ver" : "1.005"
174 | },
175 | {
176 | "auth" : "TEODESIAN",
177 | "bugtracker" : "https://github.com/Troglodyne-Internet-Widgets/URI-Shorten/issues",
178 | "date" : "2024-05-08",
179 | "dist" : "URI-Shortener",
180 | "insecure_repo" : false,
181 | "name" : "URI-Shortener-1.003",
182 | "repo" : "https://github.com/Troglodyne-Internet-Widgets/URI-Shorten",
183 | "repo_def_branch" : "master",
184 | "repo_name" : "URI-Shorten",
185 | "repo_owner" : "Troglodyne-Internet-Widgets",
186 | "uses_rt" : false,
187 | "ver" : "1.003"
188 | }
189 | ],
190 | "sort" : {
191 | "column" : 0,
192 | "direction" : "asc"
193 | }
194 | }
195 |
--------------------------------------------------------------------------------
/authors/data/TODDR/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "TODDR",
4 | "github" : "toddr",
5 | "gravatar" : "https://secure.gravatar.com/avatar/593351ab4ba45a73fb5de512d89432d2?s=130&d=http%3A%2F%2Fwww.gravatar.com%2Favatar%2F593351ab4ba45a73fb5de512d89432d2%3Fs%3D130%26d%3Didenticon",
6 | "name" : "Todd Rinaldo"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "ubuntu",
11 | "macos",
12 | "windows",
13 | "testsuite",
14 | "bsd",
15 | "windows_installation"
16 | ],
17 | "use_appveyor" : 0,
18 | "use_codecov" : 0,
19 | "use_coveralls" : 0,
20 | "use_gh_actions" : 1,
21 | "use_travis" : 0
22 | },
23 | "modules" : [
24 | {
25 | "auth" : "TODDR",
26 | "bugtracker" : "https://github.com/toddr/Business-UPS/issues",
27 | "date" : "2021-01-22",
28 | "dist" : "Business-UPS",
29 | "insecure_repo" : false,
30 | "name" : "Business-UPS-2.02",
31 | "repo" : "https://github.com/toddr/Business-UPS",
32 | "repo_def_branch" : "master",
33 | "repo_name" : "Business-UPS",
34 | "repo_owner" : "toddr",
35 | "uses_rt" : false,
36 | "ver" : "2.02"
37 | },
38 | {
39 | "auth" : "TODDR",
40 | "bugtracker" : "https://github.com/toddr/CDB_File/issues",
41 | "date" : "2020-12-11",
42 | "dist" : "CDB_File",
43 | "insecure_repo" : false,
44 | "name" : "CDB_File-1.05",
45 | "repo" : "https://github.com/toddr/CDB_File",
46 | "repo_def_branch" : "master",
47 | "repo_name" : "CDB_File",
48 | "repo_owner" : "toddr",
49 | "uses_rt" : false,
50 | "ver" : "1.05"
51 | },
52 | {
53 | "auth" : "TODDR",
54 | "bugtracker" : "https://github.com/toddr/Crypt-OpenSSL-RSA/issues",
55 | "date" : "2022-07-08",
56 | "dist" : "Crypt-OpenSSL-RSA",
57 | "insecure_repo" : true,
58 | "name" : "Crypt-OpenSSL-RSA-0.33",
59 | "repo" : "http://github.com/toddr/Crypt-OpenSSL-RSA",
60 | "repo_def_branch" : "master",
61 | "repo_name" : "Crypt-OpenSSL-RSA",
62 | "repo_owner" : "toddr",
63 | "uses_rt" : false,
64 | "ver" : "0.33"
65 | },
66 | {
67 | "auth" : "TODDR",
68 | "bugtracker" : "https://github.com/toddr/Crypt-RIPEMD160/issues",
69 | "date" : "2020-10-21",
70 | "dist" : "Crypt-RIPEMD160",
71 | "insecure_repo" : false,
72 | "name" : "Crypt-RIPEMD160-0.08",
73 | "repo" : "https://github.com/toddr/Crypt-RIPEMD160/tree/master",
74 | "repo_def_branch" : "",
75 | "repo_name" : "Crypt-RIPEMD160/tree/master",
76 | "repo_owner" : "toddr",
77 | "uses_rt" : false,
78 | "ver" : "0.08"
79 | },
80 | {
81 | "auth" : "TODDR",
82 | "bugtracker" : "https://github.com/Dual-Life/digest/issues",
83 | "date" : "2021-08-24",
84 | "dist" : "Digest",
85 | "insecure_repo" : false,
86 | "name" : "Digest-1.20",
87 | "repo" : "https://github.com/Dual-Life/digest",
88 | "repo_def_branch" : "master",
89 | "repo_name" : "digest",
90 | "repo_owner" : "Dual-Life",
91 | "uses_rt" : false,
92 | "ver" : "1.20"
93 | },
94 | {
95 | "auth" : "TODDR",
96 | "bugtracker" : "https://github.com/Dual-Life/digest-md5/issues",
97 | "date" : "2023-12-30",
98 | "dist" : "Digest-MD5",
99 | "insecure_repo" : false,
100 | "name" : "Digest-MD5-2.59",
101 | "repo" : "https://github.com/dual-Life/digest-md5",
102 | "repo_def_branch" : "master",
103 | "repo_name" : "digest-md5",
104 | "repo_owner" : "dual-Life",
105 | "uses_rt" : false,
106 | "ver" : "2.59"
107 | },
108 | {
109 | "auth" : "TODDR",
110 | "bugtracker" : "https://github.com/Perl/perl5/issues",
111 | "date" : "2023-12-30",
112 | "dist" : "Exporter",
113 | "insecure_repo" : false,
114 | "name" : "Exporter-5.78",
115 | "repo" : "https://github.com/Perl/perl5/tree/blead/dist/Exporter",
116 | "repo_def_branch" : "",
117 | "repo_name" : "perl5/tree/blead/dist/Exporter",
118 | "repo_owner" : "Perl",
119 | "uses_rt" : false,
120 | "ver" : "5.78"
121 | },
122 | {
123 | "auth" : "TODDR",
124 | "bugtracker" : "https://github.com/perl/perl5/issues",
125 | "date" : "2023-12-29",
126 | "dist" : "FindBin",
127 | "insecure_repo" : false,
128 | "name" : "FindBin-1.54",
129 | "repo" : "https://github.com/perl/perl5",
130 | "repo_def_branch" : "blead",
131 | "repo_name" : "perl5",
132 | "repo_owner" : "perl",
133 | "uses_rt" : false,
134 | "ver" : "1.54"
135 | },
136 | {
137 | "auth" : "TODDR",
138 | "bugtracker" : "https://github.com/perl/perl5/issues",
139 | "date" : "2023-12-30",
140 | "dist" : "IO",
141 | "insecure_repo" : false,
142 | "name" : "IO-1.55",
143 | "repo" : "https://github.com/Perl/perl5/tree/blead/dist/IO",
144 | "repo_def_branch" : "",
145 | "repo_name" : "perl5/tree/blead/dist/IO",
146 | "repo_owner" : "Perl",
147 | "uses_rt" : false,
148 | "ver" : "1.55"
149 | },
150 | {
151 | "auth" : "TODDR",
152 | "bugtracker" : "http://github.com/toddr/IO-Stty/issues",
153 | "date" : "2020-01-19",
154 | "dist" : "IO-Stty",
155 | "insecure_repo" : true,
156 | "name" : "IO-Stty-0.04",
157 | "repo" : "http://github.com/toddr/IO-Stty",
158 | "repo_def_branch" : "master",
159 | "repo_name" : "IO-Stty",
160 | "repo_owner" : "toddr",
161 | "uses_rt" : false,
162 | "ver" : "0.04"
163 | },
164 | {
165 | "auth" : "TODDR",
166 | "bugtracker" : "https://github.com/toddr/IO-Tty/issues",
167 | "date" : "2023-12-28",
168 | "dist" : "IO-Tty",
169 | "insecure_repo" : false,
170 | "name" : "IO-Tty-1.20",
171 | "repo" : "https://github.com/toddr/IO-Tty",
172 | "repo_def_branch" : "master",
173 | "repo_name" : "IO-Tty",
174 | "repo_owner" : "toddr",
175 | "uses_rt" : false,
176 | "ver" : "1.20"
177 | },
178 | {
179 | "auth" : "TODDR",
180 | "bugtracker" : "https://github.com/toddr/IPC-Run/issues",
181 | "date" : "2023-10-03",
182 | "dist" : "IPC-Run",
183 | "insecure_repo" : false,
184 | "name" : "IPC-Run-20231003.0",
185 | "repo" : "https://github.com/toddr/IPC-Run",
186 | "repo_def_branch" : "master",
187 | "repo_name" : "IPC-Run",
188 | "repo_owner" : "toddr",
189 | "uses_rt" : false,
190 | "ver" : "20231003.0"
191 | },
192 | {
193 | "auth" : "TODDR",
194 | "bugtracker" : "https://github.com/perl/perl5/issues",
195 | "date" : "2023-12-30",
196 | "dist" : "Locale-Maketext",
197 | "insecure_repo" : false,
198 | "name" : "Locale-Maketext-1.33",
199 | "repo" : "https://github.com/Perl/perl5/tree/blead/dist/Locale-Maketext",
200 | "repo_def_branch" : "",
201 | "repo_name" : "perl5/tree/blead/dist/Locale-Maketext",
202 | "repo_owner" : "Perl",
203 | "uses_rt" : false,
204 | "ver" : "1.33"
205 | },
206 | {
207 | "auth" : "TODDR",
208 | "bugtracker" : "https://github.com/toddr/Net-Daemon/issues",
209 | "date" : "2020-09-25",
210 | "dist" : "Net-Daemon",
211 | "insecure_repo" : false,
212 | "name" : "Net-Daemon-0.49",
213 | "repo" : "https://github.com/toddr/Net-Daemon",
214 | "repo_def_branch" : "master",
215 | "repo_name" : "Net-Daemon",
216 | "repo_owner" : "toddr",
217 | "uses_rt" : false,
218 | "ver" : "0.49"
219 | },
220 | {
221 | "auth" : "TODDR",
222 | "bugtracker" : "http://github.com/toddr/Net-Ident/issues",
223 | "date" : "2020-01-19",
224 | "dist" : "Net-Ident",
225 | "insecure_repo" : true,
226 | "name" : "Net-Ident-1.25",
227 | "repo" : "http://github.com/toddr/Net-Ident",
228 | "repo_def_branch" : "master",
229 | "repo_name" : "Net-Ident",
230 | "repo_owner" : "toddr",
231 | "uses_rt" : false,
232 | "ver" : "1.25"
233 | },
234 | {
235 | "auth" : "TODDR",
236 | "bugtracker" : "https://github.com/toddr/perl-net-jabber-bot/issues",
237 | "date" : "2020-11-15",
238 | "dist" : "Net-Jabber-Bot",
239 | "insecure_repo" : true,
240 | "name" : "Net-Jabber-Bot-2.1.7",
241 | "repo" : "http://github.com/toddr/perl-net-jabber-bot/tree/master",
242 | "repo_def_branch" : "",
243 | "repo_name" : "perl-net-jabber-bot/tree/master",
244 | "repo_owner" : "toddr",
245 | "uses_rt" : false,
246 | "ver" : "v2.1.7"
247 | },
248 | {
249 | "auth" : "TODDR",
250 | "date" : "2010-10-07",
251 | "dist" : "Net-OSCAR",
252 | "insecure_repo" : false,
253 | "name" : "Net-OSCAR-1.928",
254 | "repo" : "git://github.com/toddr/net-oscar.git",
255 | "repo_def_branch" : "master",
256 | "repo_name" : "net-oscar",
257 | "repo_owner" : "toddr",
258 | "ver" : "1.928"
259 | },
260 | {
261 | "auth" : "TODDR",
262 | "bugtracker" : "https://github.com/toddr/Razor2-Client-Agent/issues",
263 | "date" : "2019-06-03",
264 | "dist" : "Razor2-Client-Agent",
265 | "insecure_repo" : true,
266 | "name" : "Razor2-Client-Agent-2.86",
267 | "repo" : "http://github.com/toddr/Razor2-Client-Agent",
268 | "repo_def_branch" : "master",
269 | "repo_name" : "Razor2-Client-Agent",
270 | "repo_owner" : "toddr",
271 | "uses_rt" : false,
272 | "ver" : "2.86"
273 | },
274 | {
275 | "auth" : "TODDR",
276 | "bugtracker" : "https://github.com/toddr/Regexp-Parser/issues",
277 | "date" : "2020-01-20",
278 | "dist" : "Regexp-Parser",
279 | "insecure_repo" : true,
280 | "name" : "Regexp-Parser-0.23",
281 | "repo" : "http://github.com/toddr/Regexp-Parser/tree/master",
282 | "repo_def_branch" : "",
283 | "repo_name" : "Regexp-Parser/tree/master",
284 | "repo_owner" : "toddr",
285 | "uses_rt" : false,
286 | "ver" : "0.23"
287 | },
288 | {
289 | "auth" : "TODDR",
290 | "bugtracker" : "https://github.com/toddr/Safe-Hole/issues",
291 | "date" : "2018-04-13",
292 | "dist" : "Safe-Hole",
293 | "insecure_repo" : false,
294 | "name" : "Safe-Hole-0.14",
295 | "repo" : "git://github.com/toddr/Safe-Hole.git",
296 | "repo_def_branch" : "master",
297 | "repo_name" : "Safe-Hole",
298 | "repo_owner" : "toddr",
299 | "uses_rt" : false,
300 | "ver" : "0.14"
301 | },
302 | {
303 | "auth" : "TODDR",
304 | "bugtracker" : "https://github.com/toddr/Sys-Mmap/issues",
305 | "date" : "2020-02-13",
306 | "dist" : "Sys-Mmap",
307 | "insecure_repo" : true,
308 | "name" : "Sys-Mmap-0.20",
309 | "repo" : "http://github.com/toddr/Sys-Mmap/tree/master",
310 | "repo_def_branch" : "",
311 | "repo_name" : "Sys-Mmap/tree/master",
312 | "repo_owner" : "toddr",
313 | "uses_rt" : false,
314 | "ver" : "0.20"
315 | },
316 | {
317 | "auth" : "TODDR",
318 | "bugtracker" : "https://github.com/xsawyerx/template-plugin-cgi/issues",
319 | "date" : "2022-04-27",
320 | "dist" : "Template-Plugin-CGI",
321 | "insecure_repo" : false,
322 | "name" : "Template-Plugin-CGI-3.101",
323 | "repo" : "https://github.com/xsawyerx/template-plugin-cgi",
324 | "repo_def_branch" : "main",
325 | "repo_name" : "template-plugin-cgi",
326 | "repo_owner" : "xsawyerx",
327 | "uses_rt" : false,
328 | "ver" : "3.101"
329 | },
330 | {
331 | "auth" : "TODDR",
332 | "bugtracker" : "https://github.com/abw/Template2/issues",
333 | "date" : "2024-06-21",
334 | "dist" : "Template-Toolkit",
335 | "insecure_repo" : false,
336 | "name" : "Template-Toolkit-3.102",
337 | "repo" : "https://github.com/abw/Template2",
338 | "repo_def_branch" : "master",
339 | "repo_name" : "Template2",
340 | "repo_owner" : "abw",
341 | "uses_rt" : false,
342 | "ver" : "3.102"
343 | },
344 | {
345 | "auth" : "TODDR",
346 | "bugtracker" : "https://github.com/cpanelinc/Test-MockFile/issues",
347 | "date" : "2023-07-26",
348 | "dist" : "Test-MockFile",
349 | "insecure_repo" : false,
350 | "name" : "Test-MockFile-0.036",
351 | "repo" : "https://github.com/cpanelinc/Test-MockFile",
352 | "repo_def_branch" : "master",
353 | "repo_name" : "Test-MockFile",
354 | "repo_owner" : "cpanelinc",
355 | "uses_rt" : false,
356 | "ver" : "0.036"
357 | },
358 | {
359 | "auth" : "TODDR",
360 | "bugtracker" : "https://github.com/cpanelinc/Test2-Harness-Renderer-JUnit/issues",
361 | "date" : "2023-12-28",
362 | "dist" : "Test2-Harness-Renderer-JUnit",
363 | "insecure_repo" : false,
364 | "name" : "Test2-Harness-Renderer-JUnit-1.000005",
365 | "repo" : "https://github.com/cpanelinc/Test2-Harness-Renderer-JUnit",
366 | "repo_def_branch" : "main",
367 | "repo_name" : "Test2-Harness-Renderer-JUnit",
368 | "repo_owner" : "cpanelinc",
369 | "uses_rt" : false,
370 | "ver" : "1.000005"
371 | },
372 | {
373 | "auth" : "TODDR",
374 | "bugtracker" : "http://github.com/toddr/Tie-DBI/issues",
375 | "date" : "2020-01-19",
376 | "dist" : "Tie-DBI",
377 | "insecure_repo" : true,
378 | "name" : "Tie-DBI-1.08",
379 | "repo" : "http://github.com/toddr/Tie-DBI",
380 | "repo_def_branch" : "master",
381 | "repo_name" : "Tie-DBI",
382 | "repo_owner" : "toddr",
383 | "uses_rt" : false,
384 | "ver" : "1.08"
385 | },
386 | {
387 | "auth" : "TODDR",
388 | "bugtracker" : "https://github.com/Perl/perl5/issues",
389 | "date" : "2023-02-20",
390 | "dist" : "Tie-File",
391 | "insecure_repo" : false,
392 | "name" : "Tie-File-1.07",
393 | "repo" : "https://github.com/Perl/perl5/tree/blead/dist/Tie-File",
394 | "repo_def_branch" : "",
395 | "repo_name" : "perl5/tree/blead/dist/Tie-File",
396 | "repo_owner" : "Perl",
397 | "uses_rt" : false,
398 | "ver" : "1.07"
399 | },
400 | {
401 | "auth" : "TODDR",
402 | "bugtracker" : "https://github.com/toddr/Tree-MultiNode/issues",
403 | "date" : "2021-01-22",
404 | "dist" : "Tree-MultiNode",
405 | "insecure_repo" : false,
406 | "name" : "Tree-MultiNode-1.0.14",
407 | "repo" : "https://github.com/toddr/Tree-MultiNode",
408 | "repo_def_branch" : "master",
409 | "repo_name" : "Tree-MultiNode",
410 | "repo_owner" : "toddr",
411 | "uses_rt" : false,
412 | "ver" : "v1.0.14"
413 | },
414 | {
415 | "auth" : "TODDR",
416 | "bugtracker" : "https://github.com/toddr/XML-Parser/issues",
417 | "date" : "2023-12-29",
418 | "dist" : "XML-Parser",
419 | "insecure_repo" : true,
420 | "name" : "XML-Parser-2.47",
421 | "repo" : "http://github.com/toddr/XML-Parser",
422 | "repo_def_branch" : "master",
423 | "repo_name" : "XML-Parser",
424 | "repo_owner" : "toddr",
425 | "uses_rt" : false,
426 | "ver" : "2.47"
427 | },
428 | {
429 | "auth" : "TODDR",
430 | "bugtracker" : "https://github.com/toddr/YAML-Syck/issues",
431 | "date" : "2020-10-26",
432 | "dist" : "YAML-Syck",
433 | "insecure_repo" : true,
434 | "name" : "YAML-Syck-1.34",
435 | "repo" : "http://github.com/toddr/YAML-Syck",
436 | "repo_def_branch" : "master",
437 | "repo_name" : "YAML-Syck",
438 | "repo_owner" : "toddr",
439 | "uses_rt" : false,
440 | "ver" : "1.34"
441 | },
442 | {
443 | "auth" : "TODDR",
444 | "bugtracker" : "https://github.com/pjf/autodie/issues",
445 | "date" : "2023-12-28",
446 | "dist" : "autodie",
447 | "insecure_repo" : false,
448 | "name" : "autodie-2.37",
449 | "repo" : "https://github.com/pjf/autodie",
450 | "repo_def_branch" : "master",
451 | "repo_name" : "autodie",
452 | "repo_owner" : "pjf",
453 | "uses_rt" : false,
454 | "ver" : "2.37"
455 | }
456 | ],
457 | "sort" : {
458 | "column" : 0,
459 | "direction" : "asc"
460 | }
461 | }
462 |
--------------------------------------------------------------------------------
/authors/data/VOEGELAS/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "author" : {
3 | "cpan" : "VOEGELAS",
4 | "github" : "voegelas",
5 | "gravatar" : "https://secure.gravatar.com/avatar/b748542b466dd73c8513245b1b609750?s=130",
6 | "name" : "Andreas Vögele"
7 | },
8 | "ci" : {
9 | "gh_workflow_names" : [
10 | "linux"
11 | ],
12 | "use_appveyor" : 0,
13 | "use_cirrus" : 0,
14 | "use_codecov" : 0,
15 | "use_coveralls" : 1,
16 | "use_gh_actions" : 1,
17 | "use_travis" : 0,
18 | "use_travis_com" : 0
19 | },
20 | "modules" : [
21 | {
22 | "auth" : "VOEGELAS",
23 | "bugtracker" : "https://github.com/voegelas/Alien-libmaxminddb/issues",
24 | "date" : "2024-07-16",
25 | "dist" : "Alien-libmaxminddb",
26 | "insecure_repo" : false,
27 | "name" : "Alien-libmaxminddb-1.015",
28 | "repo" : "https://github.com/voegelas/Alien-libmaxminddb",
29 | "repo_def_branch" : "main",
30 | "repo_name" : "Alien-libmaxminddb",
31 | "repo_owner" : "voegelas",
32 | "uses_rt" : false,
33 | "ver" : "1.015"
34 | },
35 | {
36 | "auth" : "VOEGELAS",
37 | "bugtracker" : "https://github.com/voegelas/CPANPLUS-Dist-Debora/issues",
38 | "date" : "2024-06-30",
39 | "dist" : "CPANPLUS-Dist-Debora",
40 | "insecure_repo" : false,
41 | "name" : "CPANPLUS-Dist-Debora-0.013",
42 | "repo" : "https://github.com/voegelas/CPANPLUS-Dist-Debora",
43 | "repo_def_branch" : "main",
44 | "repo_name" : "CPANPLUS-Dist-Debora",
45 | "repo_owner" : "voegelas",
46 | "uses_rt" : false,
47 | "ver" : "0.013"
48 | },
49 | {
50 | "auth" : "VOEGELAS",
51 | "bugtracker" : "https://github.com/voegelas/Geo-Location-TimeZoneFinder/issues",
52 | "date" : "2023-07-23",
53 | "dist" : "Geo-Location-TimeZoneFinder",
54 | "insecure_repo" : false,
55 | "name" : "Geo-Location-TimeZoneFinder-1.001",
56 | "repo" : "https://github.com/voegelas/Geo-Location-TimeZoneFinder",
57 | "repo_def_branch" : "main",
58 | "repo_name" : "Geo-Location-TimeZoneFinder",
59 | "repo_owner" : "voegelas",
60 | "uses_rt" : false,
61 | "ver" : "1.001"
62 | },
63 | {
64 | "auth" : "VOEGELAS",
65 | "bugtracker" : "https://github.com/voegelas/IP-Geolocation-MMDB/issues",
66 | "date" : "2022-12-24",
67 | "dist" : "IP-Geolocation-MMDB",
68 | "insecure_repo" : false,
69 | "name" : "IP-Geolocation-MMDB-1.010",
70 | "repo" : "https://github.com/voegelas/IP-Geolocation-MMDB",
71 | "repo_def_branch" : "main",
72 | "repo_name" : "IP-Geolocation-MMDB",
73 | "repo_owner" : "voegelas",
74 | "uses_rt" : false,
75 | "ver" : "1.010"
76 | },
77 | {
78 | "auth" : "VOEGELAS",
79 | "bugtracker" : "https://github.com/voegelas/Mail-Exim-ACL-Attachments/issues",
80 | "date" : "2024-06-09",
81 | "dist" : "Mail-Exim-ACL-Attachments",
82 | "insecure_repo" : false,
83 | "name" : "Mail-Exim-ACL-Attachments-1.006",
84 | "repo" : "https://github.com/voegelas/Mail-Exim-ACL-Attachments",
85 | "repo_def_branch" : "main",
86 | "repo_name" : "Mail-Exim-ACL-Attachments",
87 | "repo_owner" : "voegelas",
88 | "uses_rt" : false,
89 | "ver" : "1.006"
90 | },
91 | {
92 | "auth" : "VOEGELAS",
93 | "bugtracker" : "https://github.com/voegelas/Mail-Exim-ACL-Geolocation/issues",
94 | "date" : "2022-12-24",
95 | "dist" : "Mail-Exim-ACL-Geolocation",
96 | "insecure_repo" : false,
97 | "name" : "Mail-Exim-ACL-Geolocation-1.004",
98 | "repo" : "https://github.com/voegelas/Mail-Exim-ACL-Geolocation",
99 | "repo_def_branch" : "main",
100 | "repo_name" : "Mail-Exim-ACL-Geolocation",
101 | "repo_owner" : "voegelas",
102 | "uses_rt" : false,
103 | "ver" : "1.004"
104 | },
105 | {
106 | "auth" : "VOEGELAS",
107 | "bugtracker" : "https://github.com/voegelas/Mojolicious-Plugin-Geolocation-MMDB/issues",
108 | "date" : "2022-12-24",
109 | "dist" : "Mojolicious-Plugin-Geolocation-MMDB",
110 | "insecure_repo" : false,
111 | "name" : "Mojolicious-Plugin-Geolocation-MMDB-1.000",
112 | "repo" : "https://github.com/voegelas/Mojolicious-Plugin-Geolocation-MMDB",
113 | "repo_def_branch" : "main",
114 | "repo_name" : "Mojolicious-Plugin-Geolocation-MMDB",
115 | "repo_owner" : "voegelas",
116 | "uses_rt" : false,
117 | "ver" : "1.000"
118 | },
119 | {
120 | "auth" : "VOEGELAS",
121 | "bugtracker" : "https://github.com/voegelas/Statocles-Plugin-Highlight-Kamelon/issues",
122 | "date" : "2023-08-09",
123 | "dist" : "Statocles-Plugin-Highlight-Kamelon",
124 | "insecure_repo" : false,
125 | "name" : "Statocles-Plugin-Highlight-Kamelon-1.000",
126 | "repo" : "https://github.com/voegelas/Statocles-Plugin-Highlight-Kamelon",
127 | "repo_def_branch" : "main",
128 | "repo_name" : "Statocles-Plugin-Highlight-Kamelon",
129 | "repo_owner" : "voegelas",
130 | "uses_rt" : false,
131 | "ver" : "1.000"
132 | }
133 | ],
134 | "sort" : {
135 | "column" : 0,
136 | "direction" : "asc"
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/bin/add_user:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 |
3 | use strict;
4 | use warnings;
5 |
6 | use JSON;
7 | use Data::Dumper;
8 |
9 | my $json = JSON->new->pretty;
10 |
11 | my $in = $json->decode($ARGV[0]);
12 |
13 | my $out = {};
14 |
15 | for (qw[cpan github]) {
16 | $out->{author}{$_} = $in->{$_};
17 | }
18 |
19 | for (qw[gh_actions cirrus appveyor coveralls codecov]) {
20 | $out->{ci}{"use_$_"} = $in->{"use_$_"};
21 | }
22 |
23 | if ($out->{ci}{use_gh_actions}) {
24 | $out->{ci}{gh_workflow_names} = [ split /\s*,\s*/, $in->{gh_workflow_names} ];
25 | }
26 |
27 | warn $json->encode($out);
28 |
--------------------------------------------------------------------------------
/bin/dashboard:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 |
3 | use strict;
4 | use warnings;
5 | use 5.010;
6 |
7 | use File::Basename;
8 | use Getopt::Long;
9 | use Dashboard::App;
10 |
11 | my %opt;
12 | if (@ARGV) {
13 | @opt{qw[build gather]} = (0, 0);
14 | GetOptions(\%opt, 'gather', 'build', 'help');
15 | } else {
16 | @opt{qw[build gather]} = (1, 1);
17 | }
18 |
19 | if ($opt{help}) {
20 | help();
21 | }
22 |
23 | my $app = Dashboard::App->new(%opt);
24 |
25 | $app->run;
26 |
27 | sub help {
28 | my $me = basename $0;
29 |
30 | print <<"EOHELP";
31 |
32 | $me [--gather] [--build]
33 | $me --help
34 |
35 | $me is the program that generates the CPAN Dashboard web site.
36 |
37 | This process is carried out in two stages.
38 |
39 | * gather - will gather all of the information about the CPAN modules
40 | that the site is configured to know about
41 | * build - will take the data gathered in the first stage and turn it
42 | into a web site
43 |
44 | Usually, you want to run both stages - so that's what happens if you
45 | don't give it any command-line options.
46 |
47 | EOHELP
48 |
49 | exit;
50 | }
51 |
--------------------------------------------------------------------------------
/cpanfile:
--------------------------------------------------------------------------------
1 | requires 'Object::Pad', '0.813';
2 | requires 'Feature::Compat::Class', '0.07';
3 | requires 'JSON';
4 | requires 'Path::Tiny', '0.125';
5 | requires 'Template';
6 | requires 'MetaCPAN::Client';
7 | requires 'URI';
8 |
--------------------------------------------------------------------------------
/dashboard.json:
--------------------------------------------------------------------------------
1 | {
2 | "static_dir" : "src",
3 | "input_dir" : "tt_lib",
4 | "output_dir" : "docs",
5 | "index_template" : "index.tt",
6 | "page_templates" : [
7 | "add"
8 | ],
9 | "author_template" : "dashboard.tt",
10 | "wrapper" : "page.tt",
11 | "analytics" : "G-9VMMR7SVD4",
12 | "menu" : [
13 | ],
14 | "domain" : "cpandashboard.com"
15 | }
16 |
--------------------------------------------------------------------------------
/lib/Dashboard/App.pm:
--------------------------------------------------------------------------------
1 | use v5.36;
2 | use Feature::Compat::Class;
3 |
4 | no if $^V >= v5.38, warnings => 'experimental::class';
5 |
6 | class Dashboard::App {
7 | use strict;
8 | use warnings;
9 |
10 | use Dashboard::BadgeMaker;
11 |
12 | use JSON;
13 | use Path::Tiny;
14 | use Template;
15 | use MetaCPAN::Client;
16 | use URI;
17 | use FindBin '$RealBin';
18 | use File::Find;
19 |
20 | field $mcpan = MetaCPAN::Client->new;
21 | field $json = JSON->new->pretty->canonical->utf8;
22 | field $global_cfg = $json->decode(path('dashboard.json')->slurp_utf8);
23 | field $tt;
24 | field @authors;
25 | field @all_authors;
26 | field @urls;
27 | field $run_gather :param(gather) = 1;
28 | field $run_build :param(build) = 1;
29 | field $repo_def_branch;
30 | field $branch_cache_file = 'repo_def_branch.json';
31 |
32 | method run {
33 | if ($run_gather) {
34 | $self->gather_data;
35 | } else {
36 | $self->load_data;
37 | }
38 |
39 | $self->build_site if $run_build;
40 | }
41 |
42 | method gather_data {
43 |
44 | say "Gathering...";
45 |
46 | # This should be the initialiser expression for $repo_def_branch
47 | if (-f $branch_cache_file) {
48 | $repo_def_branch = $json->decode(path($branch_cache_file)->slurp_utf8);
49 | } else {
50 | $repo_def_branch = {};
51 | }
52 |
53 | for (glob "$RealBin/../authors/*.json") {
54 | push @authors, $self->do_author($_);
55 | push @urls, "https://$global_cfg->{domain}/$authors[-1]{author}{cpan}/";
56 | }
57 |
58 | path($branch_cache_file)->spew_utf8($json->encode($repo_def_branch));
59 | }
60 |
61 | method do_author {
62 | my ($file) = @_;
63 |
64 | my $cfg = $json->decode(path($file)->slurp_utf8);
65 |
66 | $cfg->{modules} = [];
67 |
68 | my $mcpan_author = $mcpan->author($cfg->{author}{cpan});
69 | my $releases = $mcpan_author->releases;
70 |
71 | my $gravatar = $mcpan_author->gravatar_url;
72 | if ($gravatar and $gravatar =~ m[^https:]) {
73 | $cfg->{author}{gravatar} = $mcpan_author->gravatar_url;
74 | }
75 | $cfg->{author}{name} = $mcpan_author->name;
76 |
77 | while ( my $rel = $releases->next ) {
78 | my $mod;
79 | $mod->{name} = $rel->name;
80 | $mod->{dist} = $rel->distribution;
81 | $mod->{ver} = $rel->version;
82 | $mod->{auth} = $rel->author;
83 | $mod->{date} = (split /T/, $rel->date)[0];
84 | # Get the repo link.
85 | # 1. It should be in the "web" key
86 | # 2. Otherwise, check the "url" key
87 | $mod->{repo} = $rel->resources->{repository}{web}
88 | // $rel->resources->{repository}{url};
89 |
90 | if ($rel->resources->{bugtracker}{web}) {
91 | $mod->{bugtracker} = $rel->resources->{bugtracker}{web};
92 | $mod->{uses_rt} = $mod->{bugtracker} =~ /rt.cpan.org/;
93 | }
94 |
95 | unless ($mod->{repo}) {
96 | warn "No repo for $mod->{name}\n";
97 | next;
98 | }
99 |
100 | unless (valid_repo($mod->{repo})) {
101 | warn "Skipping $mod->{repo}\n";
102 | next;
103 | }
104 |
105 | $mod->{repo} =~ s[/$][];
106 | # We need the repo's name. Try to extract it from the URL
107 | my $repo_uri = URI->new($mod->{repo});
108 | if ($mod->{repo} =~ /^(http|git)/) {
109 | my $path = $repo_uri->path;
110 | $path =~ s|^/||; # Remove leading slash
111 | $path =~ s|\.git$||; # Remove trailing .git
112 | @$mod{qw[repo_owner repo_name]} = split m|/|, $path, 2;
113 | $mod->{repo_name} =~ s/\.git$// if $mod->{repo} =~ /^git/;
114 | $mod->{repo_def_branch} = $self->get_repo_default_branch($mod);
115 | chomp($mod->{repo_def_branch});
116 | } else {
117 | warn "Strange repo for $mod->{name} ($mod->{repo}). Skipping.\n";
118 | next;
119 | }
120 | $mod->{insecure_repo} = $mod->{repo} =~ m|^http:|;
121 | push @{ $cfg->{modules} }, $mod;
122 | }
123 |
124 | $cfg->{modules} = [ sort { $a->{name} cmp $b->{name} } @{$cfg->{modules}} ];
125 |
126 | $cfg->{sort} //= {};
127 | $cfg->{sort}{column} //= 0;
128 | $cfg->{sort}{column} = 2 if 'date' eq lc $cfg->{sort}{column};
129 | $cfg->{sort}{direction} //= 'asc';
130 |
131 | path("docs/$cfg->{author}{cpan}")->mkdir;
132 | path("docs/$cfg->{author}{cpan}/data.json")->spew_utf8($json->encode($cfg));
133 |
134 | return $cfg;
135 | }
136 |
137 | method get_repo_default_branch {
138 | my ($module) = @_;
139 |
140 | my $path = "$module->{repo_owner}/$module->{repo_name}";
141 |
142 | unless (exists $repo_def_branch->{$module->{repo_owner}} and
143 | exists $repo_def_branch->{$module->{repo_owner}}{$module->{repo_name}}) {
144 | $repo_def_branch->{$module->{repo_owner}}{$module->{repo_name}}
145 | = `gh repo view $path --json defaultBranchRef -q .defaultBranchRef.name`;
146 | chomp $repo_def_branch->{$module->{repo_owner}}{$module->{repo_name}};
147 | }
148 |
149 | return $repo_def_branch->{$module->{repo_owner}}{$module->{repo_name}};
150 | }
151 |
152 | method load_data {
153 | for (glob "$RealBin/../authors/data/*/data.json") {
154 | push @authors, $json->decode(path($_)->slurp_utf8);
155 | push @urls, "https://$global_cfg->{domain}/$authors[-1]{author}{cpan}/";
156 | }
157 | }
158 |
159 | method build_site {
160 | say "Building...";
161 |
162 | $tt = Template->new({
163 | ENCODING => 'utf8',
164 | INCLUDE_PATH => $global_cfg->{input_dir},
165 | OUTPUT_PATH => $global_cfg->{output_dir},
166 | WRAPPER => $global_cfg->{wrapper},
167 | VARIABLES => {
168 | analytics => $global_cfg->{analytics},
169 | badges => Dashboard::BadgeMaker->new,
170 | },
171 | });
172 |
173 | $self->make_static_pages;
174 | $self->make_author_pages;
175 | $self->make_other_pages;
176 | $self->make_sitemap;
177 | }
178 |
179 | method make_static_pages {
180 |
181 | find {
182 | wanted => sub {
183 | return unless -f;
184 | my $file = $_;
185 | my $rel = path($file)->relative('.');
186 | $rel =~ s|$global_cfg->{static_dir}/||g;
187 | my $out = path($global_cfg->{output_dir}, $rel);
188 | $out->parent->mkpath;
189 | path($file)->copy($out);
190 | },
191 | no_chdir => 1,
192 | }, $global_cfg->{static_dir};
193 | }
194 |
195 | method make_author_pages {
196 | for (@authors) {
197 | $tt->process(
198 | $global_cfg->{author_template},
199 | $_,
200 | "$_->{author}{cpan}/index.html",
201 | { binmode => ':utf8' },
202 | ) or die $tt->error;
203 |
204 | if (-f "authors/data/$_->{author}{cpan}/data.json") {
205 | path("docs/$_->{author}{cpan}")->mkdir;
206 | path("authors/data/$_->{author}{cpan}/data.json")
207 | ->copy("docs/$_->{author}{cpan}/data.json");
208 | }
209 | }
210 |
211 | $tt->process(
212 | $global_cfg->{index_template},
213 | { authors => \@authors },
214 | 'index.html',
215 | { binmode => ':utf8' },
216 | );
217 | push @urls, "https://$global_cfg->{domain}/";
218 | }
219 |
220 | method make_other_pages {
221 | for (@{ $global_cfg->{page_templates} }) {
222 | $tt->process(
223 | "$_.tt",
224 | { name => ucfirst $_ },
225 | "$_/index.html",
226 | { binmode => ':utf8' },
227 | );
228 | push @urls, "https://$global_cfg->{domain}/$_/";
229 | }
230 | }
231 |
232 | method make_sitemap {
233 | @urls = sort @urls;
234 |
235 | $tt->process(
236 | 'sitemap.tt',
237 | { urls => \@urls},
238 | 'sitemap.xml',
239 | { binmode => ':utf8' },
240 | );
241 | }
242 |
243 | sub valid_repo {
244 | my ($repo_uri) = @_;
245 |
246 | return unless defined $repo_uri;
247 |
248 | # Currently we only support Github repos
249 | return $repo_uri =~ m|github\.com/|;
250 | }
251 | }
252 |
253 | 1;
254 |
--------------------------------------------------------------------------------
/lib/Dashboard/Author.pm:
--------------------------------------------------------------------------------
1 | use 5.36.0;
2 | use Feature::Compat::Class;
3 |
4 | no if $^V >= v5.38, warnings => 'experimental::class';
5 |
6 | class Dashboard::Author {
7 | use Dashboard::Distribution;
8 | use Path::Tiny;
9 |
10 | field $name :reader :param;
11 | field $cpan_name :reader :param;
12 | field $github_name :reader :param;
13 | field $gravatar_url :reader :param = '/images/gravatar.png';
14 | field $distributions :reader :param = [];
15 | field $sort :reader :param = {};
16 | field $ci :reader :param;
17 |
18 | method new_from_file :common {
19 | my ($file, $mcpan, $json) = @_;
20 |
21 | my $data = $json->decode(path($file)->slurp_utf8);
22 |
23 | my $mcpan_author = $mcpan->author($data->{author}{cpan});
24 |
25 | my $sort = $data->{sort} // {};
26 | $sort->{column} //= 0;
27 | $sort->{column} = 2 if 'date' eq lc $sort->{column};
28 | $sort->{direction} //= 'asc';
29 |
30 | my @distributions;
31 |
32 | if ($data->{distributions}) {
33 | @distributions = map { Dashboard::Distribution->new(%$_) } @{ $data->{distributions} };
34 | } else {
35 | my $releases = $mcpan_author->releases;
36 |
37 | while ( my $rel = $releases->next ) {
38 | push @distributions, Dashboard::Distribution->new_from_release($rel);
39 | }
40 |
41 | @distributions = sort { $a->name cmp $b->name } @distributions;
42 | }
43 |
44 | my @ci_systems = qw[gh_actions cirrus appveyor travis travis_com coveralls codecov];
45 | my $ci;
46 |
47 |
48 | $ci->{"use_$_"} = ($data->{ci}{"use_$_"} // 0) for @ci_systems;
49 |
50 | $ci->{gh_workflow_names} = ($data->{ci}{gh_workflow_names} // []);
51 |
52 | my $gravatar_url = $mcpan_author->gravatar_url;
53 | unless ($gravatar_url and $gravatar_url =~ m[^https:]) {
54 | undef $gravatar_url;
55 | }
56 | my $self = $class->new(
57 | name => $mcpan_author->name,
58 | gravatar_url => $gravatar_url,
59 | cpan_name => $data->{author}{cpan},
60 | github_name => $data->{author}{github},
61 | sort => $sort,
62 | distributions => \@distributions,
63 | ci => $ci,
64 | );
65 |
66 | return $self;
67 | }
68 |
69 | method new_from_data :common {
70 | my ($data) = @_;
71 |
72 | $data->{distributions} = [
73 | map { Dashboard::Distribution->new_from_data($_) } @{ $data->{distributions} }
74 | ];
75 |
76 | return $class->new(%$data);
77 | }
78 |
79 | method dump {
80 | my $ci;
81 |
82 | for (keys %{ $self->ci }) {
83 | if (/^use_/) {
84 | $ci->{$_} = $self->ci->{$_} ? $JSON::true : $JSON::false;
85 | } else {
86 | $ci->{$_} = $self->ci->{$_};
87 | }
88 | }
89 |
90 | my $data = {
91 | author => {
92 | cpan => $self->cpan_name,
93 | github => $self->github_name,
94 | gravatar => $self->gravatar_url,
95 | name => $self->name,
96 | },
97 | sort => $self->sort,
98 | distributions => [ map { $_->dump } @{ $self->distributions } ],
99 | ci => $ci,
100 | };
101 |
102 | return $data;
103 | }
104 |
105 | method as_json {
106 | return JSON->new->pretty->encode($self->dump)
107 | }
108 |
109 | method write_data_file {
110 | path('docs/' . $cpan_name)->mkdir;
111 | path('docs/' . $cpan_name . '/data.json')->spew_utf8($self->as_json);
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/lib/Dashboard/BadgeMaker.pm:
--------------------------------------------------------------------------------
1 | use v5.26;
2 | use Feature::Compat::Class;
3 |
4 | no if $^V >= v5.38, warnings => 'experimental::class';
5 |
6 | class Dashboard::BadgeMaker {
7 | use strict;
8 | use warnings;
9 |
10 | method cpan {
11 | my ($module) = @_;
12 |
13 | return $self->badge_link(
14 | "https://metacpan.org/release/$module->{dist}",
15 | "https://img.shields.io/cpan/v/$module->{dist}.svg",
16 | "CPAN version for $module->{dist}",
17 | );
18 | }
19 |
20 | method cirrus {
21 | my ($module, $task) = @_;
22 |
23 | return $self->badge_link(
24 | "https://cirrus-ci.com/github/$module->{repo_owner}/$module->{repo_name}",
25 | "https://api.cirrus-ci.com/github/$module->{repo_owner}/$module->{repo_name}.svg?task=$task",
26 | "Cirrus task $task",
27 | );
28 | }
29 |
30 | method gh {
31 | my ($module, $workflow) = @_;
32 |
33 | return $self->badge_link(
34 | "https://github.com/$module->{repo_owner}/$module->{repo_name}/actions?query=workflow%3A$workflow",
35 | "https://github.com/$module->{repo_owner}/$module->{repo_name}/workflows/$workflow/badge.svg",
36 | "GH Action $workflow",
37 | );
38 | }
39 |
40 | method appveyor {
41 | my ($module) = @_;
42 |
43 | return $self->badge_link(
44 | "https://ci.appveyor.com/project/$module->{repo_owner}/$module->{repo_name}",
45 | "https://ci.appveyor.com/api/projects/status/github/$module->{repo_owner}/$module->{repo_name}?svg=true&passingText=Windows%20-%20OK&pendingText=Windows%20-%20%3F%3F%3F&failingText=Windows%20-%20broken",
46 | "Build status for $module->{dist}",
47 | );
48 | }
49 |
50 | method travis {
51 | my ($module) = @_;
52 |
53 | return $self->badge_link(
54 | "https://travis-ci.org/$module->{repo_owner}/$module->{repo_name}?branch=$module->{repo_def_branch}",
55 | "https://travis-ci.org/$module->{repo_owner}/$module->{repo_name}.svg?branch=$module->{repo_def_branch}",
56 | "Build status for $module->{dist}",
57 | );
58 | }
59 |
60 | method travis_com {
61 | my ($module) = @_;
62 |
63 | return $self->travis($module) =~ s/travis-ci\.org/travis-ci.com/gr;
64 | }
65 |
66 | method coveralls {
67 | my ($module, $author) = @_;
68 |
69 | return $self->badge_link(
70 | "https://coveralls.io/github/$module->{repo_owner}/$module->{repo_name}?branch=$module->{repo_def_branch}",
71 | "https://coveralls.io/repos/$module->{repo_owner}/$module->{repo_name}/badge.svg?branch=$module->{repo_def_branch}&service=github",
72 | "Test coverage for $module->{dist}",
73 | );
74 | }
75 |
76 | method codecov {
77 | my ($module) = @_;
78 |
79 | return $self->badge_link(
80 | "https://codecov.io/gh/$module->{repo_owner}/$module->{repo_name}",
81 | "https://codecov.io/gh/$module->{repo_owner}/$module->{repo_name}/branch/$module->{repo_def_branch}/graph/badge.svg",
82 | "Test coverage for $module->{dist}",
83 | );
84 | }
85 |
86 | method cpants {
87 | my ($module) = @_;
88 |
89 | return $self->badge_link(
90 | "https://cpants.cpanauthors.org/release/$module->{auth}/$module->{dist}-$module->{ver}",
91 | "https://cpants.cpanauthors.org/release/$module->{auth}/$module->{dist}-$module->{ver}.svg",
92 | "Kwalitee for $module->{dist}",
93 | );
94 | }
95 |
96 | method badge_link {
97 | my ($link_url, $img_url, $alt_text) = @_;
98 |
99 | return qq[ ];
100 | }
101 |
102 | }
103 |
104 | 1;
105 |
--------------------------------------------------------------------------------
/lib/Dashboard/Distribution.pm:
--------------------------------------------------------------------------------
1 | use 5.36.0;
2 | use Feature::Compat::Class;
3 |
4 | no if $^V >= v5.38, warnings => 'experimental::class';
5 |
6 | class Dashboard::Distribution {
7 |
8 | use JSON;
9 | use URI;
10 | use Path::Tiny;
11 |
12 | field $name :param :reader;
13 | field $distribution :param :reader;
14 | field $main_module_name :param :reader;
15 | field $version :param :reader;
16 | field $author :param :reader;
17 | field $date :param :reader;
18 | field $repo :param :reader;
19 | field $uses_rt :param :reader;
20 | field $is_github :param :reader;
21 | field $repo_name :param :reader;
22 | field $repo_owner :param :reader;
23 | field $repo_def_branch :param :reader;
24 | field $is_insecure_repo :param :reader;
25 | field $bugtracker :param :reader;
26 |
27 | method new_from_release :common {
28 | my ($release) = @_;
29 |
30 | my %dist_data;
31 | $dist_data{name} = $release->name;
32 | $dist_data{distribution} = $release->distribution;
33 | $dist_data{main_module_name} = $release->main_module;
34 | $dist_data{version} = $release->version;
35 | $dist_data{author} = $release->author;
36 | $dist_data{date} = (split /T/, $release->date)[0];
37 |
38 | # Get the repo link.
39 | # 1. It should be in the "web" key
40 | # 2. Otherwise, check the "url" key
41 | $dist_data{repo} = $release->resources->{repository}{web}
42 | // $release->resources->{repository}{url};
43 |
44 | $dist_data{bugtracker} = '';
45 | if ($release->resources->{bugtracker}{web}) {
46 | $dist_data{bugtracker} = $release->resources->{bugtracker}{web};
47 | }
48 | $dist_data{uses_rt} = $dist_data{bugtracker} =~ /rt.cpan.org/;
49 |
50 | unless ($dist_data{repo}) {
51 | warn "No repo for $dist_data{name}\n";
52 | return;
53 | }
54 |
55 | $dist_data{is_github} = is_github_repo($dist_data{repo});
56 |
57 | $dist_data{repo} =~ s[/$][];
58 |
59 | my $repo_data;
60 | if ($dist_data{is_github} and $repo_data = $class->get_github_data($dist_data{author}, $dist_data{distribution})) {
61 | for (qw[repo_owner repo_name repo_def_branch]) {
62 | $dist_data{$_} = $repo_data->{$_};
63 | }
64 | $dist_data{repo} = $repo_data->{url};
65 | } else {
66 | warn "No repo data for $dist_data{distribution} ($dist_data{repo}). Skipping.\n";
67 |
68 | # We need the repo's name. Try to extract it from the URL
69 | my $repo_uri = URI->new($dist_data{repo});
70 | if ($dist_data{repo} =~ /^(http|git)/) {
71 | my $path = $repo_uri->path;
72 | $path =~ s|^/||; # Remove leading slash
73 | $path =~ s|\.git$||; # Remove trailing .git
74 | @dist_data{qw[repo_owner repo_name]} = split m|/|, $path, 2;
75 | $dist_data{repo_name} =~ s/\.git$// if $dist_data{repo} =~ /^git/;
76 | $dist_data{repo_def_branch} = get_repo_default_branch(\%dist_data);
77 | } else {
78 | warn "Strange repo for $dist_data{name} (%dist_data{repo}). Skipping.\n";
79 | return;
80 | }
81 | }
82 |
83 | $dist_data{is_insecure_repo} = $dist_data{repo} =~ m|^http:|;
84 |
85 | return $class->new(%dist_data);
86 | }
87 |
88 | method new_from_data :common {
89 | my ($data) = @_;
90 |
91 | return $class->new(%$data);
92 | }
93 |
94 | method dump {
95 | my $data = {
96 | author => $self->author,
97 | bugtracker => $self->bugtracker,
98 | date => $self->date,
99 | distribution => $self->distribution,
100 | is_insecure_repo => ($self->is_insecure_repo ? $JSON::true : $JSON::false ),
101 | name => $self->name,
102 | main_module_name => $self->main_module_name,
103 | version => $self->version,
104 | repo => $self->repo,
105 | uses_rt => ($self->uses_rt ? $JSON::true : $JSON::false ),
106 | is_github => ($self->is_github ? $JSON::true : $JSON::false),
107 | repo_name => $self->repo_name,
108 | repo_owner => $self->repo_owner,
109 | repo_def_branch => $self->repo_def_branch,
110 | };
111 |
112 | return $data;
113 | }
114 |
115 | sub is_github_repo {
116 | my ($repo_uri) = @_;
117 |
118 | return unless defined $repo_uri;
119 |
120 | # Currently we only support Github repos
121 | return $repo_uri =~ m|github\.com/|;
122 | }
123 |
124 | method get_github_data :common {
125 | my ($author, $distribution) = @_;
126 |
127 | warn "Getting github data for $author/$distribution\n";
128 |
129 | return unless -f 'github_repo.json';
130 |
131 | my $data = JSON->new->decode(path('github_repo.json')->slurp_utf8);
132 |
133 | if ($data->{$author} and $data->{$author}{$distribution}) {
134 | use Data::Printer;
135 | p $data->{$author}{$distribution};
136 | return $data->{$author}{$distribution};
137 | } else {
138 | return;
139 | }
140 | }
141 |
142 |
143 | sub get_repo_default_branch {
144 | my ($dist_data) = @_;
145 |
146 | state $branch_cache_file = 'repo_def_branch.json';
147 | state $repo_def_branch = -f $branch_cache_file ? JSON->new->decode(path($branch_cache_file)->slurp_utf8) : {};
148 |
149 | my $path = "$dist_data->{repo_owner}/$dist_data->{repo_name}";
150 |
151 | unless (exists $repo_def_branch->{$dist_data->{repo_owner}} and
152 | exists $repo_def_branch->{$dist_data->{repo_owner}}{$dist_data->{repo_name}}) {
153 | $repo_def_branch->{$dist_data->{repo_owner}}{$dist_data->{repo_name}}
154 | = ``;
155 | chomp $repo_def_branch->{$dist_data->{repo_owner}}{$dist_data->{repo_name}};
156 | }
157 |
158 | return $repo_def_branch->{$dist_data->{repo_owner}}{$dist_data->{repo_name}};
159 | }
160 | }
161 |
--------------------------------------------------------------------------------
/refresh_branch_cache:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 |
3 | use strict;
4 | use warnings;
5 | use feature 'say';
6 |
7 | use Path::Tiny;
8 | use JSON;
9 |
10 | my $json = JSON->new->pretty->canonical->utf8;
11 | my $branch_cache_file = 'repo_def_branch.json';
12 |
13 | unless (-f $branch_cache_file) {
14 | die "Cache file ($branch_cache_file) doesn't exist. Stopping.\n";
15 | }
16 |
17 | my $repo_def_branch = $json->decode(path($branch_cache_file)->slurp_utf8);
18 |
19 | OWNER:
20 | for my $owner (keys %$repo_def_branch) {
21 | for my $repo (keys %{ $repo_def_branch->{$owner} }) {
22 | warn "$owner/$repo\n";
23 | my $branch =
24 | `gh repo view "$owner/$repo" --json defaultBranchRef -q .defaultBranchRef.name`;
25 |
26 | # last OWNER if $?;
27 |
28 | chomp $branch;
29 | $repo_def_branch->{$owner}{$repo} = $branch;
30 | }
31 | }
32 |
33 | path($branch_cache_file)->spew_utf8($json->encode($repo_def_branch));
34 |
--------------------------------------------------------------------------------
/src/CNAME:
--------------------------------------------------------------------------------
1 | cpandashboard.com
--------------------------------------------------------------------------------
/src/add/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
13 |
14 |
15 |
16 |
20 |
23 |
24 |
25 |
26 | CPAN Dashboard - Add
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | CPAN Dashboard
38 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
Add your modules
50 |
51 |
It's pretty simple to add yourself to the list of CPAN authors on our front
52 | page. Currently we only support code repos on Github and a limited number of
53 | CI services (but we plan to add support for more services in the future).
54 |
55 |
Here are the steps to follow:
56 |
57 |
58 | Decide which of the supported CI services you want to use and configure
59 | them correctly. (More details on the various services below.)
60 | Take a fork of the CPAN Dashboard repo.
61 | Add a file in the authors directory. Copy
62 | this file and
63 | name the new file using your CPAN author name.
64 | Update the file to contain the correct information about your CPAN and Github usenames and
65 | the CI services that you use. Switch the various ci.use_XXX flags to 0 for services
66 | that you don't use.
67 | Send a pull request adding your file
68 | to my repo.
69 | Sit back and wait for me to merge your PR.
70 |
71 |
72 |
Supported CI services
73 |
74 |
We currently support the following CI services:
75 |
76 |
77 |
78 |
86 |
87 |
88 |
Github Actions can do many things. But we're just using it to run tests on each commit
89 | and report on the success or failure of the test run. Add a directory called
90 | .github/workflows to your code repository and in that directory create a YAML
91 | file that runs the processes that you want to run. A basic workflow file for testing a
92 | CPAN module might look
93 | something like this .
94 |
You can track as many Github Actions as you like and the badges will stack on top of
95 | each other in your dashboard (this isn't currently as pretty as I'd like it, but we're
96 | working on it). Remember the values of the name keys in your YAML files as you'll
97 | need to add those to the ci.gh_workflow_names option in your new configuration
98 | file. We currently expect all of your modules to run the same set of Github Actions.
99 |
100 |
101 |
102 |
103 |
104 |
112 |
113 |
114 |
Coveralls.io measures your test coverage. Log in
115 | with your Github credentials and turn on the repos that you want to use. You also have to
116 | find a way to feed coverage data to your Coveralls.io account. For example, using GitHub
117 | Actions, I define a job like this:
118 |
119 | coverage:
120 | runs-on: ubuntu-latest
121 | container: davorg/perl-coveralls:latest
122 | name: Test coverage
123 | steps:
124 | - uses: actions/checkout@v4
125 | - name: Install modules
126 | run: cpanm -n --installdeps .
127 | - name: Coverage
128 | env:
129 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
130 | run: cover -test -report Coveralls
131 |
132 |
Next time you commit something to one of your repos, you will also get coverage
133 | information appearing at Coveralls.io.
134 |
135 |
136 |
137 |
138 |
139 |
147 |
148 |
149 |
150 |
We support Codecov.io , but haven't written instructions
151 | for it yet.
152 |
153 |
154 |
155 |
156 |
157 |
165 |
166 |
167 |
168 |
We support Cirrus CI , but haven't written instructions
169 | for it yet.
170 |
171 |
172 |
173 |
174 |
175 |
183 |
184 |
185 |
186 |
We support AppVeyor , but haven't written instructions
187 | for it yet.
188 |
189 |
190 |
191 |
192 |
193 |
Fixing issues
194 |
195 | A number of issue that could be discovered by the CPAN Dashboard and how to fix them.
196 |
197 |
198 | Add a link to the code repos to the metadata of all of your CPAN modules.
199 | (Gabor has a tutorial about that .)
200 | Configure GitHub Actions
201 | Configure Coveralls
202 | ...
203 |
204 |
205 |
206 |
212 |
213 |
214 |
215 |
218 |
219 |
220 |
221 |
222 |
--------------------------------------------------------------------------------
/src/css/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 70px;
3 | padding-bottom: 50px;
4 | }
5 | footer {
6 | padding: 10px;
7 | border-top: solid 1px black;
8 | position: fixed;
9 | bottom: 0;
10 | width: 100%;
11 | height: 40px;
12 | background-color: #f5f5f5;
13 | }
14 | img.header {
15 | max-width: 100%;
16 | min-width: 100%;
17 | max-height: 15%;
18 | object-fit: cover;
19 | }
20 |
21 | .warn {
22 | color: red;
23 | }
24 |
25 | img.gravatar {
26 | width: 130px;
27 | height: 130px;
28 | object-fit: scale-down;
29 | }
30 |
31 | .author.card {
32 | max-width: 130px;
33 | min-width: 130px;
34 | width: 130px;
35 | margin: 1rem;
36 | }
37 |
38 | .card-deck {
39 | margin-bottom: 1rem;
40 | }
41 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PerlToolsTeam/dashboard/31614b1199a525a166ffe1a94059e2c52396086e/src/favicon.ico
--------------------------------------------------------------------------------
/src/images/dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PerlToolsTeam/dashboard/31614b1199a525a166ffe1a94059e2c52396086e/src/images/dashboard.png
--------------------------------------------------------------------------------
/src/images/gravatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PerlToolsTeam/dashboard/31614b1199a525a166ffe1a94059e2c52396086e/src/images/gravatar.png
--------------------------------------------------------------------------------
/src/images/gravatar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PerlToolsTeam/dashboard/31614b1199a525a166ffe1a94059e2c52396086e/src/images/gravatar.webp
--------------------------------------------------------------------------------
/src/images/missing_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PerlToolsTeam/dashboard/31614b1199a525a166ffe1a94059e2c52396086e/src/images/missing_image.png
--------------------------------------------------------------------------------
/src/js/dashboard.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function()
2 | {
3 | $(".backup_picture").on("error", function(){
4 | $(this).attr('src', '/images/missing_image.png');
5 | });
6 |
7 | // See https://datatables.net/ for how this works
8 |
9 | $('#sort_table').DataTable({
10 | "paging": true,
11 | "columnDefs": [
12 | { "targets": [0, 3], "orderable": true },
13 | { "targets": "_all", "orderable": false },
14 | ],
15 | "order": [[ column, direction ]]
16 | });
17 | });
18 |
--------------------------------------------------------------------------------
/src/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/tt_lib/add.tt:
--------------------------------------------------------------------------------
1 | Add your modules
2 |
3 | It's pretty simple to add yourself to the list of CPAN authors on our front
4 | page. Currently we only support code repos on Github and a limited number of
5 | CI services (but we plan to add support for more services in the future).
6 |
7 | Here are the steps to follow:
8 |
9 |
10 | Decide which of the supported CI services you want to use and configure
11 | them correctly. (More details on the various services below.)
12 | Take a fork of the CPAN Dashboard repo.
13 | Add a file in the authors directory. Copy
14 | this file and
15 | name the new file using your CPAN author name.
16 | Update the file to contain the correct information about your CPAN and Github usenames and
17 | the CI services that you use. Switch the various ci.use_XXX flags to 0 for services
18 | that you don't use.
19 | Send a pull request adding your file
20 | to my repo.
21 | Sit back and wait for me to merge your PR.
22 |
23 |
24 | Supported CI services
25 |
26 | We currently support the following CI services:
27 |
28 |
29 |
30 |
38 |
39 |
40 |
Github Actions can do many things. But we're just using it to run tests on each commit
41 | and report on the success or failure of the test run. Add a directory called
42 | .github/workflows to your code repository and in that directory create a YAML
43 | file that runs the processes that you want to run. A basic workflow file for testing a
44 | CPAN module might look
45 | something like this .
46 |
You can track as many Github Actions as you like and the badges will stack on top of
47 | each other in your dashboard (this isn't currently as pretty as I'd like it, but we're
48 | working on it). Remember the values of the name keys in your YAML files as you'll
49 | need to add those to the ci.gh_workflow_names option in your new configuration
50 | file. We currently expect all of your modules to run the same set of Github Actions.
51 |
52 |
53 |
54 |
55 |
56 |
64 |
65 |
66 |
Coveralls.io measures your test coverage. Log in
67 | with your Github credentials and turn on the repos that you want to use. You also have to
68 | find a way to feed coverage data to your Coveralls.io account. For example, using GitHub
69 | Actions, I define a job like this:
70 |
71 | coverage:
72 | runs-on: ubuntu-latest
73 | container: davorg/perl-coveralls:latest
74 | name: Test coverage
75 | steps:
76 | - uses: actions/checkout@v4
77 | - name: Install modules
78 | run: cpanm -n --installdeps .
79 | - name: Coverage
80 | env:
81 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82 | run: cover -test -report Coveralls
83 |
84 |
Next time you commit something to one of your repos, you will also get coverage
85 | information appearing at Coveralls.io.
86 |
87 |
88 |
89 |
90 |
91 |
99 |
100 |
101 |
102 |
We support Codecov.io , but haven't written instructions
103 | for it yet.
104 |
105 |
106 |
107 |
108 |
109 |
117 |
118 |
119 |
120 |
We support Cirrus CI , but haven't written instructions
121 | for it yet.
122 |
123 |
124 |
125 |
126 |
127 |
135 |
136 |
137 |
138 |
We support AppVeyor , but haven't written instructions
139 | for it yet.
140 |
141 |
142 |
143 |
144 |
145 | Fixing issues
146 |
147 | A number of issue that could be discovered by the CPAN Dashboard and how to fix them.
148 |
149 |
150 | Add a link to the code repos to the metadata of all of your CPAN modules.
151 | (Gabor has a tutorial about that .)
152 | Configure GitHub Actions
153 | Configure Coveralls
154 | ...
155 |
156 |
157 |
--------------------------------------------------------------------------------
/tt_lib/dashboard.tt:
--------------------------------------------------------------------------------
1 | [% MACRO good_bugtracker BLOCK -%]
2 | 🐞
3 | [% END -%]
4 | [% MACRO rt_bugtracker BLOCK -%]
5 | RT
6 | [% END -%]
7 | [% MACRO no_bugtracker BLOCK -%]
8 | ❔
9 | [% END -%]
10 | [% META author_page = 1 -%]
11 |
15 | CPAN Dashboard - [% author.cpan %]
16 |
17 | A dashboard to see the state of
18 | [% author.cpan %]'s CPAN modules .
19 | You can download this data as JSON .
20 |
21 |
22 |
23 | Name / Repo
24 | MetaCPAN
25 | CPANTS
26 | Date
27 | Bugs
28 | [% IF ci.use_gh_actions -%]
29 | GH Actions
30 | [% END -%]
31 | [% IF ci.use_travis -%]
32 | Travis CI (.org)
33 | [% END -%]
34 | [% IF ci.use_travis_com -%]
35 | Travis CI (.com)
36 | [% END -%]
37 | [% IF ci.use_cirrus -%]
38 | Cirrus CI
39 | [% END -%]
40 | [% IF ci.use_appveyor -%]
41 | Appveyor CI
42 | [% END -%]
43 | [% IF ci.use_coveralls -%]
44 | Coveralls
45 | [% END -%]
46 | [% IF ci.use_codecov -%]
47 | Codecov
48 | [% END -%]
49 |
50 |
51 |
52 | [% FOREACH m IN modules -%]
53 |
54 | [% m.dist %] [% IF m.insecure_repo %] ⚠ [% END %]
55 | [% badges.cpan(m) %]
56 | [% badges.cpants(m) %]
57 | [% m.date %]
58 | [% IF m.bugtracker %][% good_bugtracker %] [% ELSE; no_bugtracker; END %]
59 | [% IF ci.use_gh_actions -%]
60 | [%- FOREACH workflow_name IN ci.gh_workflow_names -%]
61 | [% badges.gh(m, workflow_name) %][% UNLESS loop.last %] [% END -%]
62 | [%- END %]
63 | [% END -%]
64 | [% IF ci.use_travis -%]
65 | [% badges.travis(m) %]
66 | [% END -%]
67 | [% IF ci.use_travis_com -%]
68 | [% badges.travis_com(m) %]
69 | [% END -%]
70 | [% IF ci.use_cirrus -%]
71 | [%- FOREACH task_name IN ci.cirrus_task_names -%]
72 | [% badges.cirrus(m, task_name) %][% UNLESS loop.last %] [% END -%]
73 | [%- END %]
74 | [% END -%]
75 | [% IF ci.use_appveyor -%]
76 | [% badges.appveyor(m) %]
77 | [% END -%]
78 | [% IF ci.use_coveralls -%]
79 | [% badges.coveralls(m, author) %]
80 | [% END -%]
81 | [% IF ci.use_codecov -%]
82 | [% badges.codecov(m) %]
83 | [% END -%]
84 |
85 | [% END -%]
86 |
87 |
88 |
--------------------------------------------------------------------------------
/tt_lib/index.tt:
--------------------------------------------------------------------------------
1 |
2 | CPAN Dashboard
3 | A dashboard to see the state of various people's
4 | CPAN modules.
5 |
6 | Current authors
7 |
8 | [% FOR author IN authors.sort(cpan) -%]
9 |
10 |
11 |
14 |
15 | [% END -%]
16 |
17 | Add yourself to the list
18 |
--------------------------------------------------------------------------------
/tt_lib/page.tt:
--------------------------------------------------------------------------------
1 | [% IF no_wrapper OR template.no_wrapper; content; ELSE -%]
2 |
3 |
4 |
5 | [% IF author_page OR template.author_page;
6 | desc = "Monitoring the continuous integration for " _ author.cpan _ "'s CPAN modules.";
7 | ELSE;
8 | desc = "Monitor the continuous integration for your CPAN modules.";
9 | END -%]
10 | [% IF analytics -%]
11 |
12 |
13 |
20 | [% END -%]
21 |
22 |
23 |
24 |
25 |
29 |
32 |
33 |
34 |
35 | [% title = 'CPAN Dashboard: Monitoring CI for CPAN modules';
36 | url = 'https://cpandashboard.com/';
37 | IF author_page OR template.author_page;
38 | title = title _ ' - ' _ author.cpan;
39 | url = url _ author.cpan _ '/';
40 | ELSIF name;
41 | title = title _ ' - ' _ name;
42 | url = url _ name.lower _ '/';
43 | END -%]
44 | [% title %]
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | CPAN Dashboard
57 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | [% content -%]
80 |
81 |
82 | CPAN dashboard written by @davorg /
83 | Code on Github /
84 | Please consider sponsoring davorg /
85 | Page rebuilt at: [% USE date(format = '%Y-%m-%dT%H:%M:%S'); date.format(gmt => 1) %] UTC
86 |
87 |
88 |
89 |
90 |
93 |
94 |
95 |
96 |
97 |
98 | [% END -%]
99 |
--------------------------------------------------------------------------------
/tt_lib/sitemap.tt:
--------------------------------------------------------------------------------
1 | [% META no_wrapper = 1 -%]
2 | [% USE Date -%]
3 |
4 |
5 | [% FOR url IN urls -%]
6 |
7 | [% url %]
8 | [% Date.format(Date.now, '%Y-%m-%d') %]
9 |
10 | [% END -%]
11 |
12 |
--------------------------------------------------------------------------------