On this page:
3.1.1 Dependencies
3.1.1.1 System-Provided Dependencies
3.1.1.2 Integrated Dependencies
3.1.2 Downloading Source
3.1.3 Building from Source
3.1.4 Layout
3.1.4.1 Libraries - /  lib
3.1.4.2 Backend Support Source Files - /  src/  backend
3.1.4.3 Backend Server - /  src/  collects
3.1.4.4 Fronted - /  src/  frontend
3.1.4.5 Fronted Testing - /  src/  tests/  frontend-tests
3.0.10 (HEAD-8fd80004)

3.1 Logistics

3.1.1 Dependencies

This section lists all external libraries and tools that Seashell requires to build and run.

3.1.1.1 System-Provided Dependencies

These dependencies must be present in the build environment, and are not provided by Seashell. Seashell will only build and run on a relatively modern Linux installation.

3.1.1.2 Integrated Dependencies

Seashell integrates the following external libraries into its build process:

3.1.2 Downloading Source

Seashell’s source code is maintained in a Git repository at https://github.com/cs136/seashell. Run:
  git clone https://github.com/cs136/seashell
to clone the source repository.

3.1.3 Building from Source

Seashell does not support in-tree builds. From a separate directory, run:
  cmake ${PATH_TO_SEASHELL_SOURCE} -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}
  make
  make install
to build and install Seashell.

3.1.4 Layout

Seashell’s source files are layed out in the following way:

3.1.4.1 Libraries - /lib

External dependencies and libraries are stored under /lib. If possible, do not store directly source files for external libraries under /lib. Instead, use git submodules instead.

Consult Integrated Dependencies for a list of integrated external libraries.

3.1.4.2 Backend Support Source Files - /src/backend

The source for support binaries and libraries are stored under /src/backend. The following Seashell support components live here:

3.1.4.3 Backend Server - /src/collects
3.1.4.4 Fronted - /src/frontend

console.js:
  • Console I/O

  • ASAN Parsing

file.js:
  • Handles resizing of the window

  • CodeMirror Options

  • File History

  • Hotkeys

  • Running/Stopping/Testing Files

project-list.js:
  • Refreshes project list

  • Checks for deletable

  • New projects

settings.js:
  • Saving/Loading Settings

  • Adding new Settings

filter.js:
  • Filter for the landing page

  • Add new Regexp to sort in different ways

modals.js:
  • Handles all modals in the app

  • Notable Modal is the Marmoset Results

question.js:
  • Controller for the question

  • Handles Marmoset Results

  • Marmoset Submit

  • Updates most recently used project

frontend.js:
  • Controller for the frontend

  • Help button function

  • Archive function

  • Logout function

  • Settings function

project.js:
  • Controller for the project

  • Most recently used info

  • Creds Info

routes.js:
  • Refresh function

  • Sets up paths and states

Other Files:
  • Directives.js

  • errors.js

includes directory:
  • Add additional libraries here

templates directory:
  • HTML for the various pages

3.1.4.5 Fronted Testing - /src/tests/frontend-tests

We use the testing framework Jasmine and test-runner Karma in our build. To run in the command line use the following command in the linked folder (above):
  karma start seashell.conf.js

Make sure that the seashell.conf.js file is kept up to date with any dependancies that are located inside of it. You can also change different printing options as stated in the Karma API.

Spec files (located in the spec directory) are used to test your program, examples for testing with angularJS is simple and outlined here.