Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated CONTRIBUTING.md #33

Merged
merged 7 commits into from
Oct 2, 2017
Merged
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 76 additions & 21 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ and all of them would mean so much to this project.
* [Contributing code](#contributing-code)
* [Frontend](#frontend-javascripthtmlcss)
* [Backend](#backend-haskell)
* [Running Smooch on your computer](#running-smooch-on-your-computer)
* [Running Smooch on your computer](#run-smooch-on-your-computer)

## Filing an issue

You'll need to try and [get Smooch working on your own computer]() first (for
You'll need to try and [get Smooch working on your own computer](https://github.com/emhoracek/smooch/blob/master/CONTRIBUTING.md#run-smooch-on-your-computer) first (for
now anyway), but one of the easiest ways you can contribute to Smooch is by
trying to load a set and see if it works!

Expand Down Expand Up @@ -80,7 +80,7 @@ Smooch.
* Improve performance
* Move cel and palette parsing into JavaScript from cel2pnm`*`
* Add editing capabilities `*`
* Artists change the layering of cels (raising or lowering in relation to other items)
* Artists can change the layering of cels (raising or lowering in relation to other items)
* Artists can change the offset of a cel in relation its object
* Artists can change which palette a cel uses
* Artists can edit a palette
Expand Down Expand Up @@ -108,36 +108,91 @@ Items maked a `*` will need work on the frontend as well.

## Run Smooch on your computer

If any of this is confusing or doesn't work -- don't hesitate to let me know and
If any of this is confusing or doesn't work -- don't hesitate to let me know by opening an issue @emhoracek and
I'll help you out.

## General Packages

Please make sure you have the following general software installed

| Required | Library | Version Range | Notes |
| ------------- | ------------- | ---| --- |
| ✔ | [GCC compiler](https://gcc.gnu.org/) | >= 7.2 | GCC is the compiler for [GNU operating system](http://www.gnu.org/gnu/thegnuproject.html), which includes C, C++, Objective-C, Fortran, Ada, and Go |
| ✔ | [stack](https://docs.haskellstack.org/en/stable/README/#the-haskell-tool-stack) | >= 1.5.1 | `stack` is a Haskell dependency management tool |
| ✔ | [Netpbm](http://brewformulas.org/Netpbm) | >= 10.73.14 | Netpbm is a toolkit for manipulation of graphic images, including conversion of images between a variety of different formats |
| | [Homebrew](https://brew.sh/) | >= 1.3.4 | Homebrew is the missing package manager for macOS |
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really like this idea!


### Install `GCC`

You'll need a C compiler to compile the `cel2pnm` program for smooch, let's install the GCC compiler.

* On Mac OSX you can use `Homebrew` to install `gcc`, copy and past this command into your Terminal: `brew install gcc`
* On Windows / Linux or other OS, follow the [GCC installation guide](https://gcc.gnu.org/install/).

![alt text](https://preview.ibb.co/fmhcrG/brew_install.png "Brew install screenshot")

### Install `Netpbm`

This is how the images are converted from the *.pnm format that `cel2pnm` creates into a PNG image that a browser can display.
* On Mac OSX you can use `Homebrew` to install `netpbm`, copy and past this command into your Terminal: `brew install netpbm`
* On Windows / Linux or other OS, follow the [Netpbm installation guide](http://netpbm.sourceforge.net/getting_netpbm.php).


### Install `Homebrew`

Following the [Homebrew install guide here](https://brew.sh/).
* Open your terminal, copy and paste this command into your Terminal:
`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`

## Project setup

First, clone this project from Github

```
git clone https://github.com/emhoracek/smooch.git
cd smooch
```
![alt text](https://preview.ibb.co/exRHQb/gitclone.png "Git clone repo")


### Install `cel2pnm`
Now change to the `cel2pnm` directory.

You'll need a C compiler to compile the program.
* Now that you are in the top-level folder of this project, change into the `cel2pnm` directory: `cd cel2pnm`
* Compile Smooch's `cel2pnm` program by running this command:

On Mac OSX you can use [Homebrew] to install `gcc` with `brew install gcc`
```
gcc cel2pnm.c -o cel2pnm
```
![alt text](https://preview.ibb.co/npWqdw/compile_smooch.png "Compile cel2pnm program")

Now change to the `cel2pnm` directory. Run `gcc cel2pnm.c -o cel2pnm`. That will
result in the compiled program, `cel2pnm`.
* Put `cel2pnm` in your [$PATH](https://askubuntu.com/questions/551990/what-does-path-mean).

### Install `stack`

You'll need `stack` to build Smooch. [`stack`](https://github.com/commercialhaskell/stack) is a Haskell dependency management
tool (kinda like `npm` for JavaScript).

* Following the `stack` [install guide here](https://docs.haskellstack.org/en/stable/README/#how-to-install)
* Copy and paste this command into your Terminal:

```
curl -sSL https://get.haskellstack.org/ | sh
```

Put `cel2pnm` in your PATH.
![alt text](https://preview.ibb.co/cYhc8w/install_stack.png "Install stack")

(A really helpful contribution would be to make this section irrelevant by
moving the functionality of `cel2pnm` to JavaScript or Haskell! Or, providing
more documentation of how to compile and install `cel2pnm` on different
platforms.)
* Once you have `stack` installed, change to the `app` directory and run `stack setup`.
This will install the correct Haskell version (this will take a while if you don't already have it).

### Build Smooch
![alt text](https://preview.ibb.co/dNNoFb/stack_setup.png "stack setup")

You'll need `stack` to build Smooch. `stack` is a Haskell dependency management
tool (kinda like `npm` for JavaScript). You can learn how to install it for
various platforms in the [`stack` documentation].
* Next, run `stack build` which will install project dependencies
![alt text](https://preview.ibb.co/iC64ow/stack_build.png "stack build")

Once you have `stack` installed, change to the `haskell` directory and run
`stack setup`. That will install the correct Haskell version (this will take a
while if you don't already have it).
* Next, run `stack install rivet-autoimporter`

Next, run `stack build`. That will compile the Smooch app.
That will compile the Smooch app.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stack build is the part that compiles the Smooch app, rivet-autoimporter is just another dependency, a tool for migrating the database. So, I think the stack installl rivet-autoimporter step should go above the stack setup step so this sentence makes more sense.


### Setting up your database

Expand Down