parent
b3b2527c5d
commit
2eacb8247b
|
@ -1,5 +1,10 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.3.3 (unreleased)
|
||||||
|
|
||||||
|
- Fixed config flag in CLI
|
||||||
|
|
||||||
|
|
||||||
## 0.3.2 (2018-03-05)
|
## 0.3.2 (2018-03-05)
|
||||||
|
|
||||||
- Fix `serve` command trying to read all files as markdown
|
- Fix `serve` command trying to read all files as markdown
|
||||||
|
|
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -383,7 +383,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gutenberg"
|
name = "gutenberg"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.31.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.31.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
[package]
|
[package]
|
||||||
name = "gutenberg"
|
name = "gutenberg"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
authors = ["Vincent Prouillet <prouillet.vincent@gmail.com>"]
|
authors = ["Vincent Prouillet <prouillet.vincent@gmail.com>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
description = "A static site generator with everything built-in"
|
description = "A fast static site generator with everything built-in"
|
||||||
homepage = "https://github.com/Keats/gutenberg"
|
homepage = "https://github.com/Keats/gutenberg"
|
||||||
repository = "https://github.com/Keats/gutenberg"
|
repository = "https://github.com/Keats/gutenberg"
|
||||||
keywords = ["static", "site", "generator", "blog"]
|
keywords = ["static", "site", "generator", "blog"]
|
||||||
|
|
|
@ -15,8 +15,8 @@ _gutenberg() {
|
||||||
|
|
||||||
local context curcontext="$curcontext" state line
|
local context curcontext="$curcontext" state line
|
||||||
_arguments "${_arguments_options[@]}" \
|
_arguments "${_arguments_options[@]}" \
|
||||||
'-c[Path to a config file other than config.toml]' \
|
'-c+[Path to a config file other than config.toml]' \
|
||||||
'--config[Path to a config file other than config.toml]' \
|
'--config=[Path to a config file other than config.toml]' \
|
||||||
'-h[Prints help information]' \
|
'-h[Prints help information]' \
|
||||||
'--help[Prints help information]' \
|
'--help[Prints help information]' \
|
||||||
'-V[Prints version information]' \
|
'-V[Prints version information]' \
|
||||||
|
|
|
@ -1,74 +1,79 @@
|
||||||
|
|
||||||
@('gutenberg', './gutenberg') | %{
|
using namespace System.Management.Automation
|
||||||
Register-ArgumentCompleter -Native -CommandName $_ -ScriptBlock {
|
using namespace System.Management.Automation.Language
|
||||||
param($wordToComplete, $commandAst, $cursorPosition)
|
|
||||||
|
|
||||||
$command = '_gutenberg'
|
Register-ArgumentCompleter -Native -CommandName 'gutenberg' -ScriptBlock {
|
||||||
$commandAst.CommandElements |
|
param($wordToComplete, $commandAst, $cursorPosition)
|
||||||
Select-Object -Skip 1 |
|
|
||||||
%{
|
|
||||||
switch ($_.ToString()) {
|
|
||||||
|
|
||||||
'gutenberg' {
|
|
||||||
$command += '_gutenberg'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
'init' {
|
|
||||||
$command += '_init'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
'build' {
|
|
||||||
$command += '_build'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
'serve' {
|
|
||||||
$command += '_serve'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
'help' {
|
|
||||||
$command += '_help'
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
default {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$completions = @()
|
|
||||||
|
|
||||||
switch ($command) {
|
|
||||||
|
|
||||||
'_gutenberg' {
|
|
||||||
$completions = @('init', 'build', 'serve', 'help', '-c', '-h', '-V', '--config', '--help', '--version')
|
|
||||||
}
|
|
||||||
|
|
||||||
'_gutenberg_init' {
|
|
||||||
$completions = @('-h', '-V', '--help', '--version')
|
|
||||||
}
|
|
||||||
|
|
||||||
'_gutenberg_build' {
|
|
||||||
$completions = @('-h', '-V', '-u', '-o', '--help', '--version', '--base-url', '--output-dir')
|
|
||||||
}
|
|
||||||
|
|
||||||
'_gutenberg_serve' {
|
|
||||||
$completions = @('-h', '-V', '-i', '-p', '-o', '-u', '--help', '--version', '--interface', '--port', '--output-dir', '--base-url')
|
|
||||||
}
|
|
||||||
|
|
||||||
'_gutenberg_help' {
|
|
||||||
$completions = @('-h', '-V', '--help', '--version')
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$commandElements = $commandAst.CommandElements
|
||||||
|
$command = @(
|
||||||
|
'gutenberg'
|
||||||
|
for ($i = 1; $i -lt $commandElements.Count; $i++) {
|
||||||
|
$element = $commandElements[$i]
|
||||||
|
if ($element -isnot [StringConstantExpressionAst] -or
|
||||||
|
$element.StringConstantType -ne [StringConstantType]::BareWord -or
|
||||||
|
$element.Value.StartsWith('-')) {
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
$element.Value
|
||||||
|
}) -join ';'
|
||||||
|
|
||||||
$completions |
|
$completions = @(switch ($command) {
|
||||||
?{ $_ -like "$wordToComplete*" } |
|
'gutenberg' {
|
||||||
Sort-Object |
|
[CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Path to a config file other than config.toml')
|
||||||
%{ New-Object System.Management.Automation.CompletionResult $_, $_, 'ParameterValue', $_ }
|
[CompletionResult]::new('--config', 'config', [CompletionResultType]::ParameterName, 'Path to a config file other than config.toml')
|
||||||
}
|
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('init', 'init', [CompletionResultType]::ParameterValue, 'Create a new Gutenberg project')
|
||||||
|
[CompletionResult]::new('build', 'build', [CompletionResultType]::ParameterValue, 'Builds the site')
|
||||||
|
[CompletionResult]::new('serve', 'serve', [CompletionResultType]::ParameterValue, 'Serve the site. Rebuild and reload on change automatically')
|
||||||
|
[CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Prints this message or the help of the given subcommand(s)')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'gutenberg;init' {
|
||||||
|
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'gutenberg;build' {
|
||||||
|
[CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'Force the base URL to be that value (default to the one in config.toml)')
|
||||||
|
[CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Force the base URL to be that value (default to the one in config.toml)')
|
||||||
|
[CompletionResult]::new('-o', 'o', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
||||||
|
[CompletionResult]::new('--output-dir', 'output-dir', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
||||||
|
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'gutenberg;serve' {
|
||||||
|
[CompletionResult]::new('-i', 'i', [CompletionResultType]::ParameterName, 'Interface to bind on')
|
||||||
|
[CompletionResult]::new('--interface', 'interface', [CompletionResultType]::ParameterName, 'Interface to bind on')
|
||||||
|
[CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Which port to use')
|
||||||
|
[CompletionResult]::new('--port', 'port', [CompletionResultType]::ParameterName, 'Which port to use')
|
||||||
|
[CompletionResult]::new('-o', 'o', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
||||||
|
[CompletionResult]::new('--output-dir', 'output-dir', [CompletionResultType]::ParameterName, 'Outputs the generated site in the given path')
|
||||||
|
[CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'Changes the base_url')
|
||||||
|
[CompletionResult]::new('--base-url', 'base-url', [CompletionResultType]::ParameterName, 'Changes the base_url')
|
||||||
|
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'gutenberg;help' {
|
||||||
|
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
|
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
|
||||||
|
Sort-Object -Property ListItemText
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,13 +32,21 @@ _gutenberg() {
|
||||||
|
|
||||||
case "${cmd}" in
|
case "${cmd}" in
|
||||||
gutenberg)
|
gutenberg)
|
||||||
opts=" -c -h -V --config --help --version init build serve help"
|
opts=" -h -V -c --help --version --config init build serve help"
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
case "${prev}" in
|
case "${prev}" in
|
||||||
|
|
||||||
|
--config)
|
||||||
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
-c)
|
||||||
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
;;
|
;;
|
||||||
|
@ -56,19 +64,19 @@ _gutenberg() {
|
||||||
case "${prev}" in
|
case "${prev}" in
|
||||||
|
|
||||||
--base-url)
|
--base-url)
|
||||||
COMPREPLY=("<base_url>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-u)
|
-u)
|
||||||
COMPREPLY=("<base_url>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--output-dir)
|
--output-dir)
|
||||||
COMPREPLY=("<output_dir>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-o)
|
-o)
|
||||||
COMPREPLY=("<output_dir>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -117,35 +125,35 @@ _gutenberg() {
|
||||||
case "${prev}" in
|
case "${prev}" in
|
||||||
|
|
||||||
--interface)
|
--interface)
|
||||||
COMPREPLY=("<interface>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-i)
|
-i)
|
||||||
COMPREPLY=("<interface>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--port)
|
--port)
|
||||||
COMPREPLY=("<port>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-p)
|
-p)
|
||||||
COMPREPLY=("<port>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--output-dir)
|
--output-dir)
|
||||||
COMPREPLY=("<output_dir>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-o)
|
-o)
|
||||||
COMPREPLY=("<output_dir>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--base-url)
|
--base-url)
|
||||||
COMPREPLY=("<base_url>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-u)
|
-u)
|
||||||
COMPREPLY=("<base_url>")
|
COMPREPLY=($(compgen -f ${cur}))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -123,8 +123,10 @@ impl Config {
|
||||||
/// Parses a config file from the given path
|
/// Parses a config file from the given path
|
||||||
pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Config> {
|
pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Config> {
|
||||||
let mut content = String::new();
|
let mut content = String::new();
|
||||||
|
let path = path.as_ref();
|
||||||
|
let file_name = path.file_name().unwrap();
|
||||||
File::open(path)
|
File::open(path)
|
||||||
.chain_err(|| "No `config.toml` file found. Are you in the right directory?")?
|
.chain_err(|| format!("No `{:?}` file found. Are you in the right directory?", file_name))?
|
||||||
.read_to_string(&mut content)?;
|
.read_to_string(&mut content)?;
|
||||||
|
|
||||||
Config::parse(&content)
|
Config::parse(&content)
|
||||||
|
|
|
@ -13,7 +13,7 @@ the command help by running `gutenberg <cmd> --help`.
|
||||||
Creates the directory structure used by Gutenberg at the given directory.
|
Creates the directory structure used by Gutenberg at the given directory.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ gutenberg init <my_site>
|
$ gutenberg init my_site
|
||||||
```
|
```
|
||||||
|
|
||||||
will create a new folder named `my_site` and the files/folders needed by
|
will create a new folder named `my_site` and the files/folders needed by
|
||||||
|
@ -37,10 +37,17 @@ This is useful for example when you want to deploy previews of a site to a dynam
|
||||||
deploy previews.
|
deploy previews.
|
||||||
|
|
||||||
+You can override the default output directory 'public' by passing a other value to the `output-dir` flag.
|
+You can override the default output directory 'public' by passing a other value to the `output-dir` flag.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ gutenberg build --output-dir $DOCUMENT_ROOT
|
$ gutenberg build --output-dir $DOCUMENT_ROOT
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also point to another config file than `config.toml` like so - the position of the `config` option is important:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ gutenberg --config config.staging.toml build
|
||||||
|
```
|
||||||
|
|
||||||
## serve
|
## serve
|
||||||
|
|
||||||
This will build and serve the site using a local server. You can also specify
|
This will build and serve the site using a local server. You can also specify
|
||||||
|
@ -63,3 +70,10 @@ hard refresh if possible.
|
||||||
|
|
||||||
Gutenberg does a best-effort to live reload but some changes cannot be handled automatically. If you
|
Gutenberg does a best-effort to live reload but some changes cannot be handled automatically. If you
|
||||||
fail to see your change, you will need to restart `gutenberg serve`.
|
fail to see your change, you will need to restart `gutenberg serve`.
|
||||||
|
|
||||||
|
|
||||||
|
You can also point to another config file than `config.toml` like so - the position of the `config` option is important:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ gutenberg --config config.staging.toml serve
|
||||||
|
```
|
||||||
|
|
|
@ -10,6 +10,8 @@ pub fn build_cli() -> App<'static, 'static> {
|
||||||
Arg::with_name("config")
|
Arg::with_name("config")
|
||||||
.short("c")
|
.short("c")
|
||||||
.long("config")
|
.long("config")
|
||||||
|
.default_value("config.toml")
|
||||||
|
.takes_value(true)
|
||||||
.help("Path to a config file other than config.toml")
|
.help("Path to a config file other than config.toml")
|
||||||
)
|
)
|
||||||
.subcommands(vec![
|
.subcommands(vec![
|
||||||
|
|
|
@ -29,7 +29,7 @@ mod prompt;
|
||||||
fn main() {
|
fn main() {
|
||||||
let matches = cli::build_cli().get_matches();
|
let matches = cli::build_cli().get_matches();
|
||||||
|
|
||||||
let config_file = matches.value_of("config").unwrap_or("config.toml");
|
let config_file = matches.value_of("config").unwrap();
|
||||||
|
|
||||||
match matches.subcommand() {
|
match matches.subcommand() {
|
||||||
("init", Some(matches)) => {
|
("init", Some(matches)) => {
|
||||||
|
|
Loading…
Reference in a new issue