Skip to content

Commit e804cda

Browse files
committed
split into lib and cmd
1 parent 19ca982 commit e804cda

32 files changed

+115
-109
lines changed

.github/workflows/build.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,23 @@ jobs:
6767
# APPLE_CODESIGN_KEY: '${{ secrets.APPLE_CODESIGN_KEY }}'
6868
# APPLE_CODESIGN_PASSWORD: '${{ secrets.APPLE_CODESIGN_PASSWORD }}'
6969
# echo Key is $(echo $APPLE_CODESIGN_KEY | base64 -d | wc -c) bytes
70-
# rcodesign sign target/release/am --code-signature-flags=runtime --p12-password=$APPLE_CODESIGN_PASSWORD --p12-file=<(echo $APPLE_CODESIGN_KEY | base64 -d) --entitlements-xml-file=cli/entitlements.plist
70+
# rcodesign sign target/release/fan --code-signature-flags=runtime --p12-password=$APPLE_CODESIGN_PASSWORD --p12-file=<(echo $APPLE_CODESIGN_KEY | base64 -d) --entitlements-xml-file=cli/entitlements.plist
7171
- name: Compress Archive (darwin or linux)
7272
if: contains(matrix.target, 'darwin') || contains(matrix.target, 'linux')
73-
run: zip -rj target/${{ matrix.target }}/release/am-${{ matrix.target }}.zip target/${{ matrix.target }}/release/am
73+
run: zip -rj target/${{ matrix.target }}/release/fan-${{ matrix.target }}.zip target/${{ matrix.target }}/release/fan
7474
- name: Compress Archive (windows)
7575
if: contains(matrix.target, 'windows')
76-
run: Compress-Archive -CompressionLevel Optimal -Force -Path target/${{ matrix.target }}/release/am.exe -DestinationPath target/${{ matrix.target }}/release/am-${{ matrix.target }}.zip
76+
run: Compress-Archive -CompressionLevel Optimal -Force -Path target/${{ matrix.target }}/release/fan.exe -DestinationPath target/${{ matrix.target }}/release/fan-${{ matrix.target }}.zip
7777
- name: Upload Artifacts
7878
uses: actions/upload-artifact@v4
7979
with:
80-
name: am-${{ matrix.target }}
81-
path: target/${{ matrix.target }}/release/am${{ contains(matrix.target, 'windows') && '.exe' || '' }}
80+
name: fan-${{ matrix.target }}
81+
path: target/${{ matrix.target }}/release/fan${{ contains(matrix.target, 'windows') && '.exe' || '' }}
8282
- name: Release Version
8383
uses: softprops/action-gh-release@v2
8484
if: startsWith(github.ref, 'refs/tags/')
8585
env:
8686
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8787
with:
88-
files: target/${{ matrix.target }}/release/am-${{ matrix.target }}.zip
88+
files: target/${{ matrix.target }}/release/fan-${{ matrix.target }}.zip
8989
draft: true

.github/workflows/image.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
tags: ${{ github.repository }}:test
2828
- name: Test Image
2929
run: |
30-
docker run --rm ${{ github.repository }}:test am eval 'println("🍀 Hello Am!");'
30+
docker run --rm ${{ github.repository }}:test fan eval 'println("🍀 Hello Basjoofan!");'
3131
- name: Echo Tag
3232
run: |
3333
tag=${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || github.sha }}

Cargo.toml

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,6 @@
1-
[package]
2-
name = "am"
3-
version = "0.0.1"
4-
description = "Continuous Test"
5-
repository = "https://github.com/basjoofan/am"
6-
license = "MIT OR Apache-2.0"
7-
authors = ["Lamb <lamb@basjoo.fan>"]
8-
keywords = ["test", "continuous"]
9-
edition = "2021"
10-
11-
[lib]
12-
name = "am"
13-
path = "src/lib.rs"
14-
crate-type = ["lib"]
15-
16-
[[bin]]
17-
name = "am"
18-
path = "src/main.rs"
19-
20-
[features]
21-
default = ["command", "http"]
22-
http = ["rustls", "webpki-roots", "form_urlencoded", "multipart"]
23-
command = ["clap", "ctrlc"]
24-
25-
[dependencies]
26-
form_urlencoded = { version = "1.2.1", optional = true }
27-
multipart = { version = "0.18.0", optional = true, default-features = false, features = ["client"] }
28-
#uuid = { version = "1.8.0", features = ["v7"] }
29-
regex = "1.11.1"
30-
31-
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
32-
clap = { version = "4.5.23", optional = true, features = ["derive"] }
33-
ctrlc = { version = "3.4.5", optional = true }
34-
rustls = { version = "0.23.20", optional = true, default-features = false, features = ["tls12", "std", "ring"] }
35-
webpki-roots = { version = "0.26.7", optional = true }
36-
37-
[dev-dependencies]
38-
assert_cmd = "2.0"
39-
assert_fs = "1.0"
40-
predicates = "3.0"
41-
avro = { version = "0.16", package = "apache-avro" }
1+
[workspace]
2+
resolver = "2"
3+
members = [
4+
"lib",
5+
"cmd",
6+
]

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ RUN cargo build --release
66
# runtime stage use alpine as base image
77
FROM alpine:3.20.2
88
# copy compiled file from build stage
9-
COPY --from=builder ./target/release/am /usr/bin
9+
COPY --from=builder ./target/release/fan /usr/bin

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
# Am
1+
# Basjoofan
22
Continuous Test

