/pub-dartlang

The pub.dartlang.org site

Primary LanguagePythonOtherNOASSERTION

This is the server that is used on pub.dartlang.org as the default package repository for the Pub package manager.

For license information, please see LICENSE.

Repository Structure

pub_dartlang.py	The entry point for running the app.
app.yaml		App Engine configuration.
third_party/	External dependencies, included in the repo so that App
			Engine will see them.
handlers/		Code that handles HTTP requests.
models/		Models for persisting data to the App Engine Datastore.
views/		Mustache templates.

test.py		The entry point for testing the app.
tests/		Code for testing the app.

Running the Server Locally

The server is written in Python and intended to run on Google App Engine. To run it locally, perform the following steps:

  • Install the App Engine SDK for Python.

  • Make sure the SDK is on your $PATH.1

  • Install required packages.2

    pip install beautifulsoup4 pycrypto webtest
    
  • From the root directory of this repository, run:

    dev_appserver.py app
    
  • Open your browser to http://localhost:8080/ to see that it works.

  • To run tests:

    ./test.py
    
  • To publish packages to your local test server, visit http://localhost:8080/admin (sign in as administrator), go to the "Private Key" tab & enter any string into the private key field.

1 This might have been done already if you allowed the Google App Engine launcher to add symbolic links to your $PATH.

2 On installing packages:

  • Beautiful Soup & WebTest are only required for running tests.
  • Some Linux distributions come with PyCrypto installed by default. Make sure at least version 2.6 installed.
  • If using Mac and pip is not available, install brew and run brew install python.

Contributing

Pub is open source, and we appreciate Pull Requests. Please read more about contributing to pub.dartlang.org.

Deploying

See the docs on branches and versions.

Modifying the CSS and Documentation

The CSS files are generated from the source Sass files using Compass. To get ready to make changes, you'll need Ruby and Python. Then:

  1. Ensure you have bundler installed:

    gem install bundler
    
  2. Run this to install the dependencies:

    bundle install
    
  3. Run this to install the latest version of Pygments for syntax highlighting:

    sudo pip install --upgrade pygments
    

Note that this is only needed on your development machine to iterate on the CSS. The deployed server just uses the pre-compiled CSS and only requires Python.

Once you have everything installed, to modify the styles:

  1. Run Foreman to automatically regenerate the CSS files when any Sass files change:

    bundle exec foreman start
    
  2. Edit the .scss files under css/sass.

When you make changes to SCSS files, make sure to check in the generated CSS files with them.

Reporting issues, feature requests, and bugs

We appreciate feedback. Please open issues and features.