+++ /dev/null
-#!/usr/bin/awk -f
-# SPDX-License-Identifier: EPL-1.0
-##############################################################################
-# Copyright (c) 2017 The Linux Foundation and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-##############################################################################
-
-BEGIN {
- new_tag = new_reltag # new release tag
- curr_tag = curr_reltag # current release tag
- prev_tag = prev_reltag # previous release tag
-
- new_release = tolower(new_tag)
- curr_release = tolower(curr_tag)
- prev_release = tolower(prev_tag)
-
- ws = "[\\t ]*" # white-spaces
- startpat = "^" ws "- project:" # start pattern
- endpat = startpat # end pattern
- op = "^" ws "---" ws "$" # match files starts with "---"
-
- next_release_tag = "^" ws "next-release-tag: '{stream}'"
- master = "'master'"
- new_branch = "'stable/" new_release "'"
- curr_branch = "'stable/" curr_release "'"
- prev_branch = "'stable/" prev_release "'"
-
- # replace block to add new release
- new_rel_yaml_tag = "- " new_release ":";
- br_master_yaml_tag = " branch: 'master'";
- jre_yaml_tag = " jre: 'openjdk11'";
- java_version_yaml_tag = " java-version: 'openjdk11'";
- curr_rel_yaml_tag = "- " curr_release ":";
- br_stable_curr_yaml_tag = " branch: 'stable/" curr_release "'";
-
- # replace block for autorelease-projects
- #new_rel_yaml_tag = "- " new_release ":";
- next_rel_tag_new_yaml_tag = " next-release-tag: '{stream}'";
- #br_master_yaml_tag = " branch: 'master'";
- jdk_yaml_tag = " jdk: 'openjdk8'";
- intg_test_yaml_tag = " integration-test: " new_release;
- extra_mvn_opts_tag = " extra-mvn-opts: -Dsft.heap.max=4g"
- #curr_rel_yaml_tag = "- " curr_release ":";
- next_rel_tag_curr_yaml_tag = " next-release-tag: '{stream}'";
- #br_stable_curr_yaml_tag = " branch: 'stable/" curr_release "'";
-
- # search patterns
- smaster = "^" ws "- master:"
- sstream = "^" ws "stream:"
- srelease = "^" ws "- " curr_release ":"
- snext_release_tag = "^" ws "next-release-tag:"
- #if (l ~ next_release_tag) { next_release_tag = 1; continue; }
- sbranch = "^" ws "branch: " master
- sfunctionality = "^" ws "functionality:"
-
- debug = 0 # set to 1 to print debug info
- file_format = 2 # project stream format
-
- release_found = 0
- stream_found = 0
- nrt_found = 0
- func_found = 0
-}
-
-{
- # exit if release info is not available
- if ((length(new_release) == 0 || length(curr_release) == 0)) {
- exit;
- }
-
- # read all lines of the file into an array
- file[NR] = $0
-}
-
-END {
- n = NR # total number of lines
- find_blks() # gets number of blocks between start/end pattern
- process_blk(arr_bs[1], arr_be[1], 1) # pass start and end of each block and process first block
- update_file(arr_be[1]) # write processed content
-
- if (debug) {
- print "number of blocks="nb;
- print "total records in file[]="length(f);
- print "size of firstblk[]="length(firstblk);
- print "size of newblk[]="length(newblk);
- print "size of oldmaster[]="length(oldmaster);
- print "size of newblk[]="length(newblk);
- }
-}
-
-function find_blks( i, l, bs, be) {
- for (i = 1; i <= n; i++) {
- l = file[i]
- if (l ~ startpat) project = 1 # start pattern
- if (bs > be && l ~ endpat) arr_be[++be] = i - 1 # block end
- if ( l ~ startpat) arr_bs[++bs] = i - 1 # block start
- }
- nb = be
-
- # to handle files with single blocks
- if (nb == 0 && length(file) > 1 && project == 1) {
- nb = 1
- arr_bs[1] = 1 # start after line '---'
- arr_be[1] = length(file) # set length of the file
- }
-
- if (debug) {
- for (i = 1; i < nb; i++)
- print "find_blks: nb=" nb " arr_bs[" i "]="arr_bs[i]" arr_be[" i "]="arr_be[i];
- }
-}
-
-function process_blk(bs, be, bn, i, l) {
- if (debug) {
- print "process_blk: bn=" bn ", bs=" bs " ,be=" be
- }
-
- # get the first block
- for (i = bs + 1; i <= be ; i++) {
- l = file[i]
- # determine file format
- if (l ~ /stream:/) {
- x=index(l,":")
- s = substr(l, x+2, length(l) - x)
- if (s == curr_release || s == new_release) {
- file_format = 1
- } else if (length(s) == 0 ) {
- file_format = 0
- }
- }
- firstblk[++nex] = l
- }
-
- if (debug) {
- print "process_blk: stream='" s "' length(s)=" length(s)" file_format='" file_format "'"
- }
-
- # Handle single stream format
- if (file_format == 1) {
- # create new block to be inserted
- for (i = 1; i <= length(firstblk); i++) {
- l = firstblk[i]
- if (l ~ /name:|stream:/) sub(curr_release, new_release, l)
- newblk[++nex1] = l
- }
- # re-create old block and change master to stable/branch
- for (i = 1; i <= length(firstblk)-1; i++) {
- l = firstblk[i]
- if (l ~ /branch:/) sub(master, curr_branch, l)
- oldmaster[++nex2] = l
- }
- } else if (file_format == 0) {
- # Handle multi-stream format
- for (i = 1; i <= length(firstblk)-1; i++) {
- l = firstblk[i]
- if (l ~ sstream) { stream_found = 1; }
- if (l ~ srelease) { release_found = 1; indent = substr(l, 1, index(l, "-")-1); continue; }
- if (l ~ sfunctionality) { func_found = 1; }
- if (l ~ snext_release_tag) { nrt_found = 1; }
- if (l ~ sbranch) {
- # append lines
- if (stream_found && release_found && !nrt_found) {
- newblk[++nex3] = indent new_rel_yaml_tag;
- newblk[++nex3] = indent br_master_yaml_tag;
- newblk[++nex3] = indent java_version_yaml_tag;
- newblk[++nex3] = indent curr_rel_yaml_tag;
- newblk[++nex3] = indent br_stable_curr_yaml_tag;
- stream_found = 0;
- release_found = 0;
- func_found = 0;
- continue;
- }
- if (stream_found && release_found && nrt_found) {
- newblk[++nex3] = indent new_rel_yaml_tag;
- newblk[++nex3] = indent next_rel_tag_new_yaml_tag;
- newblk[++nex3] = indent br_master_yaml_tag;
- newblk[++nex3] = indent intg_test_yaml_tag;
- newblk[++nex3] = indent extra_mvn_opts_tag;
- newblk[++nex3] = indent curr_rel_yaml_tag;
- newblk[++nex3] = indent next_rel_tag_curr_yaml_tag;
- newblk[++nex3] = indent br_stable_curr_yaml_tag;
- stream_found = 0; release_found = 0; nrt_found=0;
- continue;
- }
- }
- newblk[++nex3] = l
-
- if (debug) {
- print "process_blk: append(newblk[]) : stream="stream" release_found="release_found
- }
- }
- } else {
- # exit on unknown file format
- exit;
- }
-}
-
-function update_file(be, i, j, l) {
- i = 1
- # handle lines before "---"
- while (i <= n) {
- print l = file[i++]
- if (l ~ op) break
- }
-
- if (debug) {
- print "writing master block"
- }
-
- # Handle single stream format
- if (file_format == 1) {
- for (j = 1; j <= nex1; j++) # write new branch block
- print newblk[j]
-
- if (debug) {
- print "writing stable block"
- }
-
- for (j = 1; j <= nex2; j++) # write updated branch block
- print oldmaster[j]
-
- # Handle multi-stream format
- } else if (file_format == 0) {
- # print the first block
- for (j = 1; j <= nex3; j++) # write multi-stream block
- print newblk[j]
- }
-
- if (debug) {
- print "writing rest of the file"
- }
-
- while (be <= n) { # write rest of the file
- print file[be++]
- }
-}