guardian / content-atom

Schema for a content atom


Content Atom Model Definition

This is the Thrift definition of the Content Atom model, and the published versions of this repository are built from the autogenerated code in various languages.

Maven Central

Adding a new atom type

In order for the scala code generated from the thrift definitions to be packaged correctly a scala namespace needs to be included. For example for the chart atom this would be: #@namespace scala

How to release

Ensure you have the following installed on your machine:

  • tsc (brew install typescript)
  • npm (not sure! there are so many ways to install it)

Ensure you have an NPM account, part of the @guardian org with a configured token

release // will release the scala / thrift projects
project typescriptClasses
releaseNpm 1.0.0 // you have to specify the version again

This will release 3 artifacts to Maven Central:

  • content-atom-model-thrift-$version.jar contains only the Thrift files
  • content-atom-model_2.13-$version.jar contains the Thrift files and Scrooge-generated Scala 2.13 classes
  • content-atom-model_2.12-$version.jar contains the Thrift files and Scrooge-generated Scala 2.12 classes
  • content-atom-model_2.11-$version.jar contains the Thrift files and Scrooge-generated Scala 2.11 classes

You will need a PGP key and Sonatype credentials. See here and here for some helpful guides.

To cross release locally use

$ sbt '+publishLocal'