Skip to main content

OpenStax Nebu publishing utility

Project description

CNX Nebu Publishing Utility

This is a command-line interface for interacting with connexions content. The tools is primarily used to publish content to the website.

This software requires:

  • Python >= 3.6 <= 3.8

  • libmagic(libmagic1 on Linux)

  • JRE >= 6


  1. Install python3 (on OSX you can run brew install python3)

  2. Run pip3 install --upgrade pip setuptools in a terminal to upgrade python tools

  3. Make sure libmagic is installed (default on Linux, on OSX use brew install libmagic)

  4. Run pip3 install nebuchadnezzar in a terminal

  5. Run neb --help to verify the application is installed



  1. Install python3 (on OSX you can run brew install python3)

  2. Make sure libmagic is installed (default on Linux, on OSX use brew install libmagic)

  3. Install virtualenv (on OSX you can run pip3 install virtualenv)

  4. Initialize the python virtual environment:

    1. virtualenv ./venv/ --python=python3.5

    2. source ./venv/bin/activate

    3. pip3 install --upgrade pip setuptools

    4. python develop or (preferably) pip3 install -e .

Developer Run

  1. Open up a new terminal

  2. source ./venv/bin/activate

  3. Now you can run various commands:

    • neb --help for help with the various commands


To run all tests: make test

To run a single test called test_main: make test -- -k test_main


There are a few ways to ensure neb attempts to connect with the desired server:

  1. Use a configuration file

  2. Don’t use a configuration file, and pass an environment name

  3. (For neb get) Don’t use a configuration file, and pass a specific archive host as an argument

Using a configuration file

The CLI will expect a configuration file as either ~/.config/nebuchadnezzar.ini or as defined by the NEB_CONFIG environment variable. You can use this file to configure environment-specific URL values for:

  • url: The environment specific URL

  • archive_url: The archive endpoint URL (this is optional, and if not provided the tool will construct the URL based upon convention)

An example of using both of these values to define a test environment:


url =
archive_url =

Passing target host as environment

For the get, publish, and ping commands, you can specify an environment value in the following forms and avoid a configuration file:

  1. An environment where the target host is

    Example: neb publish qa ... will access

  2. An environment that is a FQDN but doesn’t specifiy protocol

    Example: neb publish ... will access

  3. An environment that is a FQDN with protocol

    Example: neb publish ... will access

Specifying archive host

For the get command, if you need to access an archive host that doesn’t follow the archive-{environment} convention and also want to avoid using a configuration file, you can use the --archive argument:

  • Example: neb get vagrant --archive ...

Configuring an Editor


  1. Install

  2. Install Java

    1. For macOS you can install Java by installing and then running brew install java in a terminal.

Install (with automatic Atom config)

  1. Start up Atom

  2. Install the linter-autocomplete-jing package

  3. Type <kbd>⌘</kbd>+<kbd>,</kbd> (for Mac) to open Settings (or click Atom, Preferences… in the menu bar)

    1. Click Install in the left-hand-side

    2. Enter linter-autocomplete-jing and click Install

    3. Alternative: run apm install linter-autocomplete-jing from the commandline

  4. Run neb atom-config (NOTE: This will overwrite your Atom config file. If you’d prefer updating the config file yourself, see ‘Manual Atom config’ below.)

  5. Restart Atom

  6. Open an unzipped complete-zip. (I run atom ~/Downloads/col1234_complete From a terminal)

  7. Verify by opening an index.cnxml file and typing in <figure> somewhere in the file. You should see a red flag near the tag that says RNG: element "figure" missing required attribute "id".

Manual Atom config

This step is only necessary if you didn’t run neb atom-config above. After completing this step, resume the instructions above from the ‘Restart Atom’ step.

Add the following to your Atom configuration by clicking Atom, Config in the menu bar and copying and pasting the below (NOTE: indentation is important):


      # Add this to the bottom of the customFileTypes area.
      # Note: Indentation is important!
      "text.xml": [

  # And then this to the bottom of the file
  # 1. Make sure "linter-autocomplete-jing" only occurs once in this file!
  # 1. make sure it is indented by 2 spaces just like it is in this example.

    displaySchemaWarnings: true
    rules: [
        priority: 1
          pathRegex: ".cnxml$"
          schemaProps: [
              lang: "rng"
              path: "~/.neb/cnxml-validation/cnxml/xml/cnxml/schema/rng/0.7/cnxml-jing.rng"


This software is subject to the provisions of the GNU Affero General Public License Version 3.0 (AGPL). See LICENSE.txt for details. Copyright (c) 2016-2018 Rice University

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

nebuchadnezzar-9.13.1-py3-none-any.whl (133.0 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page