* Set up CI with Azure Pipelines [skip ci] * Remove other CI + remove newline in anchor link tpl * Some more Windows specific changesindex-subcmd
@@ -1,60 +0,0 @@ | |||||
dist: trusty | |||||
language: rust | |||||
services: docker | |||||
env: | |||||
global: | |||||
- CRATE_NAME=zola | |||||
matrix: | |||||
include: | |||||
# Linux | |||||
- env: TARGET=x86_64-unknown-linux-gnu | |||||
# OSX | |||||
- env: TARGET=x86_64-apple-darwin | |||||
os: osx | |||||
# The earliest stable Rust version that works | |||||
- env: TARGET=x86_64-unknown-linux-gnu | |||||
rust: 1.34.0 | |||||
before_install: set -e | |||||
install: | |||||
- sh ci/install.sh | |||||
- source ~/.cargo/env || true | |||||
script: | |||||
- bash ci/script.sh | |||||
after_script: set +e | |||||
before_deploy: | |||||
- sh ci/before_deploy.sh | |||||
deploy: | |||||
api_key: | |||||
secure: "nksXOY7p8vAWDpItN9Tyx+0CmOPMj/iAgH+iT512URpgJG/i+ziUWDEYpQO4PfZMJUDUa1tnSZ31O4MIe2Sgfj6DHR1zK+LKeLaZxuxxJUSMXSAkbIXcjFlOPKQBPnMZVVcDaHMxz18jiRpElDR2k0PIEtspW2rDsrr+7mzmQn7pan60k77tU3RG3K7fYgMmNjVv64XqMBSCS3fpqiroIz7rVL1HZ3sCoTNnxDM8nXo/8gTjlVowTvUTsVyHRgtDRJdlPuI0yf4oJmvQPX74P2OkQmOVpGxeJ/gSTJ1xWxYfMgyvNaiO9NKF+fUfxvHR/V58CfBHPdJkcnThV5KIPjE5mHZfSTFf5cG6gJtnVhvhQV7vBhIRI/iCt55SPCXse1HWzTY1GxE5oXw2VzUt/kzD2pFf8rtf64JURgGolenYv3aw+ps1MGUwUjl8CF31XBSiASVwpif7kd9P3bafg6pGUytfjgpV/wJJc8OpO8IGwTSNe4r0wtcFb92stxta4NKC3L4F0w/juaK+0+Mjt4SCyh6rRzpHQu9TJKniskp7/URp5KhMFAo66sFpgSYVa23OTkYmjtB8IqlJzmpuDSs/WSAVA8InSgHDaQeBd0UEbNaWU1+avtAGBtb8+rZnbw7ikPF0j2pHImD5ZjHp7+jt/hpcwqrOkBuB5CSeBKs=" | |||||
file_glob: true | |||||
file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.* | |||||
on: | |||||
condition: $TRAVIS_RUST_VERSION = stable | |||||
tags: true | |||||
provider: releases | |||||
skip_cleanup: true | |||||
cache: cargo | |||||
before_cache: | |||||
# Travis can't cache files that are not readable by "others" | |||||
- chmod -R a+r $HOME/.cargo | |||||
branches: | |||||
only: | |||||
# release tags | |||||
- /^v\d+\.\d+\.\d+.*$/ | |||||
- master | |||||
- next | |||||
notifications: | |||||
email: false |
@@ -1,57 +0,0 @@ | |||||
# Based on the "trust" template v0.1.1 | |||||
# https://github.com/japaric/trust/tree/v0.1.1 | |||||
os: Visual Studio 2017 | |||||
environment: | |||||
global: | |||||
RUST_VERSION: stable | |||||
CRATE_NAME: zola | |||||
matrix: | |||||
- target: x86_64-pc-windows-msvc | |||||
RUST_VERSION: 1.34.0 | |||||
- target: x86_64-pc-windows-msvc | |||||
RUST_VERSION: stable | |||||
install: | |||||
- call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 | |||||
- curl -sSf -o rustup-init.exe https://win.rustup.rs/ | |||||
- rustup-init.exe -y --default-host %TARGET% --default-toolchain %RUST_VERSION% | |||||
- set PATH=%PATH%;C:\Users\appveyor\.cargo\bin | |||||
- rustc -Vv | |||||
- cargo -V | |||||
test_script: | |||||
# we don't run the "test phase" when doing deploys | |||||
- if [%APPVEYOR_REPO_TAG%]==[false] ( | |||||
cargo test --all --target %TARGET% | |||||
) | |||||
before_deploy: | |||||
- cargo rustc --target %TARGET% --release --bin zola -- -C lto | |||||
- ps: ci\before_deploy.ps1 | |||||
deploy: | |||||
artifact: /.*\.zip/ | |||||
auth_token: | |||||
secure: i64eFOHoySQryE3M9pr2JGRukAK3LGltOsUxeFHwilS+3O6/6828A4NUmI0FW4zN | |||||
description: '' | |||||
on: | |||||
RUST_VERSION: stable | |||||
appveyor_repo_tag: true | |||||
provider: GitHub | |||||
cache: | |||||
- C:\Users\appveyor\.cargo\registry | |||||
- target | |||||
branches: | |||||
only: | |||||
# Release tags | |||||
- /^v\d+\.\d+\.\d+.*$/ | |||||
- master | |||||
- next | |||||
# disable automatic builds | |||||
build: false |
@@ -0,0 +1,133 @@ | |||||
trigger: | |||||
branches: | |||||
include: ['*'] | |||||
tags: | |||||
include: ['*'] | |||||
stages: | |||||
- stage: Tests | |||||
jobs: | |||||
- job: | |||||
strategy: | |||||
matrix: | |||||
windows-stable: | |||||
imageName: 'vs2017-win2016' | |||||
rustup_toolchain: stable | |||||
mac-stable: | |||||
imageName: 'macos-10.14' | |||||
rustup_toolchain: stable | |||||
linux-stable: | |||||
imageName: 'ubuntu-16.04' | |||||
rustup_toolchain: stable | |||||
linux-1.34: | |||||
imageName: 'ubuntu-16.04' | |||||
rustup_toolchain: 1.34.0 | |||||
pool: | |||||
vmImage: $(imageName) | |||||
steps: | |||||
- script: | | |||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN | |||||
echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" | |||||
displayName: Install rust | |||||
condition: ne( variables['Agent.OS'], 'Windows_NT' ) | |||||
- script: | | |||||
curl -sSf -o rustup-init.exe https://win.rustup.rs | |||||
rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN% | |||||
echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" | |||||
displayName: Windows install rust | |||||
condition: eq( variables['Agent.OS'], 'Windows_NT' ) | |||||
- script: cargo build --all | |||||
displayName: Cargo build | |||||
- script: cargo test --all | |||||
displayName: Cargo test | |||||
- stage: Release | |||||
dependsOn: Tests | |||||
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/') | |||||
jobs: | |||||
- job: | |||||
strategy: | |||||
matrix: | |||||
windows-stable: | |||||
imageName: 'vs2017-win2016' | |||||
rustup_toolchain: stable | |||||
target: 'x86_64-pc-windows-msvc' | |||||
mac-stable: | |||||
imageName: 'macos-10.14' | |||||
rustup_toolchain: stable | |||||
target: 'x86_64-apple-darwin' | |||||
linux-stable: | |||||
imageName: 'ubuntu-16.04' | |||||
rustup_toolchain: stable | |||||
target: 'x86_64-unknown-linux-gnu' | |||||
pool: | |||||
vmImage: $(imageName) | |||||
steps: | |||||
- script: | | |||||
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN | |||||
echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin" | |||||
displayName: Install rust | |||||
condition: ne( variables['Agent.OS'], 'Windows_NT' ) | |||||
- script: | | |||||
curl -sSf -o rustup-init.exe https://win.rustup.rs | |||||
rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN% | |||||
echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin" | |||||
displayName: Windows install rust | |||||
condition: eq( variables['Agent.OS'], 'Windows_NT' ) | |||||
- script: | | |||||
rustup target add $TARGET | |||||
cargo build --release --target $TARGET | |||||
condition: ne( variables['Agent.OS'], 'Windows_NT' ) | |||||
displayName: Build | |||||
- script: | | |||||
rustup target add %TARGET% | |||||
cargo build --release --target %TARGET% | |||||
condition: eq( variables['Agent.OS'], 'Windows_NT' ) | |||||
displayName: Build on Windows | |||||
- task: CopyFiles@2 | |||||
displayName: Copy assets | |||||
condition: ne( variables['Agent.OS'], 'Windows_NT' ) | |||||
inputs: | |||||
sourceFolder: '$(Build.SourcesDirectory)/target/$(TARGET)/release' | |||||
contents: zola | |||||
targetFolder: '$(Build.BinariesDirectory)/' | |||||
- task: CopyFiles@2 | |||||
displayName: Copy assets on Windows | |||||
condition: eq( variables['Agent.OS'], 'Windows_NT' ) | |||||
inputs: | |||||
sourceFolder: '$(Build.SourcesDirectory)/target/$(TARGET)/release' | |||||
contents: zola.exe | |||||
targetFolder: '$(Build.BinariesDirectory)/' | |||||
- task: ArchiveFiles@2 | |||||
displayName: Gather assets | |||||
condition: ne( variables['Agent.OS'], 'Windows_NT' ) | |||||
inputs: | |||||
rootFolderOrFile: '$(Build.BinariesDirectory)/zola' | |||||
archiveType: 'tar' | |||||
tarCompression: 'gz' | |||||
archiveFile: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' | |||||
- task: ArchiveFiles@2 | |||||
displayName: Gather assets | |||||
condition: eq( variables['Agent.OS'], 'Windows_NT' ) | |||||
inputs: | |||||
rootFolderOrFile: '$(Build.BinariesDirectory)/zola.exe' | |||||
archiveType: 'tar' | |||||
tarCompression: 'gz' | |||||
archiveFile: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' | |||||
- task: GithubRelease@0 | |||||
inputs: | |||||
gitHubConnection: 'zola' | |||||
repositoryName: 'keats/azure-pipelines-test' | |||||
action: 'edit' | |||||
target: '$(build.sourceVersion)' | |||||
tagSource: 'manual' | |||||
tag: '$(Build.SourceBranchName)' | |||||
assets: '$(Build.ArtifactStagingDirectory)/zola-$(Build.SourceBranchName)-$(TARGET).tar.gz' | |||||
title: '$(Build.SourceBranchName)' | |||||
assetUploadMode: 'replace' | |||||
addChangeLog: true |
@@ -1,22 +0,0 @@ | |||||
# This script takes care of packaging the build artifacts that will go in the | |||||
# release zipfile | |||||
$SRC_DIR = $PWD.Path | |||||
$STAGE = [System.Guid]::NewGuid().ToString() | |||||
Set-Location $ENV:Temp | |||||
New-Item -Type Directory -Name $STAGE | |||||
Set-Location $STAGE | |||||
$ZIP = "$SRC_DIR\$($Env:CRATE_NAME)-$($Env:APPVEYOR_REPO_TAG_NAME)-$($Env:TARGET).zip" | |||||
Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\zola.exe" '.\' | |||||
7z a "$ZIP" * | |||||
Push-AppveyorArtifact "$ZIP" | |||||
Remove-Item *.* -Force | |||||
Set-Location .. | |||||
Remove-Item $STAGE | |||||
Set-Location $SRC_DIR |
@@ -1,31 +0,0 @@ | |||||
# This script takes care of building your crate and packaging it for release | |||||
set -ex | |||||
main() { | |||||
local src=$(pwd) \ | |||||
stage= | |||||
case $TRAVIS_OS_NAME in | |||||
linux) | |||||
stage=$(mktemp -d) | |||||
;; | |||||
osx) | |||||
stage=$(mktemp -d -t tmp) | |||||
;; | |||||
esac | |||||
test -f Cargo.lock || cargo generate-lockfile | |||||
cross rustc --bin zola --target $TARGET --release -- -C lto | |||||
cp target/$TARGET/release/zola $stage/ | |||||
cd $stage | |||||
tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz * | |||||
cd $src | |||||
rm -rf $stage | |||||
} | |||||
main |
@@ -1,31 +0,0 @@ | |||||
set -ex | |||||
main() { | |||||
curl https://sh.rustup.rs -sSf | \ | |||||
sh -s -- -y --default-toolchain $TRAVIS_RUST_VERSION | |||||
local target= | |||||
if [ $TRAVIS_OS_NAME = linux ]; then | |||||
target=x86_64-unknown-linux-gnu | |||||
sort=sort | |||||
else | |||||
target=x86_64-apple-darwin | |||||
sort=gsort # for `sort --sort-version`, from brew's coreutils. | |||||
fi | |||||
# This fetches latest stable release | |||||
local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \ | |||||
| cut -d/ -f3 \ | |||||
| grep -E '^v[0-9.]+$' \ | |||||
| $sort --version-sort \ | |||||
| tail -n1) | |||||
echo cross version: $tag | |||||
curl -LSfs https://japaric.github.io/trust/install.sh | \ | |||||
sh -s -- \ | |||||
--force \ | |||||
--git japaric/cross \ | |||||
--tag $tag \ | |||||
--target $target | |||||
} | |||||
main |
@@ -1,17 +0,0 @@ | |||||
# This script takes care of testing your crate | |||||
set -ex | |||||
# TODO This is the "test phase", tweak it as you see fit | |||||
main() { | |||||
if [ ! -z $DISABLE_TESTS ]; then | |||||
return | |||||
fi | |||||
cross test --all --target $TARGET | |||||
} | |||||
# we don't run the "test phase" when doing deploys | |||||
if [ -z $TRAVIS_TAG ]; then | |||||
main | |||||
fi |
@@ -409,7 +409,7 @@ fn can_insert_anchor_left() { | |||||
let res = render_content("# Hello", &context).unwrap(); | let res = render_content("# Hello", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>\nHello</h1>\n" | |||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>Hello</h1>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -421,7 +421,7 @@ fn can_insert_anchor_right() { | |||||
let res = render_content("# Hello", &context).unwrap(); | let res = render_content("# Hello", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h1 id=\"hello\">Hello<a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>\n</h1>\n" | |||||
"<h1 id=\"hello\">Hello<a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a></h1>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -433,8 +433,8 @@ fn can_insert_anchor_for_multi_header() { | |||||
let res = render_content("# Hello\n# World", &context).unwrap(); | let res = render_content("# Hello\n# World", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h1 id=\"hello\">Hello<a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>\n</h1>\n\ | |||||
<h1 id=\"world\">World<a class=\"zola-anchor\" href=\"#world\" aria-label=\"Anchor link for: world\">π</a>\n</h1>\n" | |||||
"<h1 id=\"hello\">Hello<a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a></h1>\n\ | |||||
<h1 id=\"world\">World<a class=\"zola-anchor\" href=\"#world\" aria-label=\"Anchor link for: world\">π</a></h1>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -447,7 +447,7 @@ fn can_insert_anchor_with_exclamation_mark() { | |||||
let res = render_content("# Hello!", &context).unwrap(); | let res = render_content("# Hello!", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>\nHello!</h1>\n" | |||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>Hello!</h1>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -460,7 +460,7 @@ fn can_insert_anchor_with_link() { | |||||
let res = render_content("## [Rust](https://rust-lang.org)", &context).unwrap(); | let res = render_content("## [Rust](https://rust-lang.org)", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h2 id=\"rust\"><a class=\"zola-anchor\" href=\"#rust\" aria-label=\"Anchor link for: rust\">π</a>\n<a href=\"https://rust-lang.org\">Rust</a></h2>\n" | |||||
"<h2 id=\"rust\"><a class=\"zola-anchor\" href=\"#rust\" aria-label=\"Anchor link for: rust\">π</a><a href=\"https://rust-lang.org\">Rust</a></h2>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -472,7 +472,7 @@ fn can_insert_anchor_with_other_special_chars() { | |||||
let res = render_content("# Hello*_()", &context).unwrap(); | let res = render_content("# Hello*_()", &context).unwrap(); | ||||
assert_eq!( | assert_eq!( | ||||
res.body, | res.body, | ||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>\nHello*_()</h1>\n" | |||||
"<h1 id=\"hello\"><a class=\"zola-anchor\" href=\"#hello\" aria-label=\"Anchor link for: hello\">π</a>Hello*_()</h1>\n" | |||||
); | ); | ||||
} | } | ||||
@@ -1 +1 @@ | |||||
<a class="zola-anchor" href="#{{ id }}" aria-label="Anchor link for: {{ id }}">π</a> | |||||
<a class="zola-anchor" href="#{{ id }}" aria-label="Anchor link for: {{ id }}">π</a> |
@@ -445,7 +445,11 @@ mod tests { | |||||
args.insert("path".to_string(), to_value("test.css").unwrap()); | args.insert("path".to_string(), to_value("test.css").unwrap()); | ||||
let result = static_fn.call(&args.clone()).unwrap(); | let result = static_fn.call(&args.clone()).unwrap(); | ||||
assert_eq!(result, ".hello {}\n",); | |||||
if cfg!(windows) { | |||||
assert_eq!(result, ".hello {}\r\n",); | |||||
} else { | |||||
assert_eq!(result, ".hello {}\n",); | |||||
}; | |||||
} | } | ||||
#[test] | #[test] | ||||
@@ -456,7 +460,11 @@ mod tests { | |||||
args.insert("format".to_string(), to_value("plain").unwrap()); | args.insert("format".to_string(), to_value("plain").unwrap()); | ||||
let result = static_fn.call(&args.clone()).unwrap(); | let result = static_fn.call(&args.clone()).unwrap(); | ||||
assert_eq!(result, "Number,Title\n1,Gutenberg\n2,Printing",); | |||||
if cfg!(windows) { | |||||
assert_eq!(result, "Number,Title\r\n1,Gutenberg\r\n2,Printing",); | |||||
} else { | |||||
assert_eq!(result, "Number,Title\n1,Gutenberg\n2,Printing",); | |||||
}; | |||||
} | } | ||||
#[test] | #[test] | ||||
@@ -467,7 +475,11 @@ mod tests { | |||||
args.insert("format".to_string(), to_value("plain").unwrap()); | args.insert("format".to_string(), to_value("plain").unwrap()); | ||||
let result = static_fn.call(&args.clone()).unwrap(); | let result = static_fn.call(&args.clone()).unwrap(); | ||||
assert_eq!(result, ".hello {}\n",); | |||||
if cfg!(windows) { | |||||
assert_eq!(result, ".hello {}\r\n",); | |||||
} else { | |||||
assert_eq!(result, ".hello {}\n",); | |||||
}; | |||||
} | } | ||||
#[test] | #[test] | ||||