Create new project
This commit is contained in:
		
						commit
						021b8ea21f
					
				
							
								
								
									
										5
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
[*.rs]
 | 
			
		||||
end_of_line = lf
 | 
			
		||||
charset = utf-8
 | 
			
		||||
indent_style = space
 | 
			
		||||
indent_size = 4
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
target
 | 
			
		||||
.idea/
 | 
			
		||||
							
								
								
									
										257
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										257
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@ -0,0 +1,257 @@
 | 
			
		||||
[root]
 | 
			
		||||
name = "gutenberg"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "clap 2.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "error-chain 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ansi_term"
 | 
			
		||||
version = "0.9.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "backtrace"
 | 
			
		||||
version = "0.3.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "backtrace-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "rustc-demangle 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "backtrace-sys"
 | 
			
		||||
version = "0.1.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "gcc 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "bitflags"
 | 
			
		||||
version = "0.7.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "cfg-if"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap"
 | 
			
		||||
version = "2.19.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "unicode-segmentation 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clippy"
 | 
			
		||||
version = "0.0.103"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "clippy_lints 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clippy_lints"
 | 
			
		||||
version = "0.0.103"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "quine-mc_cluskey 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "toml 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "unicode-normalization 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "dbghelp-sys"
 | 
			
		||||
version = "0.2.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "error-chain"
 | 
			
		||||
version = "0.7.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "backtrace 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "gcc"
 | 
			
		||||
version = "0.3.39"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "kernel32-sys"
 | 
			
		||||
version = "0.2.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "libc"
 | 
			
		||||
version = "0.2.18"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "matches"
 | 
			
		||||
version = "0.1.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "nom"
 | 
			
		||||
version = "1.2.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "quine-mc_cluskey"
 | 
			
		||||
version = "0.2.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "regex-syntax"
 | 
			
		||||
version = "0.3.9"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rustc-demangle"
 | 
			
		||||
version = "0.1.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rustc-serialize"
 | 
			
		||||
version = "0.3.21"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "semver"
 | 
			
		||||
version = "0.2.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde"
 | 
			
		||||
version = "0.8.19"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "strsim"
 | 
			
		||||
version = "0.5.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "term_size"
 | 
			
		||||
version = "0.2.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "toml"
 | 
			
		||||
version = "0.1.30"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "toml"
 | 
			
		||||
version = "0.2.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-normalization"
 | 
			
		||||
version = "0.1.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-segmentation"
 | 
			
		||||
version = "0.1.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-width"
 | 
			
		||||
version = "0.1.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "vec_map"
 | 
			
		||||
version = "0.6.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "winapi"
 | 
			
		||||
version = "0.2.8"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "winapi-build"
 | 
			
		||||
version = "0.1.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[metadata]
 | 
			
		||||
"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6"
 | 
			
		||||
"checksum backtrace 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f551bc2ddd53aea015d453ef0b635af89444afa5ed2405dd0b2062ad5d600d80"
 | 
			
		||||
"checksum backtrace-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3602e8d8c43336088a8505fa55cae2b3884a9be29440863a11528a42f46f6bb7"
 | 
			
		||||
"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
 | 
			
		||||
"checksum cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de1e760d7b6535af4241fca8bd8adf68e2e7edacc6b29f5d399050c5e48cf88c"
 | 
			
		||||
"checksum clap 2.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "956cee0b2427dd9e71129a509d1ef17a7f5df9f8253924074d7a5d79bc61851e"
 | 
			
		||||
"checksum clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)" = "5b4fabf979ddf6419a313c1c0ada4a5b95cfd2049c56e8418d622d27b4b6ff32"
 | 
			
		||||
"checksum clippy_lints 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)" = "ce96ec05bfe018a0d5d43da115e54850ea2217981ff0f2e462780ab9d594651a"
 | 
			
		||||
"checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"
 | 
			
		||||
"checksum error-chain 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1cd681735364a04cd5d69f01a4f6768e70473941f8d86d8c224faf6955a75799"
 | 
			
		||||
"checksum gcc 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)" = "771e4a97ff6f237cf0f7d5f5102f6e28bb9743814b6198d684da5c58b76c11e0"
 | 
			
		||||
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
 | 
			
		||||
"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
 | 
			
		||||
"checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1"
 | 
			
		||||
"checksum nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8c256fd9471521bcb84c3cdba98921497f1a331cbc15b8030fc63b82050ce"
 | 
			
		||||
"checksum quine-mc_cluskey 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "07589615d719a60c8dd8a4622e7946465dfef20d1a428f969e3443e7386d5f45"
 | 
			
		||||
"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
 | 
			
		||||
"checksum rustc-demangle 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1430d286cadb237c17c885e25447c982c97113926bb579f4379c0eca8d9586dc"
 | 
			
		||||
"checksum rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "bff9fc1c79f2dec76b253273d07682e94a978bd8f132ded071188122b2af9818"
 | 
			
		||||
"checksum semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d5b7638a1f03815d94e88cb3b3c08e87f0db4d683ef499d1836aaf70a45623f"
 | 
			
		||||
"checksum serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)" = "58a19c0871c298847e6b68318484685cd51fa5478c0c905095647540031356e5"
 | 
			
		||||
"checksum strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "67f84c44fbb2f91db7fef94554e6b2ac05909c9c0b0bc23bb98d3a1aebfe7f7c"
 | 
			
		||||
"checksum term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7f5f3f71b0040cecc71af239414c23fd3c73570f5ff54cf50e03cef637f2a0"
 | 
			
		||||
"checksum toml 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "0590d72182e50e879c4da3b11c6488dae18fccb1ae0c7a3eda18e16795844796"
 | 
			
		||||
"checksum toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4"
 | 
			
		||||
"checksum unicode-normalization 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26643a2f83bac55f1976fb716c10234485f9202dcd65cfbdf9da49867b271172"
 | 
			
		||||
"checksum unicode-segmentation 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c3bc443ded17b11305ffffe6b37e2076f328a5a8cb6aa877b1b98f77699e98b5"
 | 
			
		||||
"checksum unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6722facc10989f63ee0e20a83cd4e1714a9ae11529403ac7e0afd069abc39e"
 | 
			
		||||
"checksum vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac5efe5cb0fa14ec2f84f83c701c562ee63f6dcc680861b21d65c682adfb05f"
 | 
			
		||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
 | 
			
		||||
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
 | 
			
		||||
							
								
								
									
										25
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
[package]
 | 
			
		||||
name = "gutenberg"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
authors = ["Vincent Prouillet <vincent@wearewizards.io>"]
 | 
			
		||||
license = "MIT"
 | 
			
		||||
readme = "README.md"
 | 
			
		||||
description = "Static site generator"
 | 
			
		||||
homepage = "https://github.com/Keats/gutenberg"
 | 
			
		||||
repository = "https://github.com/Keats/gutenberg"
 | 
			
		||||
keywords = ["static", "site", "generator", "blog"]
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
error-chain = "0.7"
 | 
			
		||||
clap = "2.19"
 | 
			
		||||
clippy = {version = "~0.0.103", optional = true}
 | 
			
		||||
 | 
			
		||||
[dependencies.toml]
 | 
			
		||||
version = "0.2"
 | 
			
		||||
default-features = false
 | 
			
		||||
features = ["serde"]
 | 
			
		||||
 | 
			
		||||
[features]
 | 
			
		||||
default = []
 | 
			
		||||
dev = ["clippy"]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								src/cmd/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/cmd/mod.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
mod new;
 | 
			
		||||
 | 
			
		||||
pub use self::new::create_new_project;
 | 
			
		||||
							
								
								
									
										41
									
								
								src/cmd/new.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/cmd/new.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
			
		||||
 | 
			
		||||
use std::io::prelude::*;
 | 
			
		||||
use std::fs::{create_dir, File};
 | 
			
		||||
use std::path::Path;
 | 
			
		||||
 | 
			
		||||
