README.md in octopress-3.0.0.rc.26 vs README.md in octopress-3.0.0.rc.27

- old
+ new

@@ -1,10 +1,10 @@ # Octopress Octopress is an obsessively designed toolkit for writing and deploying Jekyll blogs. Pretty sweet, huh? -<!--[![Gem Version](https://badge.fury.io/rb/octopress.png)](http://badge.fury.io/rb/octopress)--> +[![Gem Version](https://badge.fury.io/rb/octopress.png)](http://badge.fury.io/rb/octopress) [![Build Status](https://travis-ci.org/octopress/octopress.png?branch=master)](https://travis-ci.org/octopress/octopress) ## Installation Add this line to your application's Gemfile: @@ -17,36 +17,225 @@ Or install it yourself as: $ gem install octopress --pre -## Basic Usage +## Octopress Commands -Here are the commands for Octopress. +Here are the subcommands for Octopress. -| Option | Description | -|:--------------------------------|:----------------------------------------------| -| `octopress init <PATH>` | Adds Octopress scaffolding to your site | -| `octopress new <PATH>` | Like `jekyll new` + `octopress init` | -| `octopress new post <TITLE>` | Add a new post to your site | -| `octopress new page <PATH>` | Add a new page to your site | -| `octopress new draft <TITLE>` | Add a new draft post to your site | -| `octopress publish <PATH>` | Publish a draft from _drafts to _posts | -| `octopress unpublish <POST>` | Convert a post into a draft | -| `octopress isolate <POST>` | Isolate one or more posts for a faster build | -| `octopress integrate` | Restores all posts, reverting isolation. | +``` +init <PATH> # Adds Octopress scaffolding to your site +new <PATH> # Like `jekyll new` + `octopress init` +new post <TITLE> # Add a new post to your site +new page <PATH> # Add a new page to your site +new draft <TITLE> # Add a new draft post to your site +publish <POST> # Publish a draft from _drafts to _posts +unpublish <POST> # Search for a post and convert it into a draft +isolate [POST] # Stash all posts but the one you're workign on for a faster build +integrate # Restores all posts, doing the opposite of the isolate command +``` -Run `octopress [command] --help` to learn more about any command and see its options. +Run `octopress --help` to list sub commands and `octopress <subcommand> --help` to learn more about any subcommand and see its options. -### Deployment +### Init -You can deploy your Octopress or Jekyll blog via git, rsync or Amazon S3. The deployment system ships with the [octopress-deploy][] gem which extends the Octopress CLI with the `deploy` command. +```sh +$ octopress init <PATH> [options] +``` -[octopress-deploy]: https://github.com/octopress/deploy +This will copy Octopress's scaffolding into the specified directory. Use the `--force` option to overwrite existing files. The scaffolding is pretty simple: +``` +_templates/ + draft + post + page +``` + +### New Post + +This automates the creation of a new post. + +```sh +$ octopress new post "My Title" +``` + +This will create a new file at `_posts/YYYY-MM-DD-my-title.markdown` with the following YAML front-matter already added. + +``` +layout: post +title: "My Title" +date: YYYY-MM-DDTHH:MM:SS-00:00 +``` + +#### Command options + +| Option | Description | +|:---------------------|:----------------------------------------| +| `--template PATH` | Use a template from <path> | +| `--date DATE` | The date for the post. Should be parseable by [Time#parse](http://ruby-doc.org/stdlib-2.1.0/libdoc/time/rdoc/Time.html#method-i-parse) | +| `--slug SLUG` | Slug for the new post. | +| `--dir DIR` | Create post at _posts/DIR/. | +| `--force` | Overwrite existing file. | + +### New Page + +Creating a new page is easy, you can use the default file name extension (.html), pass a specific extension, or end with a `/` to create +an index.html document. + +``` +$ octopress new page some-page # ./some-page.html +$ octopress new page about.md # ./about.md +$ octopress new page docs/ # ./docs/index.html +``` + +If you are working with collections, you might add a page like this: + +``` +$ octopress new page _legal/terms # ./_legal/terms.html +``` + +After the page is created, Octopress will tell you how to configure this new collection. + + +#### Command options + +| Option | Description | +|:---------------------|:----------------------------------------| +| `--template PATH` | Use a template from <path> | +| `--title TITLE` | The title of the new page | +| `--date DATE` | The date for the page. Should be parseable by [Time#parse](http://ruby-doc.org/stdlib-2.1.0/libdoc/time/rdoc/Time.html#method-i-parse) | +| `--force` | Overwrite existing file. | + +Note: The default page template doesn't expect a date. If you want to add dates +to your pages, consider adding `date: {{ date }}` to the default template +`_templates/page`, or create a new template to use for dated pages. Otherwise, +you will have the `--date` option to add a date to a page. + +### New Draft + +This will create a new post in your `_drafts` directory. + +```sh +$ octopress new draft "My Title" +``` + +| Option | Description | +|:-------------------|:------------------------------------------| +| `--template PATH` | Use a template from <path> | +| `--date DATE` | The date for the draft. Should be parseable by [Time#parse](http://ruby-doc.org/stdlib-2.1.0/libdoc/time/rdoc/Time.html#method-i-parse) (defaults to Time.now) | +| `--slug SLUG` | The slug for the new post. | +| `--force` | Overwrite exsiting file. | + +### Publish a draft + +Use the `publish` command to publish a draft to the `_posts` folder. This will also rename the file with the proper date format. + +```sh +$ octopress publish _drafts/some-cool-post.md +$ octopress publish cool +``` +In the first example, a draft is published using the path. The publish command can also search for a post by filename. The second command +would work the same as the first. If other drafts match your search, you will be prompted to select them from a menu. This is often much +faster than typing out the full path. + +| Option | Description | +|:-------------------|:------------------------------------------| +| `--date DATE` | The date for the post. Should be parseable by [Time#parse](http://ruby-doc.org/stdlib-2.1.0/libdoc/time/rdoc/Time.html#method-i-parse) | +| `--slug SLUG` | Change the slug for the new post. | +| `--dir DIR` | Create post at _posts/DIR/. | +| `--force` | Overwrite existing file. | + +When publishing a draft, the new post will use the draft's date. Pass the option `--date now` to the publish command to set the new post date from your system clock. As usual, you can pass any compatible date string as well. + +### Unpublish a post + +Use the `unpublish` command to move a post to the `_drafts` directory, renaming the file according to the drafts convention. + +```sh +$ octopress unpublish _posts/2015-01-10-some-post.md +$ octopress unpublish some post +``` + +Just like the publish command, you can either pass a path or a search string to match the file name. If more than one match is found, you +will be prompted to select from a menu of posts. + +### Templates for Posts and pages + +Octopress post and page templates look like this. + +``` +--- +layout: {{ layout }} +title: {{ title }} +--- +``` + +Dates get automatically added to a template for posts, and for pages if a --date option is set. + +You can add to the YAML front matter, add content below and even even use liquid tags and filters from your site's plugins. There are +a handful of local variables you can use when working with templates. + +| Variable | Description | +|:-------------------|:------------------------------------------| +| `date` | The date (if set) or Time.now.iso8601 | +| `title` | The title of the page (if set) | +| `slug` | The title in slug form | +| `ymd` | The date string, YYYY/MM/DD format | +| `year` | The date's year | +| `month` | The date's month, MM | +| `day` | The date's day, DD | + +By default Octopress has templates for pages, posts and drafts. You can change them or create new ones for different types of content. +To create linkposts template, add a file at `_templates/linkpost` and use it with a new post like this: + +```sh +$ octopress new post --template _templates/linkpost +``` + +File name extensions are unnecessary since they're just plain text anyway. + +## Isolate + +The `isolate` command will allow you to stash posts in `_posts/_exile` where they will be ignored by Jekyll during the build process. +Run `octopress integrate` to restore all exiled posts. This can be helpful if you have a very large site and you want to quickly preview a build +for a single post or page. + +```sh +$ octopress isolate # Move all posts +$ octopress isolate _posts/2014-10-11-kittens.md # Move post at path +$ octopress isolate kittens # Move post matching search +``` + +In the third example, if multiple posts match the search a prompt will ask you to select a post from a menu. + +## Configuration + +Octopress reads its configurations from `_config.yml`. Here's what the configuration looks like by default. + +```yaml +# Default extension for new posts and pages +post_ext: markdown +page_ext: html + +# Default templates for posts and pages +# Found in _templates/ +post_layout: post +page_layout: page + +# Format titles with titlecase? +titlecase: true + +# Change default template file (in _templates/) +post_template: post +page_template: page +draft_template: draft +``` + ## Contributing -1. Fork it +1. Fork it ( https://github.com/octopress/octopress/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request