Giter VIP home page Giter VIP logo

kobalt-property-file's Introduction

PropertyFile plug-in for Kobalt

License (3-Clause BSD) release Build Status CircleCI Download

The PropertyFile plug-in provides an optional task for editing property files. It is inspired by the ant PropertyFile task.

import net.thauvin.erik.kobalt.plugin.propertyfile.*

val bs = buildScript {
    plugins("net.thauvin.erik:kobalt-property-file:0.9.1")
}

val p = project {
    name = "example"

    propertyFile {
       file = "version.properties"
       comment = "##Generated file - do not modify!"
       entry(key = "product.build.major", value = "3")
       entry(key = "product.build.minor", type = Types.INT, operation = Operations.ADD)
       entry(key = "product.build.patch", value = "0")
       entry(key = "product.build.date" , type = Types.DATE, value = "now")
    }
}

View Example

To invoke the propertyFile task:

./kobaltw propertyFile

Parameters

Attribute Description Required
file The location of the property files to edit. Yes
comment Comment to be inserted at the top of the property file. No
failOnWarning If set to true, the task will fail on any warnings. No

Entry

The entry function is used to specify edits to be made to the property file.

Attribute Description
key The name of the property name/value pair.
value The value of the property.
default The initial value to set for the property if not already defined. For Type.DATE, the now keyword can be used.
type Tread the value as Types.INT, Types.DATE, or Types.STRING. If none specified, Types.STRING is assumed.
operation See operations.
pattern For Types.INT and Types.DATE only. If present, will parse the value as DecimalFormat or SimpleDateFormat patterns, respectively.
unit The unit value to be applied to Operations.ADD and Operations.SUBTRACT for Types.DATE. See Units.

key is required. value or default are required unless the operation is Operations.DELETE.

Operations

The following operations are available:

Operation Description
Operations.ADD Adds a value to an entry.
Operations.DELETE Deletes an entry.
Operations.SET Sets the entry value. This is the default operation.
Operations.SUBTRACT Subtracts a value from the entry. For Types.INT and Types.DATE only.

Units

The following units are available for Types.DATE with Operations.ADD and Operations.SUBTRACT:

  • Units.MILLISECOND
  • Units.SECOND
  • Units.MINUTE
  • Units.HOUR
  • Units.DAY
  • Units.WEEK
  • Units.MONTH
  • Units.YEAR

Rules

The rules used when setting a property value are:

  • If only value is specified, the property is set to it regardless of its previous value.
  • If only default is specified and the property previously existed, it is unchanged.
  • If only default is specified and the property did not exist, the property is set to default.
  • If value and default are both specified and the property previously existed, the property is set to value.
  • If value and default are both specified and the property did not exist, the property is set to default.

Operations occur after the rules are evaluated.

taskName

Additionally, you can specify a task name to easily identify multiple propertyFile tasks.

propertyFile {
    taskName = "updateMinor"
    file = "version.properties"
    entry(key = "product.build.minor", type = Types.INT, operation = Operations.ADD)
}

propertyFile {
    taskName = "updatePatch"
    file = "version.properties"
    entry(key = "product.build.patch", type = Types.INT, operation = Operations.ADD)
}
./kobaltw updateMinor
./kobaltw updatePatch

dependsOn

By default the propertyFile task has no dependencies, use the dependsOn parameter to change the dependencies:

propertyFile {
    dependsOn = listOf("assemble", "run")
    file = "version.properties"
    entry(key = "product.build.date" , type = Types.DATE, value = "now")
}

Differences with the ant PropertyFile task

  • The comments and layout of the original property file will not be preserved.
  • The jdkproperties parameter is not implemented.
  • The default Types.DATE pattern is yyyy-MM-dd HH:mm and not yyyy/MM/dd HH:mm.

kobalt-property-file's People

Contributors

ethauvin avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.