Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 42 additions & 38 deletions .github/workflows/build-for-release.yml
Original file line number Diff line number Diff line change
@@ -1,64 +1,68 @@
name: Build assets for a Release

on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
release:
types: [published]

jobs:
build-artifact:
build-release:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
include:
- os: ubuntu-latest
exe_suffix: ""
target: x86_64-unknown-linux-musl
- os: windows-latest
exe_suffix: ".exe"
target: x86_64-pc-windows-msvc
steps:
- uses: actions/checkout@v3

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
override: true

- name: Update rust
run: rustup update
- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Build
run: cargo build --release --locked --verbose --target ${{ matrix.target }}

- name: Pack completions
if: matrix.os == 'ubuntu-latest' # Runs only once
run: zip -r completions.zip completions

- name: Upload asset on Linux
uses: softprops/action-gh-release@v1
run: "cargo build --release --locked --verbose --target ${{ matrix.target }}"
- name: Upload asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-latest'
with:
files: |
target/${{ matrix.target }}/release/dotter
completions.zip
asset_path: target/${{ matrix.target }}/release/dotter${{ matrix.exe_suffix }}
asset_name: dotter${{ matrix.exe_suffix }}
asset_content_type: application/octet-stream
upload_url: ${{ github.event.release.upload_url }}
build-completions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Update rust
run: rustup update
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Generate Completions
run: |
cargo build

SHELLS="bash elvish fish powershell zsh"

- name: Upload asset on Windows
mkdir completions
for shell in $SHELLS; do
cargo run -- gen-completions --shell $shell --to completions
done

zip -r completions.zip completions
- name: Upload Assets
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'windows-latest'
with:
files: target/${{ matrix.target }}/release/dotter.exe

files: completions.zip
cargo-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo login ${CRATES_IO_TOKEN}
env:
CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
- run: cargo publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: cargo login ${CRATES_IO_TOKEN}
env:
CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
- run: cargo publish
87 changes: 36 additions & 51 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
on: [push, pull_request]
on:
push:
branches: [ $default-branch ]
pull_request:

name: Continuous integration

Expand All @@ -19,82 +22,64 @@ jobs:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: Update Rust
run: |
rustup update
rustup target add ${{ matrix.target }}
- name: Cache dependencies
uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: check
args: --verbose --locked --target ${{ matrix.target }}
uses: Swatinem/rust-cache@v2
- run: cargo check --verbose --locked --target ${{ matrix.target }}
check-readme:
name: Check README
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Update Rust
run: rustup update
- name: Cache dependencies
uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --locked
uses: Swatinem/rust-cache@v2
- run: cargo build --verbose --locked
- name: Check README help message
run: "[[ ! $(comm -13 <(sort README.md) <(cargo run --locked -- --help | sort)) ]] || cargo run --locked -- --help | diff - README.md"
check-publish:
name: Check cargo publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Update Rust
run: rustup update
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- run: cargo publish --dry-run --verbose --locked
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Update Rust
run: rustup update
- name: Cache dependencies
uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: test
uses: Swatinem/rust-cache@v2
- run: cargo test
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Update Rust
run: rustup update
- run: rustup component add rustfmt
- name: Cache dependencies
uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Update Rust
run: rustup update
- run: rustup component add clippy
- name: Cache dependencies
uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
uses: Swatinem/rust-cache@v2
- run: cargo clippy -- -D warnings
12 changes: 0 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,13 +1 @@
# Generated by Cargo
# will have compiled files and executables
debug/
target/

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

# Generated by build.rs
completions/
Loading