bump

Types

Version = tuple[major: uint, minor: uint, patch: uint]
Target = tuple[repo: string, package: string, ext: string]
SearchResult = tuple[message: string, found: Option[Target]]

Procs

proc `$`(target: Target): string {...}{.raises: [], tags: [].}
proc `$`(ver: Version): string {...}{.raises: [ValueError], tags: [].}
proc relativeParentPath(dir: string): string {...}{.raises: [], tags: [].}
the parent directory as expressed relative to the directory supplied
proc isFilesystemRoot(dir: string): bool {...}{.raises: [OSError], tags: [ReadDirEffect].}
true if there are no higher directories in the fs tree
proc newTarget(path: string): Target {...}{.raises: [], tags: [].}
proc findTarget(dir: string; target = ""): SearchResult {...}{.
    raises: [ValueError, UnpackError, OSError], tags: [ReadDirEffect, ReadEnvEffect].}
locate one, and only one, nimble file to work upon; dir is where to start looking, target is a .nimble or package name
proc findTarget(dir: string; target = ""; ascend = true; extensions: seq[string]): SearchResult {...}{.
    raises: [ValueError, UnpackError, OSError], tags: [ReadDirEffect, ReadEnvEffect].}
locate one, and only one, nimble file to work upon; dir is where to start looking, target is a .nimble or package name, extensions list optional extensions (such as "nimble")
proc createTemporaryFile(prefix: string; suffix: string): string {...}{.raises: [],
    tags: [ReadEnvEffect, ReadIOEffect].}
it SHOULD create the file, but so far, it only returns the filename
proc isValid(ver: Version): bool {...}{.raises: [], tags: [].}
true if the version seems legit
proc `>`(a, b: Version): bool {...}{.inline, raises: [], tags: [].}
proc `==`(a, b: Version): bool {...}{.inline, raises: [], tags: [].}
proc parseVersion(nimble: string): Option[Version] {...}{.raises: [], tags: [].}
try to parse a version from any line in a .nimble; safe to use at compile-time
proc bumpVersion(ver: Version; major, minor, patch = false): Option[Version] {...}{.
    raises: [], tags: [].}
increment the version by the specified metric
proc withCrazySpaces(version: Version; line = ""): string {...}{.raises: [FieldError,
    ValueError, AccessViolationError, RegexInternalError, InvalidUnicodeError,
    KeyError, SyntaxError, StudyError, IndexError, UnpackError], tags: [].}
insert a new version into a line which may have "crazy spaces"
proc capture(exe: string; args: seq[string]; options: set[ProcessOption]): tuple[
    output: string, ok: bool] {...}{.raises: [OSError, ValueError, Exception, IOError, Defect], tags: [
    ReadDirEffect, ReadEnvEffect, ReadIOEffect, RootEffect, ExecIOEffect].}
capture output of a command+args and indicate apparent success
proc capture(exe: string; args: seq[string]): tuple[output: string, ok: bool] {...}{.
    raises: [OSError, ValueError, Exception, IOError, Defect], tags: [ReadDirEffect,
    ReadEnvEffect, ReadIOEffect, RootEffect, ExecIOEffect].}
find and run a given executable with the given arguments; the result includes stdout/stderr and a true value if it seemed to work
proc run(exe: string; args: varargs[string]): bool {...}{.
    raises: [OSError, ValueError, Exception, IOError, Defect], tags: [ReadDirEffect,
    ReadEnvEffect, ReadIOEffect, RootEffect, ExecIOEffect].}
find and run a given executable with the given arguments; the result is true if it seemed to work
proc appearsToBeMasterBranch(): Option[bool] {...}{.raises: [OSError, ValueError,
    Exception, IOError, Defect, FieldError, AccessViolationError, RegexInternalError,
    InvalidUnicodeError, KeyError, SyntaxError, StudyError, UnpackError], tags: [
    ReadDirEffect, ReadEnvEffect, ReadIOEffect, RootEffect, ExecIOEffect].}
try to determine if we're on the master branch
proc fetchTagList(): Option[string] {...}{.raises: [OSError, ValueError, Exception, IOError,
    Defect], tags: [ReadDirEffect, ReadEnvEffect, ReadIOEffect, RootEffect,
                  ExecIOEffect].}
simply retrieve the tags as a string; attempt to use the later git option to sort the result by version
proc lastTagInTheList(tagList: string): string {...}{.raises: [KeyError, SyntaxError,
    StudyError, FieldError, ValueError, IndexError, UnpackError,
    AccessViolationError, RegexInternalError, InvalidUnicodeError, Exception],
    tags: [RootEffect].}
lazy way to get a tag from the list, whatfer mimicking its V form
proc taggedAs(version: Version; tagList: string): Option[string] {...}{.raises: [ValueError,
    KeyError, SyntaxError, StudyError, FieldError, IndexError, UnpackError,
    AccessViolationError, RegexInternalError, InvalidUnicodeError, Exception],
    tags: [RootEffect].}
try to fetch a tag that appears to match a given version
proc allTagsAppearToStartWithV(tagList: string): bool {...}{.raises: [KeyError,
    SyntaxError, StudyError, FieldError, ValueError, AccessViolationError,
    RegexInternalError, InvalidUnicodeError, Exception], tags: [RootEffect].}
try to determine if all of this project's tags start with a v
proc composeTag(last: Version; next: Version; v = false; tags = ""): Option[string] {...}{.raises: [
    OSError, ValueError, Exception, IOError, Defect, UnpackError, KeyError,
    SyntaxError, StudyError, FieldError, AccessViolationError, RegexInternalError,
    InvalidUnicodeError, IndexError], tags: [ReadDirEffect, ReadEnvEffect,
    ReadIOEffect, RootEffect, ExecIOEffect].}
invent a tag given last and next version, magically adding any needed v prefix. fetches tags if a tag list isn't supplied.
proc bump(minor = false; major = false; patch = true; release = false; dry_run = false;
         folder = ""; nimble = ""; log_level = logLevel; commit = false; v = false;
         manual = ""; message: seq[string]): int {...}{.raises: [Exception, ValueError,
    UnpackError, OSError, IOError, FieldError, AccessViolationError,
    RegexInternalError, InvalidUnicodeError, KeyError, SyntaxError, StudyError,
    IndexError, Defect, Exception, ValueError], tags: [RootEffect, ReadDirEffect,
    ReadEnvEffect, ReadIOEffect, WriteDirEffect, WriteIOEffect, ExecIOEffect].}
the entry point from the cli
proc projectVersion(hint = ""): Option[Version] {...}{.compileTime,
    raises: [ValueError, UnpackError, OSError], tags: [ReadDirEffect, ReadEnvEffect].}
try to get the version from the current (compile-time) project