Skip to content
forked from slab/quill

Archived A cross browser rich text editor with an API

License

Notifications You must be signed in to change notification settings

mobitroll/kahoot-quill

 
 

Repository files navigation

kahoot-quill

Build Status

This repo is a fork of Quill, a modern rich text editor built for compatibility and extensibility. It was created by Jason Chen and Byron Milligan and open sourced by Salesforce.com.

To get started with Quill, check out the Github Page or jump straight into the demo.

Please see the official Quill README for more information about the base project and its development.

Development process

To add a new feature to kahoot-quill, follow these steps.

1. Create a feature branch from stage

git checkout stage
git pull origin stage
git checkout -b JIRA-9999-feature-name

2. Make changes

Make changes to the code. See Local development of kahoot-quill below for how to install and build the code.

3. Run automated tests

Run the tests on your local machine. This is essential as we currently do not run the tests automatically at any point. We are running builds on TravisCI experimentally, and this will be built into the process in the future. Right now you can see the build status on pull requests.

4. Make a pull request to stage and merge

Commit and push your branch, then go to GitHub and make a pull request from your branch to the stage branch. N.B. By default the selected base branch will be quilljs/quill:develop. Make sure you switch to mobitroll/kahoot-quill:stage! Review the PR with someone, then merge it to stage when ready.

Release process

kahoot-quill is pulled into mobitroll-kahoot through the GitHub registry via jspm (see LINK). This uses GitHub release objects. In order to update the kahoot-quill code pulled into mobitroll-kahoot, therefore, we need to do a new GitHub release. There is no fixed schedule: these releases can be done as needed.

1. Merge stage to master

Create a PR from stage to master and review the changes with someone else. When you are satisfied that the changes are ready to go into production, merge the PR.

2. Run release script

Do this on your local machine, from the base kahoot-quill directory. The script requires perl. Make sure you've committed/stashed any work before running the script.

./release.sh a.b.c

where a.b.c is the target semver release number, e.g. 0.20.2.

Accept the default commit message when vim comes up.

The script will abort if certain conditions are not met: for example, if your working directory is not clean when you run the script, or if there are no changes to the dist files after compiling. Make sure it has exited successfully before continuing.

3. Create GitHub release

Go to the kahoot-quill GitHub releases page at https://github.com/mobitroll/kahoot-quill/releases. Click Draft a new release and select the tag corresponding to the target release number.

Local Development of kahoot-quill

Quill's source is in Coffeescript and utilizes Browserify to organize its files.

Installation

npm install -g grunt-cli
npm install

Building

grunt dist - compile and browserify
grunt server - starts a local server that will build and serve assets on the fly

Examples

With the local server (grunt server) running you can try out some minimal examples on:

Testing

grunt test:unit - runs javascript test suite with Chrome
grunt test:e2e - runs end to end tests with Webdriver + Chrome
grunt test:coverage - run tests measuring coverage with Chrome

Tests are run by Karma and Protractor using Jasmine. Check out Gruntfile.coffee and config/grunt/ for more testing options.

Troubleshooting

If grunt test:e2e fails with the error No selenium server jar found at the specified location, try running the following command in the base kahoot-quill directory:

node node_modules/protractor/bin/webdriver-manager update

Then run grunt test:e2e again.

Linking kahoot-quill into mobitroll-kahoot

If you want to develop on kahoot-quill live within the vagrant development environment of mobitroll-kahoot/builder, you'll have to use jspm linking.

First in the checked out kahoot-quill repository, create a local link to "mobitroll/kahoot-quill@x.y.z".

jspm link npm:mobitroll/kahoot-quill@x.y.z

Then in mobitroll-kahoot/builder, install the link:

jspm install --link npm:mobitroll/kahoot-quill@x.y.z

This will create a symlink in mobitroll-kahoot/builder/jspm_packages/npm/kahoot-quill@x.y.z to the kahoot-quill directory. The problem is that the symlink is created with an absolute path and will fail to be served from within vagrant (unless you use jspm inside vagrant). The not-so-pretty solution to this is to override the symlink inside vagrant:

vagrant ssh
ln -s /home/sync_dir/kahoot-quill /home/sync_dir/mobitroll-kahoot/builder/jspm_packages/npm/mobitroll/kahoot-quill@x.y.z

Issues/todos

  • Integrate Travis CI into pull requests (as in base repo)
  • Develop strategy for merging in upstream changes
  • Run tests automatically in release script
  • Accept default commit message in release script so user doesn't have to quit vim

License

BSD 3-clause

About

Archived A cross browser rich text editor with an API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CoffeeScript 94.6%
  • CSS 3.6%
  • JavaScript 1.3%
  • Shell 0.5%