/kotlin-faker

Port of a popular ruby faker gem written in kotlin. Generate realistically looking fake data such as names, addresses, banking details, and many more, that can be used for testing and data anonymization purposes.

Primary LanguageKotlinMIT LicenseMIT

Stand With Ukraine

Generates realistically-looking fake data
Just like this fake-logo, but not quite so.
fake-logo

Build Status Maven Central Sonatype Nexus (Snapshots) Issues GitHub Top Lang Awesome Kotlin Licence

About

Port of a popular ruby faker gem written in kotlin. Generates realistically looking fake data such as names, addresses, banking details, and many more, that can be used for testing and data-anonymization purposes.

Prerequisites

  • Faker libraries depend on java 8 and kotlin 1.9.x for runtime
  • Building faker from source requires 3 jdk distributions: jdk 8 (temurin is recommended, but any vendor should work), jdk 11 (for docs module) and jdk 17 (graalvm-ce distribution, for cli-bot module). See CONTRIBUTING for more details.

Usage

Documentation for kotlin-faker is available at serpro69.github.io/kotlin-faker/.

Warning

kotlin-faker 2.0 is coming, which, apart from new features, also means breaking changes.

Presently this will affect users of snapshot versions, which are built from 'master'.

More details on currently added breaking changes and migration can be found in #220

Downloading

Latest releases are always available on maven central.

With gradle

dependencies {
    implementation 'io.github.serpro69:kotlin-faker:$version'
}

With maven

<dependencies>
    <dependency>
        <groupId>io.github.serpro69</groupId>
        <artifactId>kotlin-faker</artifactId>
        <version>${version}</version>
    </dependency>
</dependencies>

Snapshots are also available using the following repository: https://oss.sonatype.org/content/repositories/snapshots/

With gradle

repositories {
    maven {
        url = 'https://oss.sonatype.org/content/repositories/snapshots/'
    }
}

With maven

<repositories>
    <repository>
        <id>sonatype-snapshot</id>
        <name>Sonatype Snapshot</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </repository>
</repositories>

Additional Fakers

Extra fakers covering a wide range of domains are available as separate dependencies. See faker submodules in this repo for more details about each faker.

Generating data

val faker = faker { }

faker.name.firstName() // => Ana
faker.address.city() // => New York

CLI

Command line application can be used for a quick lookup of faker functions. See faker-bot README for installation and usage details.

Test

To run unit tests: ./gradlew clean test

To run integration tests: ./gradlew clean integrationTest

Build and Deploy

To deploy to OSS Sonatype repo:

  • set the following properties in ~/.gradle/gradle.properties
    • signing.keyId=<key_id>
    • signing.password=<key_passphrase>
    • signing.secretKeyRingFile=/home/user/.gnupg/secring.gpg
    • sonatypeUsername=<oss_user_token>
    • sonatypePassword=<oss_password_token>
    • stagingProfileId=<oss_staging_profile_id>
  • running publishFakerCorePublicationToSonatypeRepository will publish the artifacts to either staging release repo or to snapshots repo, depending on the current version

Bumping versions

Versions need to be bumped manually through a tag with the next release version that has to follow the semver rules, and the tag has to be pushed to origin.

Creating the tag can be either done manually with git tag or by using gradlew tag task.

Pre-releases

To create a new pre-release version (new release candidate) the following can be used: ./gradlew clean tag -Prelease -PnewPreRelease -PbumpComponent={comp}, where comp can be one of the following values: major, minor, or patch.

To bump an existing pre-release to the next version (next release candidate for the same release version) the following can be used: ./gradlew clean tag -Prelease -PpreRelease.

Releases

To promote a pre-release to a release version the following can be used: ./gradlew clean tag -Prelease -PpromoteToRelease,

To create a new release version the following can be used: ./gradlew clean tag -Prelease -PbumpComponent={comp}, where comp can be one of the following values: major , minor, or patch.

Make targets

Alternatively to the above targets from Makefile can be used for the same purposes.

Contributing

The CONTRIBUTING guidelines should help in getting you started on how to contribute to this project.

Thanks

Many thanks to these awesome tools that help us in creating open-source software:
Intellij IDEA YourKit Java profiler

Licence

This code is free to use under the terms of the MIT licence. See LICENSE.