1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! Premade tasks for common tinyrick workflows

extern crate tinyrick;

/// Run clippy
pub fn clippy() {
    tinyrick::exec!("cargo", &["clippy"]);
}

/// Run rustfmt
pub fn rustfmt() {
    tinyrick::exec!("cargo", &["fmt"]);
}

/// Build debug binaries
pub fn build_debug() {
    tinyrick::exec!("cargo", &["build"]);
}

/// Build release binaries
pub fn build_release() {
    tinyrick::exec!("cargo", &["build", "--release"]);
}

/// Build all binaries
pub fn build() {
    tinyrick::deps(build_debug);
    tinyrick::deps(build_release);
}

/// Generate Rust API documentation
pub fn doc() {
    tinyrick::exec!("cargo", &["doc"]);
}

/// Install applications
pub fn install_binaries() {
    tinyrick::exec!("cargo", &["install", "--force", "--path", "."]);
}

/// Generate cross-platform binaries.
pub fn crit(args: Vec<String>) {
    assert!(tinyrick::exec_mut!("crit", args)
        .status()
        .unwrap()
        .success());
}

/// Compress binaries.
///
/// artifacts_path denotes a build directory root,
/// where a software project houses porting artifacts.
///
/// port_basename denotes an archive directory root within the artifacts_path,
/// generally of the form "<app-name>-<version>".
pub fn archive(artifacts_path: String, port_basename: String) {
    let artifacts_path_str: &str = &artifacts_path;
    let port_basename_str: &str = &port_basename;
    let archive_basename: &str = &format!("{}.tgz", port_basename_str);
    assert!(
        tinyrick::exec_mut!("tar", &["czf", archive_basename, port_basename_str])
            .current_dir(artifacts_path_str)
            .status()
            .unwrap()
            .success()
    );
}

/// Uninstall artifacts
pub fn uninstall_binaries() {
    tinyrick::exec!("cargo", &["uninstall"]);
}

/// Run unit tests
pub fn unit_test() {
    tinyrick::exec!("cargo", &["test"]);
}

/// Publish to crate repository
pub fn publish() {
    tinyrick::exec!("cargo", &["publish"]);
}

/// Run cargo clean
pub fn clean_cargo() {
    tinyrick::exec!("cargo", &["clean"]);
}