cmd/Cargo.toml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[package]
2+
name = "cmd"
3+
version = "0.0.1"
4+
description = "basjoofan command"
5+
repository = "https://github.com/basjoofan/lib"
6+
license = "MIT OR Apache-2.0"
7+
authors = ["Lamb <lamb@basjoo.fan>"]
8+
keywords = ["continuous", "test", "http"]
9+
edition = "2021"
10+
11+
[[bin]]
12+
name = "fan"
13+
path = "src/main.rs"
14+
15+
[dependencies]
16+
lib = { path = "../lib" }
17+
clap = { version = "4.5.23", features = ["derive"] }
18+
ctrlc = { version = "3.4.5"}
19+
20+
[dev-dependencies]
21+
assert_cmd = "2.0"
22+
assert_fs = "1.0"
23+
predicates = "3.0"

src/command.rs renamed to cmd/src/command.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use crate::eval_block;
2-
use crate::Context;
3-
use crate::Parser;
4-
use crate::Source;
5-
use crate::Stats;
6-
use crate::Writer;
1+
use lib::eval_block;
2+
use lib::Context;
3+
use lib::Parser;
4+
use lib::Source;
5+
use lib::Stats;
6+
use lib::Writer;
77
use std::fs::File;
88
use std::io::stdin;
99
use std::io::BufRead;
@@ -13,8 +13,6 @@ use std::sync::atomic::Ordering;
1313
use std::sync::Arc;
1414
use std::time::Duration;
1515

16-
pub const NAME: &str = env!("CARGO_PKG_NAME");
17-
1816
pub fn repl() {
1917
let mut lines = stdin().lock().lines();
2018
let mut context = Context::new();
@@ -177,7 +175,7 @@ fn read(path: PathBuf, text: &mut String) -> std::io::Result<()> {
177175
for entry in entries {
178176
read(entry, text)?;
179177
}
180-
} else if path.is_file() && path.extension() == Some(std::ffi::OsStr::new(NAME)) {
178+
} else if path.is_file() && path.extension() == Some(std::ffi::OsStr::new("fan")) {
181179
text.push_str(&std::fs::read_to_string(path)?)
182180
}
183181
Ok(())

src/main.rs renamed to cmd/src/main.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
use am::command;
1+
mod command;
22
use clap::{Parser, Subcommand};
33
use std::{path::PathBuf, time::Duration};
44

55
#[derive(Parser)]
6-
#[command(name = command::NAME, version, about, long_about = None)]
6+
#[command(name = env!("CARGO_PKG_DESCRIPTION"), version, about, long_about = None)]
77
struct Interface {
88
#[command(subcommand)]
99
command: Option<Commands>,
1010
}
1111

1212
#[derive(Subcommand)]
1313
enum Commands {
14-
/// Evaluate source code
14+
/// Evaluate codes
1515
Eval {
1616
/// Source code
1717
#[command()]
1818
text: String,
1919
},
20-
/// Run the tests
20+
/// Run tests
2121
Test {
2222
/// Test name
2323
#[command()]
Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use am::command::NAME;
21
use assert_cmd::prelude::*;
32
use assert_fs::prelude::*;
43
use predicates::prelude::*;
@@ -8,7 +7,7 @@ use std::process::{Command, Stdio};
87
#[test]
98
#[allow(clippy::zombie_processes)]
109
fn test_command_repl() -> Result<(), Box<dyn std::error::Error>> {
11-
let mut child = Command::cargo_bin(NAME)?
10+
let mut child = Command::cargo_bin("fan")?
1211
.stdin(Stdio::piped())
1312
.stdout(Stdio::piped())
1413
.spawn()
@@ -27,22 +26,22 @@ fn test_command_repl() -> Result<(), Box<dyn std::error::Error>> {
2726

2827
#[test]
2928
fn test_command_eval() -> Result<(), Box<dyn std::error::Error>> {
30-
let mut cmd = Command::cargo_bin(NAME)?;
29+
let mut cmd = Command::cargo_bin("fan")?;
3130
cmd.arg("eval").arg(r#"print("{integer}", 1 + 1 )"#);
3231
cmd.assert().success().stdout(predicate::str::diff("2null\n"));
33-
let mut cmd = Command::cargo_bin(NAME)?;
32+
let mut cmd = Command::cargo_bin("fan")?;
3433
cmd.arg("eval").arg(r#"let x = 1 + 1; print("{integer}", x);"#);
3534
cmd.assert().success().stdout(predicate::str::diff("2null\n"));
36-
let mut cmd = Command::cargo_bin(NAME)?;
37-
cmd.arg("eval").arg(r#"println("{string}", "Hello Am!")"#);
38-
cmd.assert().success().stdout(predicate::str::diff("Hello Am!\nnull\n"));
35+
let mut cmd = Command::cargo_bin("fan")?;
36+
cmd.arg("eval").arg(r#"println("{string}", "Hello Basjoofan!")"#);
37+
cmd.assert().success().stdout(predicate::str::diff("Hello Basjoofan!\nnull\n"));
3938
Ok(())
4039
}
4140

4241
#[test]
4342
fn test_command_test() -> Result<(), Box<dyn std::error::Error>> {
4443
let temp = assert_fs::TempDir::new().unwrap();
45-
let file = temp.child("request.am");
44+
let file = temp.child(format!("request.{}", "fan"));
4645
let text = r#"
4746
let host = "httpbin.org";
4847
request get`
@@ -58,17 +57,17 @@ fn test_command_test() -> Result<(), Box<dyn std::error::Error>> {
5857
"#;
5958
file.write_str(text)?;
6059
// command test
61-
let mut command = Command::cargo_bin(NAME)?;
60+
let mut command = Command::cargo_bin("fan")?;
6261
command.current_dir(&temp);
6362
command.arg("test");
6463
command.assert().success().stdout(predicate::str::contains("--- PASS get ("));
6564
// command test call
66-
let mut command = Command::cargo_bin(NAME)?;
65+
let mut command = Command::cargo_bin("fan")?;
6766
command.current_dir(&temp);
6867
command.arg("test").arg("call");
6968
command.assert().success().stdout(predicate::str::contains("--- PASS get ("));
7069
// command test blank
71-
let mut command = Command::cargo_bin(NAME)?;
70+
let mut command = Command::cargo_bin("fan")?;
7271
command.current_dir(&temp);
7372
command.arg("test").arg("blank");
7473
command.assert().success().stdout(predicate::str::diff("Test not found: blank\n"));

lib/Cargo.toml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
[package]
2+
name = "lib"
3+
version = "0.0.1"
4+
description = "basjoofan library"
5+
repository = "https://github.com/basjoofan/lib"
6+
license = "MIT OR Apache-2.0"
7+
authors = ["Lamb <lamb@basjoo.fan>"]
8+
keywords = ["continuous", "test", "http"]
9+
edition = "2021"
10+
11+
[features]
12+
default = ["http"]
13+
http = ["rustls", "webpki-roots", "form_urlencoded", "multipart"]
14+
15+
[dependencies]
16+
form_urlencoded = { version = "1.2.1", optional = true }
17+
multipart = { version = "0.18.0", optional = true, default-features = false, features = ["client"] }
18+
#uuid = { version = "1.8.0", features = ["v7"] }
19+
regex = "1.11.1"
20+
21+
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
22+
rustls = { version = "0.23.20", optional = true, default-features = false, features = ["tls12", "std", "ring"] }
23+
webpki-roots = { version = "0.26.7", optional = true }
24+
25+
[target.'cfg(target_arch = "wasm32")'.dependencies]
26+
js-sys = "0.3.77"
27+
wasm-bindgen = "0.2.100"
28+
wasm-bindgen-futures = "0.4.50"
29+
30+
[dev-dependencies]
31+
avro = { version = "0.16", package = "apache-avro" }

0 commit comments

Comments
 (0)