Skip to content

gelsrc/verctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Утилита для автоматического увеличения версии

Версия

Версия представляет собой набор элементов, разделенных точкой и, опционально, имеющих суффикс -SNAPSHOT.

Каждый значимый элемент версии должен начинается с цифры. Если элемент имеет нечисловой суффикс, то числовое значение берется до начала этого суффикса.

Версия с суффиком -SNAPSHOT далее будет называться рабочей версией, а версия без этого суффикса будет называться релизом.

Примеры значений:

  • 1
  • 1.0
  • 1.2.3.4.5
  • 1.2-SNAPSHOT
  • 1a.2b.3.4.qwe.zxc

Управление версией

Утилита принимает из стандартного потока номер версии, применяет к версии операции, заданные ключами коммандной строки и распечатывает результат в стандартный поток.

Список ключей:

  • -gen -- изменение "мажорного" номера версии (X.x.x);
  • -ver -- изменение "минорного" номера версии (x.X.x);
  • -sub -- изменение "вспомогательного" номера версии (x.x.X);
  • -last -- изменение крайнего правого номера версии (x.x...x.X);
  • -release -- формирование номера версии выпуска (релиза);
  • -file <файл> -- использование файла вместо стандартных потоков;
  • -level -- вывести количество элементов версии;
  • -tool -- использование (вывод) версии этой утилиты;
  • -trunk -- отсечение компонент версии, далее указанной (-gen, -ver или -sub).

С помощью опции -h печатается экран справки:

Usage of verctl-2.0.exe:
  -file string
    	Use a file instead of standard stream
  -gen
    	Use generation level
  -last
    	Use last level
  -level
    	Print version level
  -release
    	Make release
  -sub
    	Use subversion level
  -tool
    	Print tool version
  -trunk
    	Trunk version string
  -ver
    	Use version level

Алгоритм обработки версии следующий (без указания ключей -trunk или -tool).

  1. Принять по-умолчанию количество элементов в версии 1.
  2. Если задан ключ -sub, то принять по-умолчанию количество элементов в версии 3.
  3. Если задан ключ -ver, то принять по-умолчанию количество элементов в версии 2.
  4. Если задан ключ -gen, то принять по-умолчанию количество элементов в версии 1.
  5. Если входные данные не пустые, то принять их как начальное значение версии. Иначе, начальное значение будет 1-SNAPSHOT, 1.0-SNAPSHOT или 1.0.0-SNAPSHOT.
  6. Если заданы ключи -last и вход был не пустой, то переключить крайний правый элемент версии и установить суффикс рабочей версии.
  7. Если заданы ключи -sub и вход был не пустой, то переключить третий элемент версии и установить суффикс рабочей версии.
  8. Если заданы ключи -ver и вход был не пустой, то переключить второй элемент версии и установить суффикс рабочей версии.
  9. Если заданы ключи -gen и вход был не пустой, то переключить первый элемент версии и установить суффикс рабочей версии.
  10. Если задан ключ -release, то сформировать из номера версии-релиза:
    • если имеется суффикс рабочей версии, то убрать его;
    • иначе, увеличить самый младший элемент версии.
  11. Распечатать результат.

Алгоритм обработки версии с указанием ключа -tool.

  1. Установить обрабатываемую версию, равную версии этой утилиты.
  2. Если заданы ключи -sub, то оставить максимум три элемента версии.
  3. Если заданы ключи -ver, то оставить максимум два элемента версии.
  4. Если заданы ключи -gen, то оставить первый элемент версии.
  5. Распечатать результат.

Алгоритм обработки версии с указанием ключа -trunk.

  1. Установить версию в соотвествии с заданными ключами.
  2. Если заданы ключи -last, то отсечь все элементы, кроме цифровых элементов и признака рабочей версии.
  3. Если заданы ключи -sub, то оставить максимум три элемента версии и признак рабочей версии.
  4. Если заданы ключи -ver, то оставить максимум два элемента версии и признак рабочей версии.
  5. Если заданы ключи -gen, то оставить первый элемент версии и признак рабочей версии.
  6. Если задан ключ -release, то сформировать из номера версии-релиза:
    • если имеется суффикс рабочей версии, то убрать его;
    • иначе, увеличить самый младший элемент версии.
  7. Распечатать результат.

Примеры работы

Командная строка: verctl

Вход Выход
1-SNAPSHOT
1.2-SNAPSHOT 1.2-SNAPSHOT
1.2 1.2
1.2.3 1.2.3

Командная строка: verctl -ver

Вход Выход
1.0-SNAPSHOT
1.0-SNAPSHOT 1.1-SNAPSHOT
1.2-SNAPSHOT 1.3-SNAPSHOT
1.2 1.3-SNAPSHOT
1.2.3 1.3.0-SNAPSHOT

Командная строка: verctl -last

Вход Выход
1-SNAPSHOT
1.0-SNAPSHOT 1.1-SNAPSHOT
1.2-SNAPSHOT 1.3-SNAPSHOT
1.2 1.3-SNAPSHOT
1.2.3 1.2.4-SNAPSHOT
1.2.3.4.5.6 1.2.3.4.5.7-SNAPSHOT

Командная строка: verctl -release

Вход Выход
1
1.2-SNAPSHOT 1.2
1.2 1.3
1.2.3 1.2.4

Командная строка: verctl -ver -release

Вход Выход
1.0
1.2-SNAPSHOT 1.3
1.2 1.3
1.2.3 1.3.0

Командная строка: verctl -ver -trunk

Вход Выход
1.0-SNAPSHOT
1 1
1.2-SNAPSHOT 1.2-SNAPSHOT
1.2 1.2
1.2.3 1.2
1.2.3.suf.fix 1.2

Командная строка: verctl -level

Вход Выход
1
1.2-SNAPSHOT 2
1.2 2
1.2.3 3
1.2.3.suf.fix 3

About

Version string control tool

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors