GPS Exchange Format library/CLI in OCaml

Compare changes

Choose any two refs to compare.

Changed files
+65 -20
.tangled
workflows
bin
lib
gpx
gpx_eio
gpx_unix
test
+32 -11
.tangled/workflows/build.yml
···
dependencies:
nixpkgs:
- shell
+
- stdenv
+
- findutils
+
- binutils
+
- libunwind
+
- ncurses
+
- opam
+
- git
+
- gawk
+
- gnupatch
+
- gnum4
+
- gnumake
+
- gnutar
+
- gnused
+
- gnugrep
+
- diffutils
+
- gzip
+
- bzip2
- gcc
-
- dune_3
- ocaml
-
- ocamlpackages.xmlm
-
- ocamlpackages.alcotest
-
- ocamlpackages.eio
-
- ocamlpackages.fmt
-
- ocamlpackages.eio_main
-
- ocamlpackages.ppx_expect
-
- ocamlpackages.cmdliner
-
- ocamlpackages.ptime
steps:
-
- name: dune
+
- name: opam
+
command: |
+
opam init --disable-sandboxing -any
+
- name: switch
+
command: |
+
opam install . --confirm-level=unsafe-yes --deps-only
+
- name: build
+
command: |
+
opam exec -- dune build --verbose
+
- name: test
command: |
-
dune build
+
opam exec -- dune runtest --verbose
+
- name: doc
+
command: |
+
opam install -y odoc
+
opam exec -- dune build @doc
+1 -1
CHANGES.md
···
-
# dev
+
# v1.0.0
- Initial public release
+1 -1
bin/dune
···
(executable
(public_name mlgpx)
(name mlgpx_cli)
-
(libraries gpx gpx_eio cmdliner eio_main fmt fmt.tty fmt.cli))
+
(libraries gpx gpx_eio cmdliner eio_main fmt fmt.tty fmt.cli))
+5 -1
dune-project
···
(lang dune 3.18)
+
(name mlgpx)
+
(generate_opam_files true)
(package
(name mlgpx)
-
(depends ocaml dune xmlm ptime eio ppx_expect alcotest eio_main cmdliner fmt logs)
+
(depends ocaml dune xmlm ptime (eio (>= 1.2)) ppx_expect alcotest eio_main cmdliner fmt logs)
(synopsis "Library and CLI for parsing and generating GPS Exchange (GPX) formats")
(description
"mlgpx is a streaming GPX (GPS Exchange Format) library for OCaml. It provides a portable core library using the xmlm streaming XML parser, with a separate Unix layer for file I/O operations. The library supports the complete GPX 1.1 specification including waypoints, routes, tracks, and metadata with strong type safety and validation.")
(license ISC)
(authors "Anil Madhavapeddy")
(homepage "https://tangled.sh/@anil.recoil.org/ocaml-gpx")
+
(maintainers "Anil Madhavapeddy <anil@recoil.org>")
+
(bug_reports https://tangled.sh/@anil.recoil.org/ocaml-gpx/issues)
(maintenance_intent "(latest)")
)
+14 -1
lib/gpx/dune
···
(public_name mlgpx.core)
(name gpx)
(libraries xmlm ptime)
-
(modules gpx parser writer validate coordinate link extension waypoint metadata route track error doc))
+
(modules
+
gpx
+
parser
+
writer
+
validate
+
coordinate
+
link
+
extension
+
waypoint
+
metadata
+
route
+
track
+
error
+
doc))
+1 -1
lib/gpx_eio/dune
···
(public_name mlgpx.eio)
(name gpx_eio)
(libraries eio xmlm ptime gpx)
-
(modules gpx_io gpx_eio))
+
(modules gpx_io gpx_eio))
+1 -1
lib/gpx_unix/dune
···
(public_name mlgpx.unix)
(name gpx_unix)
(libraries unix xmlm ptime gpx)
-
(modules gpx_io gpx_unix))
+
(modules gpx_io gpx_unix))
+4 -1
mlgpx.opam
···
"Library and CLI for parsing and generating GPS Exchange (GPX) formats"
description:
"mlgpx is a streaming GPX (GPS Exchange Format) library for OCaml. It provides a portable core library using the xmlm streaming XML parser, with a separate Unix layer for file I/O operations. The library supports the complete GPX 1.1 specification including waypoints, routes, tracks, and metadata with strong type safety and validation."
+
maintainer: ["Anil Madhavapeddy <anil@recoil.org>"]
authors: ["Anil Madhavapeddy"]
license: "ISC"
homepage: "https://tangled.sh/@anil.recoil.org/ocaml-gpx"
+
bug-reports: "https://tangled.sh/@anil.recoil.org/ocaml-gpx/issues"
depends: [
"ocaml"
"dune" {>= "3.18"}
"xmlm"
"ptime"
-
"eio"
+
"eio" {>= "1.2"}
"ppx_expect"
"alcotest"
"eio_main"
···
]
]
x-maintenance-intent: ["(latest)"]
+
dev-repo: "git+https://tangled.sh/@anil.recoil.org/ocaml-gpx"
+1
mlgpx.opam.template
···
+
dev-repo: "git+https://tangled.sh/@anil.recoil.org/ocaml-gpx"
+5 -2
test/dune
···
(modules test_gpx))
;; ppx_expect inline tests
+
(library
(name test_corpus)
(libraries gpx)
(inline_tests)
-
(preprocess (pps ppx_expect))
+
(preprocess
+
(pps ppx_expect))
(modules test_corpus))
;; Alcotest suite for Unix and Eio comparison
+
(executable
(public_name corpus_test)
(name test_corpus_unix_eio)
(libraries gpx gpx_unix gpx_eio alcotest eio_main)
(optional)
-
(modules test_corpus_unix_eio))
+
(modules test_corpus_unix_eio))