From ed9f588af068d5373f231d46eae66c4f35f111e0 Mon Sep 17 00:00:00 2001 From: akhildevelops Date: Tue, 24 Dec 2024 13:10:27 +0530 Subject: [PATCH] update cli readme and fix lint --- README.md | 156 ++++++++++++++++++++--- fake/README.md | 285 +----------------------------------------- fake/src/faker/mod.rs | 2 +- 3 files changed, 144 insertions(+), 299 deletions(-) mode change 100644 => 120000 fake/README.md diff --git a/README.md b/README.md index 5ff6cfb..73f9e17 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,22 @@ [![Docs Status](https://docs.rs/fake/badge.svg)](https://docs.rs/fake) [![Latest Version](https://img.shields.io/crates/v/fake.svg)](https://crates.io/crates/fake) -A Rust library and command line tool for generating fake data. +A Rust library and command line tool for generating fake data in different languages. Currently supports: + +| Language | Code | +|-----------------------|-------| +| English | EN | +| French | fr_FR | +| Arabic | ar_SA | +| Traditional Chinese | zh_tw | +| Simplified Chinese | zh_cn | +| Japanese | ja_jp | +| Portugese (Brazilian) | pt_br | + ## Installation -Default: +### Library: ```toml [dependencies] @@ -38,6 +49,102 @@ Available library features: - `always-true-rng`: expose AlwaysTrueRng - `maybe-non-empty-collections`: allow to use AlwaysTrueRng to generate non-empty collections +### CLI: +`cargo install --features=cli --git https://github.com/cksac/fake-rs.git` + +Access cli using `fake` command. Below are the currently available fake generators. + +```shell +❯ fake +An easy to use library and command line for generating fake data like name, number, address, lorem, dates, etc. + +Usage: fake [OPTIONS] [COMMAND] + +Commands: + CityPrefix + CitySuffix + CityName + CountryName + CountryCode + StreetSuffix + StreetName + TimeZone + StateName + StateAbbr + SecondaryAddressType + SecondaryAddress + ZipCode + PostCode + BuildingNumber + Latitude + Longitude + Geohash + Isbn + Isbn10 + Isbn13 + CreditCardNumber + CompanySuffix + CompanyName + Buzzword + BuzzwordMiddle + BuzzwordTail + CatchPhrase + BsVerb + BsAdj + BsNoun + Bs + Profession + Industry + FreeEmailProvider + DomainSuffix + FreeEmail + SafeEmail + Username + Password + IPv4 + IPv6 + IP + MACAddress + UserAgent + Seniority + Field + Position + Word + Words + Sentence + Sentences + Paragraph + Paragraphs + FirstName + LastName + Title + Suffix + Name + NameWithTitle + PhoneNumber + CellNumber + FilePath + FileName + FileExtension + DirPath + MimeType + Semver + SemverStable + SemverUnstable + CurrencyCode + CurrencyName + CurrencySymbol + Bic + Isin + help Print this message or the help of the given subcommand(s) + +Options: + -r, --repeat [default: 1] + -l, --locale [default: EN] + -h, --help Print help + -V, --version Print version +``` + ## Usage ### In rust code @@ -109,21 +216,42 @@ fn main() { ``` ## Command line -```shell -Usage: cli [OPTIONS] [COMMAND] -Commands: - Name - FirstName - CityPrefix - Password - help +Generate random name (defaults to EN locale) +```shell +❯ ./fake Name +Generating 1 fakes for EN locale +Theresa Walker +``` +Generate 5 chinese random names by mentioning locale to zh_cn +```shell +❯ ./fake -r5 -lzh_cn Name +Generating 5 fakes for ZH_CN locale +何丹华 +尹雅瑾 +于金福 +郭雨珍 +龙菲霞 +``` +Generate 5 random passwords with minimum 10 characters +```shell +❯ ./fake -r5 Password --min 10 +Generating 5 fakes for EN locale +Q6eeXHfC3uzSRqtZwB +6fDHAOh3I7Ah77duLL +R8ygoTLmd4i1z1Z +5Uxj3RdEK5O4Af3ow +2XWsGT0lUaDnMZTb7 +``` +Arguments can be sent to fake generators like password that accept different ranges +```shell +❯ ./fake Password --help +Usage: fake Password [OPTIONS] Options: - -r, --repeat [default: 1] - -l, --locale [default: EN] - -h, --help Print help - -V, --version Print version + --max [default: 20] + --min [default: 10] + -h, --help Print help ``` # Fakers with locale diff --git a/fake/README.md b/fake/README.md deleted file mode 100644 index 1ba2d92..0000000 --- a/fake/README.md +++ /dev/null @@ -1,284 +0,0 @@ -# Fake - -[![Build Status](https://travis-ci.org/cksac/fake-rs.svg?branch=master)](https://travis-ci.org/cksac/fake-rs) -[![Latest Version](https://img.shields.io/crates/v/fake.svg)](https://crates.io/crates/fake) - -A Rust library for generating fake data. - -## Installation - -Default: - -```toml -[dependencies] -fake = { version = "3.0.0", features = ["derive"] } -``` - -Available features: - -- `derive`: if you want to use `#[derive(Dummy)]` -- supported crates feature flags: - - `chrono` - - `chrono-tz` - - `http` - - `uuid` - - `bigdecimal` (via `bigdecimal-rs`) - - `rust_decimal` - - `random_color` - - `geo` - - `semver` - - `serde_json` - - `time` - - `zerocopy` - - `glam` - - `url` -- `always-true-rng`: expose AlwaysTrueRng -- `maybe-non-empty-collections`: allow to use AlwaysTrueRng to generate non-empty collections - -## Usage - -```rust -use fake::{Dummy, Fake, Faker}; -use rand::rngs::StdRng; -use rand::SeedableRng; - -#[derive(Debug, Dummy)] -pub struct Foo { - #[dummy(faker = "1000..2000")] - order_id: usize, - customer: String, - paid: bool, -} - -#[derive(Debug, Dummy)] -struct Bar { - field: Vec, -} - -fn main() { - // type derived Dummy - let f: Foo = Faker.fake(); - println!("{:?}", f); - - let b: Bar = Faker.fake(); - println!("{:?}", b); - - // using `Faker` to generate default fake value of given type - let tuple = Faker.fake::<(u8, u32, f32)>(); - println!("tuple {:?}", tuple); - println!("String {:?}", Faker.fake::()); - - // types U can used to generate fake value T, if `T: Dummy` - println!("String {:?}", (8..20).fake::()); - println!("u32 {:?}", (8..20).fake::()); - - // using `faker` module with locales - use fake::faker::name::raw::*; - use fake::locales::*; - - let name: String = Name(EN).fake(); - println!("name {:?}", name); - - let name: String = Name(ZH_TW).fake(); - println!("name {:?}", name); - - // using convenient function without providing locale - use fake::faker::lorem::en::*; - let words: Vec = Words(3..5).fake(); - println!("words {:?}", words); - - // using macro to generate nested collection - let name_vec = fake::vec![String as Name(EN); 4, 3..5, 2]; - println!("random nested vec {:?}", name_vec); - - // fixed seed rng - let seed = [ - 1, 0, 0, 0, 23, 0, 0, 0, 200, 1, 0, 0, 210, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - ]; - let ref mut r = StdRng::from_seed(seed); - for _ in 0..5 { - let v: usize = Faker.fake_with_rng(r); - println!("value from fixed seed {}", v); - } -} -``` - -# Fakers with locale - -## Lorem - -```rust -Word(); -Words(count: Range); -Sentence(count: Range); -Sentences(count: Range); -Paragraph(count: Range); -Paragraphs(count: Range); -``` - -## Name - -```rust -FirstName(); -LastName(); -Title(); -Suffix(); -Name(); -NameWithTitle(); -``` - -## Number - -```rust -Digit(); -NumberWithFormat<'a>(fmt: &'a str); -``` - -## Boolean - -```rust -Boolean(ratio: u8); -``` - -## Internet - -```rust -FreeEmailProvider(); -DomainSuffix(); -FreeEmail(); -SafeEmail(); -Username(); -Password(len_range: Range); -IPv4(); -IPv6(); -IP(); -MACAddress(); -UserAgent(); -``` - -## HTTP - -```rust -RfcStatusCode(); -ValidStatusCode(); -``` - -## Color - -```rust -HexColor(); -RgbColor(); -RgbaColor(); -HslColor(); -HslaColor(); -Color(); -``` - -## Company - -```rust -CompanySuffix(); -CompanyName(); -Buzzword(); -BuzzwordMiddle(); -BuzzwordTail(); -CatchPhrase(); -BsVerb(); -BsAdj(); -BsNoun(); -Bs(); -Profession(); -Industry(); -``` - -## Address - -```rust -CityPrefix(); -CitySuffix(); -CityName(); -CountryName(); -CountryCode(); -StreetSuffix(); -StreetName(); -TimeZone(); -StateName(); -StateAbbr(); -SecondaryAddressType(); -SecondaryAddress(); -ZipCode(); -PostCode(); -BuildingNumber(); -Latitude(); -Longitude(); -Geohash(precision: u8); -``` - -### Automotive - -```rust -LicencePlate(); -``` - -### Barcode - -```rust -Isbn(); -Isbn13(); -Isbn10(); -``` - -## Phone Number - -```rust -PhoneNumber(); -CellNumber(); -``` - -## Date/Time - -```rust -Time(); -Date(); -DateTime(); -Duration(); -DateTimeBefore(dt: DateTime); -DateTimeAfter(dt: DateTime); -DateTimeBetween(start: DateTime, end: DateTime); -``` - -## Filesystem - -```rust -FilePath(); -FileName(); -FileExtension(); -DirPath(); -``` - -### Finance - -```rust -Bic(); -``` - -### UUID - -```rust -UUIDv1(); -UUIDv3(); -UUIDv4(); -UUIDv5(); -``` - -# LICENSE - -This project is licensed under either of - -- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or - http://www.apache.org/licenses/LICENSE-2.0) -- MIT license ([LICENSE-MIT](LICENSE-MIT) or - http://opensource.org/licenses/MIT) - -at your option. diff --git a/fake/README.md b/fake/README.md new file mode 120000 index 0000000..32d46ee --- /dev/null +++ b/fake/README.md @@ -0,0 +1 @@ +../README.md \ No newline at end of file diff --git a/fake/src/faker/mod.rs b/fake/src/faker/mod.rs index 4dc4582..b8ff368 100644 --- a/fake/src/faker/mod.rs +++ b/fake/src/faker/mod.rs @@ -22,7 +22,7 @@ macro_rules! def_fakers { $( #[inline] #[allow(non_snake_case)] - pub fn $name$(< $($lts),* >)?($($arg:$typ),*) -> raw::$name<$locale_s> { + pub fn $name$(< $($lts),* >)?($($arg:$typ),*) -> raw::$name<$($($lts),*,)?$locale_s> { raw::$name($locale_s, $($arg),*) } )+