# gemspec.yml

Ore uses the `gemspec.yml` file to store all static data about a project.
The `gemspec.yml` is a simple YAML file, which contains the same data
that a normal Ruby `.gemspec` file would. Below is the complete listing
of valid data that can be listed in a `gemspec.yml` file.

## name

The name of the project can be listed like so:

    name: foo

The name of the project must be specified.

## version

The version of the project can be listed like so:

    version: 1.2.3

If the version is not listed, Ore will first search for a `VERSION`
file in the root of the project. If Ore cannot find any version files,
it will then search within the `lib/` directory for a `version.rb`.

## summary

The summary of the project can be listed like so:

    summary: My awesome project

## description

The description of the project can be listed in a variety of ways:

* Single line:

      description: My project, which provides various functionality.

* Text block:

      description:
        My project, which provides the developer with various attributes
        and behaviors.

If the description is not listed, it will default to the `summary`.

## license

The license of the project can be listed like so:

    license: MIT

Multiple licenses can also be listed:

    license:
     - LGPL-2.1
     - GPL-2

## authors

The authors of the project can be listed like so:

    authors: Alice

If a project has more than one author, each author can be listed:

    authors:
     - Alice
     - Eve
     - Bob

## email

The primary email contact for the project can be listed like so:

    email: alice@example.com

If a project has more than one email contact, each email address can be
listed:

    email:
      - alice@example.com
      - eve@example.com
      - bob@example.com

## require_paths

The require_paths of a project can be listed like so:

    require_paths: lib

If there are more than one require_path that needs listing:

    require_paths:
     - ext
     - lib

## executables

The names of the executables provided by the project can be listed like so:

    executables: bin/*

One can also list the executables individually:

    executables:
     - util1
     - util2

If the `executables` are not listed, Ore will use the names of any
executable file within the `bin/` directory.

## extensions

Any Ruby C-extensions can be listed like so:

    extensions: ext/foo/extconf.rb

## documentation

The format of the documentation can be listed like so:

    documentation: yard

## extra_doc_files

The extra files that should also be scanned for documentation can be listed
like so:

    extra_doc_files:
     - ChangeLog.md
     - LICENSE.txt

If `extra_doc_files` is not listed, Ore will use the extra-files listed in
the `.document` file.

## files

The files of the project can be listed like so:

    files: lib/**/*.rb

More than one file pattern can be specification:

    files:
     - lib/**/*.rb
     - spec/**/*
     - data/**/*

If `files` is not listed, Ore will check if the project is using
[Git](http://www.git-scm.org/), can will find all tracked files using:

    git ls-files -z

If the project is not using Git, Ore will default `files` to every file in
the project.

## test_files

The files used to test the project can be listed like so:

    test_files: spec/**/*_spec.rb

More than one test-file pattern can be supplied:

    test_files:
     - spec/**/*_spec.rb
     - features/**/*

If `test_files` is not listed, Ore will default `files` to
`test/{**/}test_*.rb` and `spec/{**/}*_spec.rb`.

## post_install_message

The post-installation message for a project can be listed like so:

    post_install_message: |

      Thank you for installing MyProject 0.1.0. To start MyProject, simply
      run the following command:

      $ my_project
      

## requirements

The external requirements of the project can be listed like so:

    requirements: libcairo >= 1.8

Multiple external requirements can also be listed:

    requirements:
     - libcairo >= 1.8.0
     - libclutter >= 1.2.0

## required_ruby_version

The version of Ruby required by the project can be listed like so:

    required_ruby_version: >= 1.9.1

## required_rubygems_version

The version of RubyGems required by the project can be listed like so:

    required_rubygems_version: >= 1.3.7

If `required_rubygems_version` is not listed and the project uses
[Bundler](http://gembundler.com/), Ore will default `required_rubygems_version`
to `>= 1.3.6`.

## dependencies

The dependencies of the project can be listed like so:

    dependencies:
      foo: ~> 0.1.0
      bar: 1.2.3

More than one version can be specified for each dependency:

    dependencies:
      foo: ~> 0.1.0, >= 0.0.7
      bar:
       - 1.2.3
       - 1.3.1

## runtime_dependencies

The purely runtime-dependencies for a project can be specified like so:

    runtime_dependencies:
      foo: ~> 0.1.0
      bar: 1.2.3

More than one version can be specified for each dependency:

    runtime_dependencies:
      foo: ~> 0.1.0, >= 0.0.7
      bar:
       - 1.2.3
       - 1.3.1

## development_dependencies

The purely developmental-dependencies for a project can be specified
like so:

    development_dependencies:
      foo: ~> 0.1.0
      bar: 1.2.3

More than one version can be specified for each dependency:

    development_dependencies:
      foo: ~> 0.1.0, >= 0.0.7
      bar:
       - 1.2.3
       - 1.3.1