use errors::{Result, ErrorKind};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const CONFIG: &'static str = r#"
 | 
			
		||||
title = "My site"
 | 
			
		||||
base_url = "https://replace-this-with-your-url.com"
 | 
			
		||||
"#;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pub fn create_new_project<P: AsRef<Path>>(name: P) -> Result<()> {
 | 
			
		||||
    let path = name.as_ref();
 | 
			
		||||
    // Better error message than the rust default
 | 
			
		||||
    if path.exists() && path.is_dir() {
 | 
			
		||||
        return Err(ErrorKind::FolderExists(path.to_string_lossy().to_string()).into());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // main folder
 | 
			
		||||
    create_dir(path)?;
 | 
			
		||||
    create_file(path.join("config.toml"), CONFIG.trim_left())?;
 | 
			
		||||
 | 
			
		||||
    // content folder
 | 
			
		||||
    create_dir(path.join("content"))?;
 | 
			
		||||
 | 
			
		||||
    // layouts folder
 | 
			
		||||
    create_dir(path.join("layouts"))?;
 | 
			
		||||
 | 
			
		||||
    create_dir(path.join("static"))?;
 | 
			
		||||
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn create_file<P: AsRef<Path>>(path: P, content: &str) -> Result<()> {
 | 
			
		||||
    let mut file = File::create(&path)?;
 | 
			
		||||
    file.write_all(content.as_bytes())?;
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								src/config.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/config.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
// use std::path::Path;
 | 
			
		||||
 | 
			
		||||
// use errors::{Result};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, PartialEq)]
 | 
			
		||||
pub struct Config {
 | 
			
		||||
    pub title: String,
 | 
			
		||||
    pub base_url: String,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//impl Config {
 | 
			
		||||
//    pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Config> {
 | 
			
		||||
//        Ok(())
 | 
			
		||||
//    }
 | 
			
		||||
//}
 | 
			
		||||
							
								
								
									
										13
									
								
								src/errors.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/errors.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
 | 
			
		||||
error_chain! {
 | 
			
		||||
    foreign_links {
 | 
			
		||||
        Io(::std::io::Error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    errors {
 | 
			
		||||
        FolderExists(name: String) {
 | 
			
		||||
            description("folder already exists")
 | 
			
		||||
            display("Folder '{}' already exists.", name)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
// `error_chain!` can recurse deeply
 | 
			
		||||
#![recursion_limit = "1024"]
 | 
			
		||||
 | 
			
		||||
#[macro_use] extern crate clap;
 | 
			
		||||
#[macro_use] extern crate error_chain;
 | 
			
		||||
 | 
			
		||||
mod config;
 | 
			
		||||
mod errors;
 | 
			
		||||
mod cmd;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
    let matches = clap_app!(myapp =>
 | 
			
		||||
        (version: crate_version!())
 | 
			
		||||
        (author: "Vincent Prouillet")
 | 
			
		||||
        (about: "Static site generator")
 | 
			
		||||
        (@setting SubcommandRequiredElseHelp)
 | 
			
		||||
        (@subcommand new =>
 | 
			
		||||
            (about: "Create a new Gutenberg project")
 | 
			
		||||
            (@arg name: +required "Name of the project. Will create a directory with that name in the current directory")
 | 
			
		||||
        )
 | 
			
		||||
    ).get_matches();
 | 
			
		||||
 | 
			
		||||
    match matches.subcommand() {
 | 
			
		||||
        ("new", Some(matches)) => {
 | 
			
		||||
            match cmd::create_new_project(matches.value_of("name").unwrap()) {
 | 
			
		||||
              Ok(()) => {
 | 
			
		||||
                  println!("Project created");
 | 
			
		||||
              },
 | 
			
		||||
              Err(e) => {
 | 
			
		||||
                  println!("Error: {}", e);
 | 
			
		||||
                  ::std::process::exit(1);
 | 
			
		||||
              },
 | 
			
		||||
            };
 | 
			
		||||
        },
 | 
			
		||||
        _ => unreachable!(),
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user