create_file.groovy

Le fichier create_file.groovy contient le script Groovy qui exécute la commande de l'étape.

Groovy est un langage de script dynamique (similaire à Python, Ruby et Perl) pour la plateforme Java™. Etant donné que la majorité du code Java constitue également du code Groovy valide, Groovy est populaire auprès des programmeurs Java. Il fournit un support natif pour les expressions régulières.

Les premières lignes du script créent un objet de propriétés, props. Ensuite, le script tente de charger les propriétés depuis le fichier qui est envoyé du serveur (spécifié par la variable ${PLUGIN_OUTPUT_PROPS}). S'il parvient à charger le fichier, il remplit props ; sinon, il émet une exception.

final def workDir = new File('.').canonicalFile
final def props = new Properties();
final def inputPropsFile = new File(args[0]);
try {
inputPropsStream = new FileInputStream(inputPropsFile);
props.load(inputPropsStream);
}
catch (IOException e) {
throw new RuntimeException(e);
}

Pour exécuter la commande (créer un fichier), le script utilise les propriétés qui sont définies par l'étape elle-même. Il extrait les trois propriétés de props et crée des variables locales correspondantes.

Ensuite, le script crée un fichier dont le nom est spécifié par fileName et teste la variable booléenne overwrite. Si un fichier du même nom existe et que la variable overwrite a pour valeur false, le script se termine (échoue) avec le code de sortie 1. Les codes de sortie peuvent être consultés lors du post-traitement.

Sinon, le contenu de l'élément contents est écrit dans le fichier. Un message est écrit dans le journal sortant et le code de sortie est 0 (réussite).

final def fileName = props['file']
final def overwrite = props['overwrite']?.toBoolean()
final def contents = props['contents']?:''

try {
def file = new File(fileName).canonicalFile
if (file.exists() && !overwrite) {
println "File $file already exists!"
System.exit 1
}
else {
file.write(contents)
println "Successfully ${overwrite?'replaced':'created'} file 
$file with contents:"
println contents
}
}
catch (Exception e) {
println "Error creating file $file: ${e.message}"
System.exit(1)
}

System.exit(0)

Commentaires en retour