Devel-Cover

 view release on metacpan or  search on metacpan

utils/dc  view on Meta::CPAN

  mkdir -p "$results_dir"
  local cpancover=cpancover
  if [[ $(pwd) != /dc ]]; then
    local root=
    [[ -d /dc ]] && root=/dc/
    PATH="./utils:./bin:$PATH"
    perl Makefile.PL && make
    cpancover="perl -Mblib=$root ${root}bin/cpancover --local"
  fi
  ((verbose)) && cpancover="$cpancover --verbose"
  ((force)) && cpancover="$cpancover --force"
  ((dryrun)) && cpancover="$cpancover --dryrun"
  local cmd
  cmd="$cpancover --env $env --results_dir $results_dir"
  cmd="$cmd --workers $(nice_cpus) $*"
  ((verbose)) && pi "$cmd"
  $cmd || true
}

recipe_cpancover() {
  run_cpancover "${args[@]:-}"
}

cpancover_docker_ps() {
  local name="${docker_image//[^a-zA-Z0-9_.]/-}"
  $docker ps -a | tail -n +2 | grep "$name-" | grep -vw "$(hostname)"
}

recipe_cpancover-docker-ps() {
  cpancover_docker_ps
}

cpancover_docker_ps_ids() {
  cpancover_docker_ps | awk '{ print $1 }' || true
}

recipe_cpancover-docker-kill() {
  cpancover_docker_ps_ids | xargs -r "$docker" kill
}

cpancover_docker_rm() {
  cpancover_docker_ps_ids | xargs -r "$docker" rm -f
  $docker system prune --force
}

recipe_cpancover-docker-rm() {
  cpancover_docker_rm
}

recipe_cpancover-docker-rm-image() {
  $docker ps -q --filter ancestor="$docker_image" | xargs -r "$docker" stop
  $docker ps -aq --filter ancestor="$docker_image" | xargs -r "$docker" rm
  $docker rmi "$docker_image"
}

recipe_docker-build() {
  local build="$srcdir/../docker/BUILD"
  "$build" -e "$env" "${args[@]:+${args[@]}}"
}

# docker push authenticates via `docker login` credentials stored in
# ~/.docker/config.json. The Docker Hub *web API* (hub.docker.com/v2),
# used for listing and deleting tags, has its own auth — POST username +
# PAT to /v2/users/login to obtain a JWT. The CLI credentials cannot be
# reused for this.
#
# HUB_USERNAME: your Docker Hub username
# HUB_TOKEN:    a Personal Access Token created at
#               https://hub.docker.com/settings/security
#               (needs Read & Write & Delete permissions)

Docker_hub_repo="pjcj/cpancover"

# Authenticate with Docker Hub and print a JWT.
docker_hub_auth() {
  if [[ -z "${HUB_USERNAME:-}" || -z "${HUB_TOKEN:-}" ]]; then
    pf "HUB_USERNAME and HUB_TOKEN environment variables are required"
  fi

  local token
  token=$(curl -sf "https://hub.docker.com/v2/users/login" \
    -H "Content-Type: application/json" \
    -d "{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_TOKEN\"}" |
    perl -MJSON::PP -e 'print decode_json(do { local $/; <STDIN> })->{token}')

  if [[ -z "$token" ]]; then
    pf "Failed to authenticate with Docker Hub"
  fi

  echo "$token"
}

# Fetch versioned tags from Docker Hub into the Hub_tags array (sorted
# newest-first). Sets Hub_token for callers that need it afterwards.
docker_hub_fetch_tags() {
  Hub_token=$(docker_hub_auth)
  Hub_tags=()

  local base="https://hub.docker.com/v2/repositories"
  local url="$base/$Docker_hub_repo/tags?page_size=100"
  while [[ -n "$url" && "$url" != "null" ]]; do
    local response
    response=$(curl -sf "$url" -H "Authorization: Bearer $Hub_token")
    local parsed
    parsed=$(echo "$response" | perl -MJSON::PP -e '
      my $d = decode_json(do { local $/; <STDIN> });
      for (@{$d->{results}}) {
        my $n = $_->{name};
        print "$n\n" if $n =~ /^\d{4}-\d{2}-\d{2}-\d{4}-/;
      }
      print "---NEXT---\n";
      print $d->{next} // "null", "\n";
    ')
    while IFS= read -r t; do
      [[ "$t" == "---NEXT---" ]] && break
      [[ -n "$t" ]] && Hub_tags+=("$t")
    done <<<"$parsed"
    url=$(tail -1 <<<"$parsed")
  done

  # Sort newest-first (the tag format is naturally sortable)
  mapfile -t Hub_tags < <(printf '%s\n' "${Hub_tags[@]}" | sort -r)
}



( run in 2.887 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )