convert to workspace
This commit is contained in:
parent
1f873e1f0e
commit
3c1b14406a
50
Cargo.toml
50
Cargo.toml
@ -1,47 +1,9 @@
|
|||||||
[package]
|
[workspace]
|
||||||
name = "grass"
|
members = [
|
||||||
version = "0.12.1"
|
"crates/compiler",
|
||||||
description = "A Sass compiler written purely in Rust"
|
"crates/include_sass",
|
||||||
readme = "README.md"
|
"crates/lib",
|
||||||
license = "MIT"
|
]
|
||||||
categories = ["command-line-utilities", "web-programming"]
|
|
||||||
keywords = ["scss", "sass", "css", "web"]
|
|
||||||
repository = "https://github.com/connorskees/grass"
|
|
||||||
authors = ["ConnorSkees <39542938+ConnorSkees@users.noreply.github.com>"]
|
|
||||||
edition = "2021"
|
|
||||||
include = ["src", "Cargo.toml", "README.md", "CHANGELOG.md", "Cargo.lock", "LICENSE"]
|
|
||||||
default-run = "grass"
|
|
||||||
|
|
||||||
[[bin]]
|
|
||||||
name = "grass"
|
|
||||||
path = "src/main.rs"
|
|
||||||
required-features = ["commandline"]
|
|
||||||
|
|
||||||
[lib]
|
|
||||||
name = "grass"
|
|
||||||
path = "src/lib.rs"
|
|
||||||
# crate-type = ["cdylib", "rlib"]
|
|
||||||
bench = false
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
grass_internal = { path = "./grass_internal", version = "0.12.1" }
|
|
||||||
include_sass = { path = "./include_sass", version = "0.12.1", optional = true }
|
|
||||||
clap = { version = "2.34.0", optional = true }
|
|
||||||
|
|
||||||
[features]
|
|
||||||
# todo: no commandline by default
|
|
||||||
default = ["commandline", "random"]
|
|
||||||
# Option (enabled by default): build a binary using clap
|
|
||||||
commandline = ["clap"]
|
|
||||||
random = ["grass_internal/random"]
|
|
||||||
wasm-exports = ["grass_internal/wasm-exports"]
|
|
||||||
# Option: include the proc macro `include_sass!`
|
|
||||||
macro = ["include_sass"]
|
|
||||||
nightly = ["include_sass/nightly"]
|
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
tempfile = "3.3.0"
|
|
||||||
paste = "1.0.3"
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
debug = true
|
debug = true
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "grass_internal"
|
name = "compiler"
|
||||||
version = "0.12.1"
|
version = "0.12.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "grass_internal"
|
name = "compiler"
|
||||||
path = "src/lib.rs"
|
path = "src/lib.rs"
|
||||||
# crate-type = ["cdylib", "rlib"]
|
# crate-type = ["cdylib", "rlib"]
|
||||||
bench = false
|
bench = false
|
3
crates/compiler/input.scss
Normal file
3
crates/compiler/input.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
a {
|
||||||
|
color: red;
|
||||||
|
}
|
@ -14,6 +14,7 @@ implementation.
|
|||||||
|
|
||||||
## Use as library
|
## Use as library
|
||||||
```
|
```
|
||||||
|
# use compiler as grass;
|
||||||
fn main() -> Result<(), Box<grass::Error>> {
|
fn main() -> Result<(), Box<grass::Error>> {
|
||||||
let css = grass::from_string(
|
let css = grass::from_string(
|
||||||
"a { b { color: &; } }".to_owned(),
|
"a { b { color: &; } }".to_owned(),
|
||||||
@ -186,6 +187,7 @@ fn from_string_with_file_name<P: AsRef<Path>>(
|
|||||||
/// n.b. `grass` does not currently support files or paths that are not valid UTF-8
|
/// n.b. `grass` does not currently support files or paths that are not valid UTF-8
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
|
/// # use compiler as grass;
|
||||||
/// fn main() -> Result<(), Box<grass::Error>> {
|
/// fn main() -> Result<(), Box<grass::Error>> {
|
||||||
/// let css = grass::from_path("input.scss", &grass::Options::default())?;
|
/// let css = grass::from_path("input.scss", &grass::Options::default())?;
|
||||||
/// Ok(())
|
/// Ok(())
|
||||||
@ -199,6 +201,7 @@ pub fn from_path<P: AsRef<Path>>(p: P, options: &Options) -> Result<String> {
|
|||||||
/// Compile CSS from a string
|
/// Compile CSS from a string
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
|
/// # use compiler as grass;
|
||||||
/// fn main() -> Result<(), Box<grass::Error>> {
|
/// fn main() -> Result<(), Box<grass::Error>> {
|
||||||
/// let css = grass::from_string("a { b { color: &; } }".to_string(), &grass::Options::default())?;
|
/// let css = grass::from_string("a { b { color: &; } }".to_string(), &grass::Options::default())?;
|
||||||
/// assert_eq!(css, "a b {\n color: a b;\n}\n");
|
/// assert_eq!(css, "a b {\n color: a b;\n}\n");
|
@ -8,7 +8,7 @@ proc-macro = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
syn = { version = "1.0.103", default-features = false }
|
syn = { version = "1.0.103", default-features = false }
|
||||||
grass_internal = { path = "../grass_internal" }
|
compiler = { path = "../compiler" }
|
||||||
quote = { version = "1.0.23", default-features = false }
|
quote = { version = "1.0.23", default-features = false }
|
||||||
|
|
||||||
[features]
|
[features]
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::{cell::RefCell, collections::HashSet, path::PathBuf};
|
use std::{cell::RefCell, collections::HashSet, path::PathBuf};
|
||||||
|
|
||||||
use grass_internal::StdFs;
|
use compiler::StdFs;
|
||||||
use proc_macro::TokenStream;
|
use proc_macro::TokenStream;
|
||||||
use quote::format_ident;
|
use quote::format_ident;
|
||||||
use syn::{parse_macro_input, LitStr};
|
use syn::{parse_macro_input, LitStr};
|
||||||
@ -12,10 +12,10 @@ use quote::__private::TokenStream as TokenStream2;
|
|||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct FileTracker<'a> {
|
struct FileTracker<'a> {
|
||||||
files: RefCell<HashSet<PathBuf>>,
|
files: RefCell<HashSet<PathBuf>>,
|
||||||
fs: &'a dyn grass_internal::Fs,
|
fs: &'a dyn compiler::Fs,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> grass_internal::Fs for FileTracker<'a> {
|
impl<'a> compiler::Fs for FileTracker<'a> {
|
||||||
fn is_dir(&self, path: &std::path::Path) -> bool {
|
fn is_dir(&self, path: &std::path::Path) -> bool {
|
||||||
#[cfg(feature = "nightly")]
|
#[cfg(feature = "nightly")]
|
||||||
if let Ok(p) = std::fs::canonicalize(path) {
|
if let Ok(p) = std::fs::canonicalize(path) {
|
||||||
@ -88,7 +88,7 @@ fn finish(css: String, files: &HashSet<PathBuf>) -> TokenStream {
|
|||||||
pub fn include_sass(item: TokenStream) -> TokenStream {
|
pub fn include_sass(item: TokenStream) -> TokenStream {
|
||||||
let input = parse_macro_input!(item as LitStr);
|
let input = parse_macro_input!(item as LitStr);
|
||||||
|
|
||||||
let options = grass_internal::Options::default();
|
let options = compiler::Options::default();
|
||||||
|
|
||||||
let fs = FileTracker {
|
let fs = FileTracker {
|
||||||
files: RefCell::new(HashSet::new()),
|
files: RefCell::new(HashSet::new()),
|
||||||
@ -97,11 +97,9 @@ pub fn include_sass(item: TokenStream) -> TokenStream {
|
|||||||
|
|
||||||
let value = input.value();
|
let value = input.value();
|
||||||
|
|
||||||
let css = match grass_internal::from_path(
|
let css = match compiler::from_path(
|
||||||
value,
|
value,
|
||||||
&options
|
&options.fs(&fs).style(compiler::OutputStyle::Compressed),
|
||||||
.fs(&fs)
|
|
||||||
.style(grass_internal::OutputStyle::Compressed),
|
|
||||||
) {
|
) {
|
||||||
Ok(css) => css,
|
Ok(css) => css,
|
||||||
Err(e) => {
|
Err(e) => {
|
50
crates/lib/Cargo.toml
Normal file
50
crates/lib/Cargo.toml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
[package]
|
||||||
|
name = "grass"
|
||||||
|
version = "0.12.1"
|
||||||
|
description = "A Sass compiler written purely in Rust"
|
||||||
|
readme = "README.md"
|
||||||
|
license = "MIT"
|
||||||
|
categories = ["command-line-utilities", "web-programming"]
|
||||||
|
keywords = ["scss", "sass", "css", "web"]
|
||||||
|
repository = "https://github.com/connorskees/grass"
|
||||||
|
authors = ["ConnorSkees <39542938+ConnorSkees@users.noreply.github.com>"]
|
||||||
|
edition = "2021"
|
||||||
|
include = ["src", "Cargo.toml", "README.md", "CHANGELOG.md", "Cargo.lock", "LICENSE"]
|
||||||
|
default-run = "grass"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "grass"
|
||||||
|
path = "src/main.rs"
|
||||||
|
required-features = ["commandline"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "grass"
|
||||||
|
path = "src/lib.rs"
|
||||||
|
# crate-type = ["cdylib", "rlib"]
|
||||||
|
bench = false
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
compiler = { path = "../compiler", version = "0.12.1" }
|
||||||
|
include_sass = { path = "../include_sass", version = "0.12.1", optional = true }
|
||||||
|
clap = { version = "2.34.0", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
# todo: no commandline by default
|
||||||
|
default = ["commandline", "random"]
|
||||||
|
# Option (enabled by default): build a binary using clap
|
||||||
|
commandline = ["clap"]
|
||||||
|
random = ["compiler/random"]
|
||||||
|
wasm-exports = ["compiler/wasm-exports"]
|
||||||
|
# Option: include the proc macro `include_sass!`
|
||||||
|
macro = ["include_sass"]
|
||||||
|
nightly = ["include_sass/nightly"]
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3.3.0"
|
||||||
|
paste = "1.0.3"
|
||||||
|
|
||||||
|
# [profile.release]
|
||||||
|
# debug = true
|
||||||
|
# panic = "abort"
|
||||||
|
# lto = true
|
||||||
|
# codegen-units = 1
|
@ -80,11 +80,11 @@ grass input.scss
|
|||||||
unknown_lints,
|
unknown_lints,
|
||||||
)]
|
)]
|
||||||
|
|
||||||
pub use grass_internal::*;
|
pub use compiler::*;
|
||||||
|
|
||||||
/// Include CSS in your binary at compile time from a Sass source file
|
/// Include CSS in your binary at compile time from a Sass source file
|
||||||
///
|
///
|
||||||
/// ```ignore
|
/// ```
|
||||||
/// static CSS: &str = grass::include!("../static/_main.scss");
|
/// static CSS: &str = grass::include!("../static/_main.scss");
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user