{
  "_id": "6ad7418469e274306bae8054",
  "Package": "ecospgr",
  "Title": "Shared Loader Utilities for ecospg",
  "Version": "0.6.0",
  "Authors@R": "person(\"Lars\", \"Dalby\", email = \"lars@ecos.au.dk\", role = c(\"aut\", \"cre\"))",
  "Description": "Extracts duplicated R code from ecospg data loaders into a\nreusable package. Provides database connection, catalog\nregistration, partitioned table management, staging/ingest, S3\nupload, and CLI argument parsing utilities.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.1.0",
  "Config/pak/sysreqs": "libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev\nmake libuv1-dev libssl-dev libpq-dev libproj-dev libsqlite3-dev\nlibudunits2-dev",
  "Repository": "https://ldalby.r-universe.dev",
  "Date/Publication": "2026-10-20 07:46:21 UTC",
  "RemoteUrl": "https://gitlab.au.dk/ecos/tools/r-pkgs/ecospgr",
  "RemoteRef": "HEAD",
  "RemoteSha": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-20 10:22:05 UTC",
    "User": "root"
  },
  "Author": "Lars Dalby [aut, cre]",
  "Maintainer": "Lars Dalby <lars@ecos.au.dk>",
  "_user": "ldalby",
  "_type": "src",
  "_file": "ecospgr_0.6.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/c6930f082c4a31c20360a4eccd1cc8bd0a95ec357d11ad967899e5f18bb7a16f",
  "_filesize": 170488,
  "_sha256": "c6930f082c4a31c20360a4eccd1cc8bd0a95ec357d11ad967899e5f18bb7a16f",
  "_expires": "2027-01-28T10:25:07.000Z",
  "_created": "2026-10-20T10:22:05.000Z",
  "_published": "2026-10-20T10:25:08.700Z",
  "_upstream": "https://gitlab.au.dk/ecos/tools/r-pkgs/ecospgr",
  "_status": "success",
  "_maintainer": {
    "name": "Lars Dalby",
    "email": "lars@ecos.au.dk",
    "login": "ldalby",
    "twitter": "@lars_dalby",
    "description": "Data scientist, ecologist, PhD.\n\n",
    "uuid": 2366579
  },
  "_jobs": [
    {
      "job": 118576819099,
      "time": 107,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12256948932"
    },
    {
      "job": 118576819306,
      "time": 115,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12257118974"
    },
    {
      "job": 118576819243,
      "time": 86,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12257817467"
    },
    {
      "job": 118576819245,
      "time": 92,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12257368621"
    },
    {
      "job": 118575644144,
      "time": 179,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12257692298"
    },
    {
      "job": 118576819264,
      "time": 126,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12257782532"
    },
    {
      "job": 118576819290,
      "time": 139,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12256974058"
    },
    {
      "job": 118576819287,
      "time": 127,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12257174011"
    },
    {
      "job": 118576819301,
      "time": 125,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12258202069"
    }
  ],
  "_buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591",
  "_commit": {
    "id": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
    "author": "Lars Dalby <lars@bios.au.dk>",
    "committer": "Lars Dalby <lars@bios.au.dk>",
    "message": "Merge branch 's3-env-names' into 'main'\n\nRead only S3_* storage names in epg_resolve_s3_config()\n\nSee merge request ecos/tools/r-pkgs/ecospgr!6",
    "time": 1792482381
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "DBI",
      "role": "Imports"
    },
    {
      "package": "RPostgres",
      "role": "Imports"
    },
    {
      "package": "glue",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "sf",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "gitlab-r-pkgs",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-11",
      "n": 8
    },
    {
      "week": "2026-18",
      "n": 2
    },
    {
      "week": "2026-24",
      "n": 1
    },
    {
      "week": "2026-38",
      "n": 1
    },
    {
      "week": "2026-41",
      "n": 2
    },
    {
      "week": "2026-43",
      "n": 2
    }
  ],
  "_tags": [],
  "_userbio": {
    "uuid": 2366579,
    "type": "user",
    "name": "Lars Dalby",
    "followers": 7,
    "description": "Data scientist, ecologist, PhD.\r\n\r\n"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ecospgr"
  },
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ecospgr.html",
    "extra/manual.pdf",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "epg_build_source_meta",
    "epg_check_feature_count",
    "epg_collect_source_meta_overrides",
    "epg_create_partition",
    "epg_detect_xsd_for_gml",
    "epg_dfd_auth_params",
    "epg_dfd_auth_qs",
    "epg_drop_version",
    "epg_ensure_dataset",
    "epg_ensure_topic",
    "epg_finalize_version",
    "epg_fix_encoding",
    "epg_insert_normalized",
    "epg_parse_arg",
    "epg_parse_json_arg",
    "epg_parse_json_payload",
    "epg_persist_source_meta",
    "epg_pg_connect",
    "epg_promote_latest",
    "epg_read_json_file",
    "epg_redact_url",
    "epg_register_version",
    "epg_resolve_s3_config",
    "epg_run_pipeline",
    "epg_sanitize_name",
    "epg_set_raw_file_url",
    "epg_shapefile_encoding_opts",
    "epg_upload_raw_files",
    "epg_url_without_query",
    "epg_write_staging"
  ],
  "_help": [
    {
      "page": "epg_build_source_meta",
      "title": "Build base source metadata",
      "topics": [
        "epg_build_source_meta"
      ]
    },
    {
      "page": "epg_check_feature_count",
      "title": "Check a loaded feature count against what the source reported",
      "topics": [
        "epg_check_feature_count"
      ]
    },
    {
      "page": "epg_collect_source_meta_overrides",
      "title": "Collect source metadata overrides from file and/or inline JSON",
      "topics": [
        "epg_collect_source_meta_overrides"
      ]
    },
    {
      "page": "epg_create_partition",
      "title": "Create a partition table and indexes for a dataset version",
      "topics": [
        "epg_create_partition"
      ]
    },
    {
      "page": "epg_detect_xsd_for_gml",
      "title": "Detect a companion XSD file for a GML file",
      "topics": [
        "epg_detect_xsd_for_gml"
      ]
    },
    {
      "page": "epg_dfd_auth_params",
      "title": "Datafordeler authentication query parameters",
      "topics": [
        "epg_dfd_auth_params"
      ]
    },
    {
      "page": "epg_dfd_auth_qs",
      "title": "Datafordeler authentication query string",
      "topics": [
        "epg_dfd_auth_qs"
      ]
    },
    {
      "page": "epg_drop_version",
      "title": "Remove a dataset version and its data",
      "topics": [
        "epg_drop_version"
      ]
    },
    {
      "page": "epg_ensure_dataset",
      "title": "Ensure a dataset row exists in meta.dataset",
      "topics": [
        "epg_ensure_dataset"
      ]
    },
    {
      "page": "epg_ensure_topic",
      "title": "Ensure a topic row exists in meta.topic",
      "topics": [
        "epg_ensure_topic"
      ]
    },
    {
      "page": "epg_finalize_version",
      "title": "Finalize a dataset version: mark latest and drop staging",
      "topics": [
        "epg_finalize_version"
      ]
    },
    {
      "page": "epg_fix_encoding",
      "title": "Repair text that was decoded as UTF-8 but is actually Latin-1",
      "topics": [
        "epg_fix_encoding"
      ]
    },
    {
      "page": "epg_insert_normalized",
      "title": "Insert normalized geometries from staging into a vector partition",
      "topics": [
        "epg_insert_normalized"
      ]
    },
    {
      "page": "epg_parse_arg",
      "title": "Parse a command-line flag argument",
      "topics": [
        "epg_parse_arg"
      ]
    },
    {
      "page": "epg_parse_json_arg",
      "title": "Parse a JSON value from a string or @file reference",
      "topics": [
        "epg_parse_json_arg"
      ]
    },
    {
      "page": "epg_parse_json_payload",
      "title": "Parse a JSON string",
      "topics": [
        "epg_parse_json_payload"
      ]
    },
    {
      "page": "epg_persist_source_meta",
      "title": "Persist source metadata on a dataset version",
      "topics": [
        "epg_persist_source_meta"
      ]
    },
    {
      "page": "epg_pg_connect",
      "title": "Connect to PostgreSQL using PG* environment variables",
      "topics": [
        "epg_pg_connect"
      ]
    },
    {
      "page": "epg_promote_latest",
      "title": "Promote the newest eligible year-vintage version to latest",
      "topics": [
        "epg_promote_latest"
      ]
    },
    {
      "page": "epg_read_json_file",
      "title": "Read and parse a JSON file",
      "topics": [
        "epg_read_json_file"
      ]
    },
    {
      "page": "epg_redact_url",
      "title": "Redact credentials from a URL",
      "topics": [
        "epg_redact_url"
      ]
    },
    {
      "page": "epg_register_version",
      "title": "Register a new dataset version",
      "topics": [
        "epg_register_version"
      ]
    },
    {
      "page": "epg_resolve_s3_config",
      "title": "Resolve S3-compatible object storage configuration from environment",
      "topics": [
        "epg_resolve_s3_config"
      ]
    },
    {
      "page": "epg_run_pipeline",
      "title": "Run the full ingest pipeline in a single transaction",
      "topics": [
        "epg_run_pipeline"
      ]
    },
    {
      "page": "epg_sanitize_name",
      "title": "Sanitize a string into a valid SQL/table name",
      "topics": [
        "epg_sanitize_name"
      ]
    },
    {
      "page": "epg_set_raw_file_url",
      "title": "Set the raw file URL on a dataset version",
      "topics": [
        "epg_set_raw_file_url"
      ]
    },
    {
      "page": "epg_shapefile_encoding_opts",
      "title": "GDAL open options for reading a shapefile's attributes correctly",
      "topics": [
        "epg_shapefile_encoding_opts"
      ]
    },
    {
      "page": "epg_upload_raw_files",
      "title": "Upload raw files to S3-compatible object storage",
      "topics": [
        "epg_upload_raw_files"
      ]
    },
    {
      "page": "epg_url_without_query",
      "title": "Strip the query string from a URL",
      "topics": [
        "epg_url_without_query"
      ]
    },
    {
      "page": "epg_write_staging",
      "title": "Write an sf object to a staging table",
      "topics": [
        "epg_write_staging"
      ]
    }
  ],
  "_readme": "https://gitlab.au.dk/ecos/tools/r-pkgs/ecospgr/raw/HEAD/README.md",
  "_rundeps": [
    "bit",
    "bit64",
    "blob",
    "class",
    "classInt",
    "cli",
    "cpp11",
    "DBI",
    "e1071",
    "fs",
    "generics",
    "glue",
    "hms",
    "jsonlite",
    "KernSmooth",
    "lifecycle",
    "lubridate",
    "pkgconfig",
    "proxy",
    "Rcpp",
    "rlang",
    "RPostgres",
    "s2",
    "sf",
    "timechange",
    "units",
    "vctrs",
    "withr",
    "wk"
  ],
  "_score": 2.4771212547196626,
  "_indexed": false,
  "_nocasepkg": "ecospgr",
  "_universes": [
    "ldalby"
  ],
  "_previous": "0.5.2",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.6.0",
      "date": "2026-10-20T10:24:04.000Z",
      "distro": "resolute",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/5a1bf97496715bb1b551fdf0cbbd0a4d88f07e866fc00ad25d0e81a6b99690ca",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.6.0",
      "date": "2026-10-20T10:24:14.000Z",
      "distro": "resolute",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/a6bdb1b4d873afb583473ffd7495afbafc0d1fc35f734ff935868e37fbe67c95",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.6.0",
      "date": "2026-10-20T10:23:44.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/30b75340c45bb17affa29f468a42ee97cb7c13fa0919ef17cee3973ab967059f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.6.0",
      "date": "2026-10-20T10:23:48.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/d5f4e334c5275a8be0ac0933096616c30b08cd0f1cf27c010a98885e4aa3961f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.6.0",
      "date": "2026-10-20T10:24:32.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/1b047809cfe89c774d7b3deb33a69f9f7f6dadf0f89c9faf3a0054ded4edf2a5",
      "status": "success",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.6.0",
      "date": "2026-10-20T10:23:35.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/580182d2f1c4b6089900f3196f629f8233c9abc9f1ac16d8e7981ac9ffeee00a",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.6.0",
      "date": "2026-10-20T10:23:23.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/886ca0b7c0a04a5bdb7815e2715c8e41da69453d3ccab9a1fcd91a8d1f4601f9",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.6.0",
      "date": "2026-10-20T10:23:21.000Z",
      "commit": "a2b95776e9a3ce086a7eb41c831309caa2e22ce6",
      "fileid": "https://r2.ropensci.org/c47e8b7193eb518dcfcc06a15f1d9e6dc96d8063bb452983ae830cff4696c039",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/ldalby/actions/runs/39407090591"
    }
  ]
}