Skip to content

Latest commit

 

History

History
2389 lines (1597 loc) · 80.9 KB

CHANGELOG.md

File metadata and controls

2389 lines (1597 loc) · 80.9 KB

Changelog

Important

This release contains breaking changes to the input.Read, input.ReadPassword, and input.ReadPasswordSecure methods. Prior to this release, all of these methods took a boolean argument to disallow empty input. Since we are adding input validators, you will need to use the NotEmpty validator for the same behaviour.

  • [fmtutil/table] Added automatic breaks feature
  • [terminal/input] Added input validation feature
  • [terminal/input] Fixed bug with hiding the password when HidePassword is set to true and an empty input error is displayed
  • [terminal/input] Fixed bug with printing new line after input field on error
  • [knf] Added helper Q
  • [fmtc] Code refactoring
  • [usage] Code refactoring
  • [errors] Fixed bug with extra newline character at the end of Error output
  • [errors] Added new package of utilities for working with errors
  • [knf] Added type Validators for Validator slice
  • [knf] Code refactoring
  • [options] Code refactoring
  • [errutil] Package deprecated
  • [req] AutoDiscard now doesn't affect responses with successful response status codes (200-299)
  • [knf/validators] Added support of int64, uint, and uint64 to Less vaildator
  • [knf/validators] Added support of int64, uint, and uint64 to Greater vaildator
  • [knf/validators] Added validator SizeGreater
  • [knf/validators] Added validator SizeLess
  • [fmtutil] Added support of kk, kkk, kib, mib, gib, and tib in ParseSize
  • [knf] Added getter GetSZ for reading value as the size
  • [knf/united] Added getter GetSZ for reading value as the size
  • [knf/validators] Added validator TypeSize
  • [knf/validators] Added validator InRange
  • [fmtutil] Code refactoring
  • [knf/united] Improved usage examples
  • [req] Guess the value of the Content-Type header based on the request body type
  • [setup] Added package to install/uninstall application as a service
  • [support/deps] Improved collecting and filtering dependencies info
  • [support/kernel] Added simple globs support for parameter names
  • [mathutil] Added method FromPerc
  • [mathutil] Code refactoring
  • [support/resources] Added package for collecting info about CPU and memory
  • [support/kernel] Added package for collecting OS kernel parameters
  • [system/sysctl] Added method All to get all kernel parameters
  • [system] Added macOS support for GetCPUInfo
  • [system] Added macOS support for GetMemUsage
  • [support] Added locale to default OS info output
  • [mathutil] Added methods IsInt, IsFloat, and IsNumber
  • [support] Added info if CGO is used for build
  • [system/sysctl] Added new package for reading kernel parameters
  • [strutil] Added method SqueezeRepeats
  • [timeutil] Improved formatting of days and seconds in MiniDuration
  • [timeutil] Added support of minutes, hours and days to MiniDuration
  • [timeutil] Added separator customization to MiniDuration
  • [timeutil] Added usage examples for MiniDuration
  • [support/apps] Fixed Docker version extraction
  • [support] Improved output of large list of IPv4 and IPv6 addresses
  • [support/apps] Added support for Docker, Podman, and LXC
  • [rand] Removed method Int
  • [rand] Code refactoring
  • [cache] Added constants with duration
  • [cache/fs] Using cache.Duration instead of time.Duration
  • [cache/memory] Using cache.Duration instead of time.Duration
  • [cache/fs] Added check for passed expiration duration in Set
  • [cache/fs] Code refactoring
  • [cache/fs] Fixed bug with closing item file after reading data
  • [cache/fs] Fixed bug with removing expired items in Get
  • [cache/fs] Added cache with file system storage
  • [cache] In-memory cache moved to cache/memory
  • [sliceutil] Added method Join
  • [terminal/input] Added NewLine flag
  • [sliceutil] Methods Copy, IsEqual, Index, Contains, and Deduplicate marked as deprecated
  • [terminal/input] Improved TMUX support
  • [errutil] Added method Wrap
  • [passthru] Reader now implements only io.Reader interface, not io.ReadCloser
  • [passthru] Writer now implements only io.Writer interface, not io.WriteCloser
  • [env] Fixed compatibility with Windows
  • [support] Add basic support of collecting info on Windows
  • [support/apps] Added Windows support
  • [support/network] Added Windows support

Caution

In this release, we have changed the logic behind some knf validators (Less, Greater, LenLess, LenGreater) from negative to positive check. This means that if you have any of these validators, you need to swap them (LessGreater, GreaterLess, LenLessLenGreater, LenGreaterLenLess) to keep the logic of the validation.

  • [knf/validators] Changed logic from negative to positive check for Less, Greater, LenLess, and LenGreater validators.
  • [knf/validators] Validator LenNotEquals renamed to LenEquals
  • [knf/validators] Validator NotPrefix renamed to NotPrefix
  • [knf/validators] Validator HasSuffix renamed to HasSuffix
  • [knf/validators] Validator Equals renamed to NotEquals
  • [log] Code refactoring

  • [knf/validators] Added validators Set, SetToAny, SetToAnyIgnoreCase, LenLess, LenGreater, and LenNotEquals
  • [knf/validators] Validators Empty, NotContains, and NotLen marked as deprecated
  • [knf/validators] Improved validators input validation
  • [knf/validators/fs] Improved validators input validation
  • [knf/validators/regexp] Improved validators input validation
  • [knf/validators] Code refactoring
  • [knf/validators/system] Code refactoring
  • [fsutil] Added method GetModeOctal
  • [pager] Disable PAGER environment variable usage by default
  • [pager] Added AllowEnv option to allow the use of the PAGER environment variable
  • [options] Added method Delete
  • [usage] Added support for optional arguments to usage info
  • [uuid] Added UUID7 generator
  • [options] Code refactoring
  • [usage] Added Info.WrapLen option for text wrapping configuration
  • [support] Added support of Docker with gVisor runtime
  • [system/container] Added support of Docker with gVisor runtime
  • [usage] Added automatic wrapping for example, command, and option descriptions
  • [color] Documentation improvements
  • [sliceutil] Code refactoring
  • [support/network] Added Cloudflare trace support for public IP resolution
  • [terminal] Code refactoring
  • [i18n] Added new package for internationalization
  • [log] Added field collection support
  • [log] Ignore fields without key
  • [log] Fixed formatting of JSON output when no message is passed
  • [pluralize] Fixed bug with handling negative numbers
  • [pluralize] Code refactoring
  • [env] Add Variable struct for lazy environment reading
  • [fmtc] Add support of FMTC_NO_BOLD, FMTC_NO_ITALIC, and FMTC_NO_BLINK environment variables
  • [terminal] Fixed bug with output messages from Error and Warn to stdout instead of stderr
  • [support/network] Sort and deduplicate IPs
  • [csv] Added method Reader.Line
  • [csv] Added more helpers for working with CSV row data
  • [csv] Added helpers for working with CSV row
  • [csv] Added option to skip header
  • [option] Removed Required flag from option struct
  • [initsystem/sdnotify] Added new package for sending messages to systemd
  • [support/deps] Updated for compatibility with the latest version of depsy
  • [terminal/tty] Improved check for systemd
  • [knf] Added methods Alias and Config.Alias
  • [knf] Added property name validation for all getters
  • [sliceutil] Added method IsEqual
  • [knf] Code refactoring
  • [knf] Added more tests
  • [initsystem] Added launchd support
  • [support/services] Added package for collecting services info
  • [terminal/input] Added method SetHistoryCapacity
  • [options] Improved Errors.String output formatting
  • [terminal/input] Added more usage examples
  • [terminal/input] Code refactoring
  • [terminal/input] Added new package for working with user input
  • [options] Added helper for working with errors
  • [terminal] All methods for working with user input moved to separate package
  • [terminal] Improved rendering messages with prefix
  • [color] Tests refactoring
  • [options] Code refactoring
  • [terminal] Code refactoring

Important

  • [mathutil] Removed all deprecated methods
  • [passwd] Removed all deprecated methods
  • [sliceutil] Removed all deprecated methods
  • [terminal] Removed all deprecated methods
  • [usage] Removed all deprecated methods
  • [uuid] Removed all deprecated methods
  • [terminal/window] Package removed due to deprecation of all methods
  • [support] Added Yandex Serverless support
  • [system/container] Added Yandex Serverless support
  • [knf/united] Added method GetMapping
  • [knf/united] Added method CombineSimple
  • [support/pkgs] Added compatibility with macOS
  • [options] Alias, Conflicts, and Bound now supports string slices
  • [options] Improved string representation format of Map, V and option name
  • [terminal/tty] Windows stubs refactoring
  • [support] Added binary name info
  • [terminal/tty] Added method IsSystemd
  • [fsutil] Method IsNonEmpty marked as deprecated
  • [fsutil] Fixed stubs for Windows
  • [terminal/window] Fixed deprivation message
  • [knf/united] United configuration separated from global KNF configuration
  • [knf/united] Added helper method AddOptions
  • [options] Added methods V.String and Map.String
  • [support] Minor UI improvement
  • [options] Code refactoring
  • [support/pkgs] Improved formatting
  • [support/network] Local IPs removed from IPv4/IPv6 address lists
  • [support/pkgs] Added tdnf (Photon Linux) support
  • [support/pkgs] Added pacman (Arch Linux) support
  • [support/pkgs] Package name removed from version info
  • [support] Fixed stubs for Windows
  • [support] Added custom checks support
  • [knf/united] Improved handling of environment variables
  • [support] Improved application info formatting
  • [support] Code refactoring
  • [support] Added more tests
  • [support] Fixed documentation formatting
  • [support] Added new package for collecting support information
  • [options] Added method Map.Set
  • [options] Added method Map.Delete
  • [options] Added shortcut F for method Format
  • [system/container] Added method IsContainer
  • [system/container] Added engine info caching
  • [pager] Fixed panic when pager stdin is not a file
  • [usage] Fixed bug with changing color for certain command or option
  • [lock] Fixed build tags
  • [options] Code refactoring
  • [usage] Code refactoring
  • [options] Tests refactoring
  • [system/container] Added usage examples
  • [knf/united] Added method Simple
  • [knf/united] Added method ToOption with shortcut O
  • [knf/united] Added method ToEnvVar with shortcut E
  • [log] Added JSON output format
  • [log] Added caller info to messages
  • [strutil] Added method IndexByteSkip
  • [timeutil] Added method FromISOWeek
  • [log] Code refactoring
  • [knf/united] Added validation using knf validators
  • [knf/united] Added usage examples
  • [knf/united] Added new package for working with united configuration (knf + options + environment variables)
  • [knf] Added method GetTD
  • [knf] Added method GetTS
  • [knf] Added method GetTZ
  • [knf] Added method GetL
  • [options] Fixed panic when parsing unsupported option with value passed with equal sign (=)
  • [options] Code refactoring
  • [knf] Code refactoring
  • [knf/validators/network] Added Mail validator
  • [log] Added Divider method
  • [knf/validators/fs] Code refactoring
  • [knf/validators/network] Code refactoring
  • [knf/validators/regexp] Code refactoring
  • [knf/validators/system] Code refactoring
  • [req] Added Bearer Token property to Request struct
  • [log] Added NilLogger
  • [path] Handle both directions in DirN
  • [strutil] Code refactoring
  • [knf] Add method Parse
  • [knf] Add method Config.Merge
  • [knf] Code refactoring
  • [knf] Improved usage examples
  • [mathutil] Added method Perc
  • [system] Added methods MemUsage.MemUsedPerc and MemUsage.SwapUsedPerc
  • [fmtutil] Code refactoring
  • [fmtutil/table] Improved tests
  • [mathutil] Added usage examples
  • [passthru] Added package with pass-thru reader and writer
  • [progress] Migrate to passthru package
  • [fmtutil/table] Improved borders and separators rendering
  • [usage] Improved environment info output
  • [spinner] Improved message rendering
  • [terminal/tty] Fixed bug in checking for TTY when stdin is a character device
  • [terminal/tty] Improved tests
  • [fmtutil/table] Added global flag FullScreen for full screen table mode
  • [fmtutil/table] Full-screen table mode enabled by default
  • [fmtutil/table] Added table border symbol customization
  • [fmtutil/table] Added table border symbol color customization
  • [fmtutil/table] Added table separator symbol customization
  • [fmtutil/table] Added table separator symbol color customization
  • [fmtutil/table] Added table header color customization
  • [fmtutil/table] Added table options for hiding top and bottom borders
  • [fmtutil/table] Added data preprocessing feature using custom input processing function
  • [fmtutil/table] Improved data rendering
  • [fmtutil/table] Code refactoring
  • [options] Added method Format
  • [options] Code refactoring
  • [fmtc] Added complex tags support for named colors
  • [fmtc] Added named colors nesting
  • [color] Added method Term2RGB
  • [terminal/tty] Added method IsTMUX
  • [terminal/tty] Added more usage examples
  • [timeutil] ParseDuration now returns time.Duration instead of seconds
  • [pager] Use more -f by default
  • [pager] Code refactoring
  • [color] Added alpha channel info to HSL and HSV
  • [color] Added method RGBA.WithAlpha
  • [color] Improved support for hex colors with alpha
  • [color] Use web color representation for Hex.String
  • [color] Added flag to Hex.ToWeb to disable shorthand generation
  • [color] Fixed shorthand hex generation for #FFF
  • [color] Fixed RGBA to Hex conversion
  • [usage] Added color customization for example description
  • [usage] Changed default color for example description
  • [pager] Improved pager search
  • [fmtutil] Code refactoring
  • [fmtutil/table] Code refactoring
  • [pager] Fixed build tags
  • [terminal/tty] Fixed build tags
  • [pager] Added new package for pager (less/more) setup
  • [terminal/tty] Added new package for working with TTY
  • [fmtc] Added method IsColorsSupported
  • [fmtc] Added tag for italic text ({&})
  • [fmtc] Added tag for striked text ({=})
  • [fmtc] Added tag for hidden text ({+})
  • [usage] Info.AddCommand now returns pointer to added command
  • [usage] Info.AddOption now returns pointer to added option
  • [usage] Added color customization for release and build info
  • [usage] Added release separator customization
  • [usage] Improved command group rendering
  • [usage] Improved options rendering
  • [log] Added method Is and Logger.Is
  • [log] Added more usage examples
  • [terminal] Updated Windows stubs
  • [errutil] Added method Errors.First
  • [errutil] Added method Errors.Get
  • [fmtutil/table] Added short form of align flags
  • [terminal] Error, Warn and Info now accept custom message objects
  • [errutil] Added more usage examples
  • [fmtutil/panel] Improved panel rendering with disabled colors
  • [fmtc] Fixed IsTag compatibility with sequence of tags (e.g. {*}{_}{r})
  • [fmtc] Fixed bug in Clean with writing reset escape sequence if there is no reset tag in the given string
  • [protip] Disabling tips using environment variable (PROTIP=0)
  • [protip] Added new package for showing usage tips
  • [fmtc] Added method IsTag for color tag validation
  • [fmtutil/panel] Added TOP_LINE option
  • [fmtutil/panel] Added DefaultOptions variable to set default options for all panels
  • [strutil] Added method LenVisual
  • [log] Added color tag validation
  • [progress] Added settings validation
  • [spinner] Added color tag validation
  • [usage] Added color tag validation
  • [fmtutil/panel] Improved panel rendering when BOTTOM_LINE option is used
  • [fmtutil/panel] Improved panel rendering when label is empty
  • [fmtutil/panel] Added limit for minimal panel size (256 symbols)
  • [fmtutil/panel] Added limit for maximum panel size (256 symbols)
  • [fmtutil/panel] Added limit for maximum indent size (24 symbols)
  • [fmtutil/panel] Fixed bug with panel rendering if Indent > 0
  • [fmtutil/panel] Code refactoring
  • [netutil] Fixed stubs for Windows
  • [netutil] Added method GetAllIP
  • [netutil] Added method GetAllIP6
  • [knf/validators/network] Added HasIP validator
  • [strutil] Added method ReplaceIgnoreCase
  • [uuid] GenUUID4 renamed to UUID4
  • [uuid] GenUUID5 renamed to UUID5
  • [uuid] Code refactoring
  • [system] Added ANSI color info to OSInfo
  • [system] Added methods OSInfo.ColoredPrettyName and OSInfo.ColoredName
  • [strutil] Improved usage examples
  • [fmtutil/panel] Added indent customization
  • [barcode] New package with methods to generate colored representation of unique data
  • [options] Fixed bug with Split result for empty options
  • [options] Added merge symbol customization
  • [options] Added method Split for splitting string value of mergeble option
  • [options] Improve usage examples
  • [knf] Added dedicated type for duration modifiers
  • [knf] Added modificator support for GetD
  • [spinner] Added initial spinner animation
  • [terminal] Improved AlwaysYes flag handling
  • [terminal] Added flag AlwaysYes, if set ReadAnswer will always return true without reading user input (useful for working with option for forced actions)
  • [timeutil] Added method PrettyDurationSimple for printing duration in simple format
  • [fmtutil] Fixed handling negative numbers in PrettySize
  • [fsutil] Fixed handling empty paths in ProperPath
  • [fmtutil/panel] Panel rendering moved from terminal sub-package to it's own sub-package
  • [terminal] Added support of options for panels
  • [mathutil] Sub-package migrated to generics
  • [sliceutil] Sub-package migrated to generics
  • [color] Code refactoring
  • [spinner] Code refactoring
  • [terminal] Added panel size configuration feature
  • [terminal] Improved panel rendering for messages with newlines
  • [initsystem] Removed systemd statuses activating and deactivating from checking service state
  • [terminal] Added flag HidePassword for masking passwords while typing
  • [terminal] Added method Info for showing informative messages
  • [terminal] Added method Panel for showing panel with custom label, title, and message
  • [terminal] Added method ErrorPanel for showing panel with error message
  • [terminal] Added method WarnPanel for showing panel with warning message
  • [terminal] Added method InfoPanel for showing panel with informative message
  • [terminal] Method PrintErrorMessage marked as deprecated (use method Error instead)
  • [terminal] Method PrintWarnMessage marked as deprecated (use method Warn instead)
  • [fmtc] Code refactoring
  • [initsystem] Code refactoring
  • [csv] Added method WithComma to CSV reader
  • [spinner] Added symbols customization
  • [spinner] Change default skip symbol to check mark
  • [spinner] Change default skip symbol color to dark grey
  • [spinner] Code refactoring
  • [options] Improved short options parsing logic
  • [progress] Added window size configuration for passthru calculator
  • Fixed typos
  • [options] Fixed bug with flattening empty arguments
  • [usage] Added support of raw version printing
  • [path] Added method JoinSecure - more "secure" alternative to standard Join
  • [usage] Code refactoring
  • [options] Added method Arguments.Flatten for converting arguments into a string
  • [usage/update] Added update checker for GitLab
  • [fmtutil] Added method Align for aligning text with ANSI control sequences (for example colors)
  • [usage] Added feature for adding and rendering environment info
  • [processes] ProcessInfo.Childs renamed to ProcessInfo.Children
  • Fixed typos
  • [timeutil] Added method MiniDuration which returns formatted value for short durations (e.g. s/ms/us/ns)
  • [terminal] Method ReadUI marked as deprecated (use method Read instead)
  • [knf] Fixed bug with using method Is for checking for empty values
  • [terminal] Added prefix feature for error and warning messages
  • [system/containers] More precise method for checking container engine
  • [system/containers] Added LXC support
  • [lscolors] Sub-package moved from fmtc to root of the package
  • [lscolors] GetColor returns colors for types of objects (like directory, block device, link…)
  • [lscolors] Added flag DisableColors for disabling all colors in output
  • [usage] Methods Render marked as deprecated (use Print methods instead)
  • [cron] Code refactoring
  • [csv] Code refactoring
  • [fmtutil/table] Code refactoring
  • [knf] Code refactoring
  • [options] Code refactoring
  • [progress] Code refactoring
  • [req] Code refactoring
  • [spellcheck] Code refactoring
  • [tmp] Code refactoring
  • [usage] Code refactoring
  • [cache] Better tests for panics
  • [cron] Better tests for panics
  • [csv] Better tests for panics
  • [fmtutil/table] Better tests for panics
  • [log] Better tests for panics
  • [progress] Better tests for panics
  • [req] Better tests for panics
  • [spellcheck] Better tests for panics
  • [tmp] Better tests for panics
  • [initsystem] Improved systemd support
  • [system/container] Added container sub-package with methods for checking container engine info
  • [system] Added container engine info to SystemInfo
  • [fmtutil/table] Improved separator rendering
  • Code refactoring
  • [fmtutil/table] Improved separator rendering
  • Code refactoring
  • [system] Added system arch name to SystemInfo
  • [system] Version and Distribution info removed from SystemInfo (use OSInfo instead)
  • [system] GetOSInfo now works on macOS
  • [progress] Fixed bug with updating progress settings
  • [log] Added interface for compatible loggers
  • [httputil] Added more helpers for checking URL scheme
  • [log] Color for critical errors set from magenta to bold red
  • [tmp] Improved unique name generation
  • [req] Code refactoring
  • [tmp] Improved usage examples
  • [fmtc] Added named colors support
  • [system] Fixed fuzz tests
  • [fmtc] Reverted changes made in 12.55.1
  • [fmtc] Fixed bug with printing useless carriage return symbol in TPrint* commands
  • [terminal] Added color customization for warning and error messages
  • [fmtc] Method NewLine now can print more than one new line
  • [progress] Fixed bug with handling finish stage
  • [progress] Improved usage example
  • [passwd] Code refactoring
  • [timeutil] Added more helpers for working with dates
  • [options] Fixed panic in GetS when mixed or string option contains non-string value
  • [strutil] Added method B for choosing value by condition
  • [system/process] Tests updated for compatibility with GitHub Actions
  • [fmtc] Added method If for conditional message printing
  • [lock] New package for working with lock files
  • [fsutil] Better errors messages from ValidatePerms
  • [pid] Code refactoring
  • [progress] Fixed bug with duplicating progress bar
  • [progress] Fixed bug with duplicating percentage symbol
  • [fmtc] Fixed simple mistakes in usage examples
  • [fmtutil/table] Fixed strings formatting
  • [req] Fixed strings formatting
  • [spinner] Fixed strings formatting
  • [usage] Fixed strings formatting
  • [fmtc] Added methods TPrint, LPrint and TLPrint
  • [system] More fields support from os-release file
  • [system] Added method ParseOSInfo for parsing os-release files
  • [system] Improved tests
  • [fmtc] Added more usage examples
  • [options] Added method Is for checking argument value
  • [options] Fix bug with filtering unexpanded globs
  • [terminal] Added option HideLength for hiding password length
  • [fmtutil/table] Fixed bug with calculating number of columns
  • [fsutil] Added bufio writer for copying files
  • [knf] Added method Is for checking property value
  • [options] Added method Is for checking option value
  • [fsutil] Fixed bug with changing file mode for copied file if custom umask is used
  • [options] Code refactoring
  • [spinner] Code refactoring
  • [knf] Added more usage examples
  • [fmtc/lscolors] Added method GetColor for getting control sequence for file
  • [fmtc/lscolors] Added method ColorizePath for colorizing whole path
  • [spinner] Added method Skip for marking actions as skipped
  • [tmp] Use os.TempDir for default directory instead of hardcoded path
  • [options] Fixed arguments filtering feature
  • [system] Fixed stubs for Windows
  • [terminal] Fixed stubs for Windows
  • [log] Improved documentation
  • [knf] Added method Config.File() which returns path to configuration file
  • [options] Added many helpful methods for working with arguments
  • [spinner] Added fmtc color codes support
  • [terminal] Title color customization support
  • [fsutil] Added method CopyAttr for copying attributes from one object to another
  • [fsutil] Code refactoring
  • [options] Code refactoring
  • [tmp] Code refactoring
  • [options] Added more usage examples
  • [fsutil] Improved tests
  • [ansi] Fixed examples
  • [color] Tests refactoring
  • [directio] Code refactoring
  • [easing] Code refactoring
  • [fmtc] Code refactoring
  • [fsutil] Code refactoring
  • [knf] Code refactoring
  • [log] Code refactoring
  • [log] Tests refactoring
  • [options] Code refactoring
  • [req] Code refactoring
  • [signal] Use buffered channels for signals
  • [system] Code refactoring
  • [timeutil] Code refactoring
  • [usage] Code refactoring
  • [path] Added method Compact for converting path to compact representation
  • [fmtc] Added method Render for converting color tags to ANSI escape codes
  • [knf/validators/fs] Fixed bug with formatting FileMode in error messages
  • [cron] Improved parsing error messages
  • [fsutil] Improved parsing error messages
  • [cron] Improved tests
  • [directio] Improved tests
  • [fsutil] Improved tests
  • [initsystem] Improved tests
  • [jsonutil] Improved tests
  • [knf] Improved tests
  • [knf/validators/fs] Improved tests
  • [knf/validators/network] Improved tests
  • [knf/validators/regexp] Improved tests
  • [knf/validators/system] Improved tests
  • [knf/validators] Improved tests
  • [log] Improved tests
  • [options] Improved tests
  • [req] Improved tests
  • [system] Improved tests
  • [system/process] Improved tests
  • [system/sensors] Improved tests
  • [tmp] Improved tests
  • [version] Improved tests
  • [spellcheck] Added usage examples
  • [log] Fixed bug with rendering messages with colors when fmtc.DisableColors set to true
  • [terminal] Fixed stubs for Windows
  • [secstr] Fixed stubs for Windows
  • [terminal] Added method ReadPasswordSecure for reading password into a secure string
  • [secstr] Fixed panic in IsEmpty and Destroy if string struct is nil
  • Module path set to v12
  • [fsutil] Improved helpers CopyFile, MoveFile and CopyDir
  • [fsutil] Code refactoring
  • [log] Code refactoring
  • Removed pkg.re usage
  • [usage] Added helpers for generating a string representation of Command and Option
  • [fsutil] Improved errors description for ValidatePerms
  • [ansi] Added methods for working with byte slices
  • [secstr] Added method IsEmpty for checking empty strings
  • [fmtutil] Method Wrap was rewritten from scratch
  • [fmtutil] Method Wrap now ignores ANSI/VT100 control sequences
  • [timeutil] Method ParseDuration was rewritten from scratch
  • [timeutil] Method ParseDuration now allows to define default modificator
  • [usage] Code refactoring
  • [knf] Fixed bug with naming tests source files
  • [fmtc] Added TrueColor support
  • [system] Improved macOS support
  • [netutil] Improved macOS support
  • [system] Fixed bug with extracting macOS version
  • [system] Fixed bug with extracting macOS arch info
  • [fmtc] Code refactoring
  • [system] Code refactoring
  • Added more stubs for macOS
  • Improved stubs for Windows
  • Fixed build tags for Go ≤ 1.16
  • [usage] Improved color customization for application name and version
  • [usage] Added color customization for application name in usage info
  • [strutil] Added helper Q for working with default values
  • [usage] Added color customization for application name and version
  • [system] Added CPU architecture bits info to SystemInfo
  • [passwd] Fixed typo in deprecation notice
  • [secstr] New package for working with protected (secure) strings
  • [req] Method Query.String() renamed to Query.Encode()
  • [passwd] Added method GenPasswordVariations and GenPasswordBytesVariations for generating password variations with possible typos fixes
  • [passwd] Added methods HashBytes, CheckBytes, GenPasswordBytes and GetPasswordBytesStrength
  • [passwd] Method Encrypt marked as deprecated (use Hash method instead)
  • [passwd] Added more usage examples
  • [fsutil] Added method TouchFile for creating empty files
  • [fsutil] Code refactoring
  • [fmtc] Documentation refactoring
  • [timeutil] Documentation refactoring
  • [fsutil] Added usage examples
  • [errutil] Added support for string, []string, and errutil.Errors types to method Errors.Add
  • [fmtutil] Added method PrettyBool for formatting boolean values
  • [fmtutil] Added method PrettyDiff for formatting diff numbers
  • [fmtutil] Fixed bug in PrettyNum with formatting negative numbers
  • [fmtutil] Code refactoring
  • [errutil] Added method Reset for resetting Errors instance
  • [sliceutil] Added methods Copy, CopyInts and CopyFloats for copying slices
  • [csv] Code refactoring
  • [sliceutil] Code refactoring
  • [ansi] New package for working with ANSI/VT100 control sequences
  • [terminal] Added fmtc color codes support in input prompt
  • [terminal] Fixed bug with masking password if prompt contains ANSI color codes
  • [strutil] Code refactoring
  • [options] Added more usage examples
  • [errutil] Added method Cap for getting max capacity
  • [system/sensors] Added sorting by the name for slice with devices info
  • [errutil] Added more usage examples
  • [fmtc] NO_COLOR support
  • [fmtc] Code refactoring
  • [httputil] Added method GetPortByScheme
  • [events] Improved unknown events handling
  • [system/sensors] Code refactoring
  • [system/sensors] Increased code coverage (0.0% → 100.0%)
  • [events] Added usage examples
  • [httputil] Added usage examples
  • Error check moved at the beginning of every test
  • [events] New package for creating event-driven systems
  • [system] Fixed bug with parsing CPU info data
  • [fsutil] Added method IsEmpty for checking empty files
  • [system/process] Fixed bug with searching info for creating process tree
  • [knf] Code refactoring
  • [usage] Added more usage examples
  • [color] Added method Parse for parsing colors (#RGB/#RGBA/#RRGGBB/#RRGGBBAA)
  • [color] Fixed bug with formatting small values using Hex.ToWeb
  • [color] Fixed bug with converting Hex to RGBA
  • [easing] Added links to examples for every function
  • [easing] Added usage examples
  • [color] Added three-digit RGB notation generation to Hex.ToWeb
  • [color] Using structs for color models instead of bare numbers
  • [color] Much simpler converting between color models
  • [color] Added method RGB2CMYK for converting RGB colors to CMYK
  • [color] Added method CMYK2RGB for converting CMYK colors to RGB
  • [color] Added method RGB2HSL for converting RGB colors to HSL
  • [color] Added method HSL2RGB for converting HSL colors to RGB
  • [color] Added method Luminance for calculating relative luminance for RGB color
  • [color] Added method Contrast for calculating contrast ratio of foreground and background colors
  • [color] Method RGB2HSB rewritten from scratch and renamed to RGB2HSV
  • [color] Method HSB2RGB rewritten from scratch and renamed to HSV2RGB
  • [color] Added more usage examples
  • [cache] Renamed Store to Cache
  • [cache] Added method Size for checking cache size
  • [cache] Added method Expired for checking number of expired items
  • [timeutil] Added more new helpers
  • [log] Code refactoring
  • [log] Improved tests
  • [knf] Added new getter GetD which returns value as duration in seconds
  • [system/process] Improved tests
  • go-check package replaced by our fork
  • [cron] Removed useless example
  • [knf/validators/fs] Fixed bug with handling pattern matching error
  • [path] Fixed usage examples
  • [terminal] Usage examples improvements
  • [system/process] Fixed stubs for Windows
  • [system/process] Added methods for setting and getting CPU scheduler priority
  • [system/process] Added methods for setting and getting IO scheduler priority
  • [system] Added method GetCPUCount for getting info about number of CPU's
  • [system/process] Added method GetMountInfo for getting info about process mounts
  • [system] Code refactoring
  • [system/process] Code refactoring
  • [system] Increased code coverage (78.5% → 90.5%)
  • [system/process] Increased code coverage (82.4% → 98.0%)
  • [sliceutil] Added usage examples
  • [strutil] Added methods HasPrefixAny and HasSuffixAny for checking multiple prefixes or suffixes at once
  • [path] Fixed stubs for Windows
  • [options] Method Parse now returns arguments as Arguments struct with additional methods for working with them
  • [strutil] Added methods Before and After for extracting strings before and after some substring
  • [progress] Fixed bug with rendering resulting progress bar in some situations
  • [progress] Using integer instead of floats for progress if total size is less than 1000 and IsSize set to false
  • [path] Added new method for checking Unix-type globs
  • [fsutil] Fixed stubs for Windows
  • [progress] Minor UI fix
  • [usage/completion/bash] Code refactoring
  • [spinner] Added new package for showing spinner animation for long-running tasks
  • [timeutil] Added high precision mode for ShortDuration
  • [fmtc/lscolors] Improved environment variable parsing
  • [fmtc/lscolors] Added new package for colorizing file names with colors from dircolors
  • [usage/completion/bash] Improved completion generation
  • [usage/completion/zsh] Improved completion generation
  • [usage/completion/bash] Fixed bug with showing files with autocomplete
  • [usage/completion/zsh] Fixed bug with showing files with autocomplete
  • [timeutil] Added method PrettyDurationInDays for rendering pretty duration in days
  • [timeutil] Code refactoring
  • [timeutil] Added checking for parsing errors to ParseDuration method
  • [req] Code refactoring
  • [usage/man] Added package for generating man pages from usage info
  • [usage/update] Disabled update check from CI environments
  • [knf/validators/system] Fixed bug with source file naming
  • [log] Removed useless return value from Aux, Debug, Info, Warn, Error, Crit and Print methods
  • [knf/validators/regexp] Added new KNF validator for checking regular expression pattern matching
  • [knf/validators/fs] Added new KNF validator for checking shell pattern matching
  • [fsutil] Fixed bug with checking empty dirs on osx
  • [initsystem] Disabled tests on osx
  • [knf/validators/fs] Fixed tests on osx
  • [knf/validators/system] Fixed compatibility with osx
  • [log] Fixed tests on OSX
  • [system] Fixed checking user or group existence on OSX
  • [system] Fixed group lookup on osx
  • [system] Improved user info fetching on OSX
  • [path] Code refactoring
  • [path] Added more usage examples
  • [timeutil] Added more usage examples
  • [timeutil] Added method SecondsToDuration for conversion float64 to time.Duration
  • [timeutil] DurationToSeconds now returns the result as a float64 number
  • [hash] Code refactoring
  • [system] Fixed compatibility with Go ≥ 1.15
  • License changed from EKOL to Apache-2.0
  • [req] Added method Bytes() for reading response body as byte slice
  • [env] Fixed tests
  • [timeutil] Added method ShortDuration for duration formatting
  • [timeutil] Code refactoring
  • [progress] Calculate speed and remaining time using Exponentially Weighted Moving Average (EWMA)
  • [progress] Added pass thru writer
  • [progress] Added package for creating terminal progress bar
  • [usage/update] Increased dial and request timeouts to 3 seconds
  • [fmtutil] Added possibility to define custom separators in PrettySize and PrettyNum methods
  • [passwd] Increased code coverage (94.9% → 96.8%)
  • [usage/update] Increased code coverage (92.1% → 100%)
  • [req] Tests refactoring
  • [usage/update] Added update checker for custom storages
  • [path] Added method DirN for reading N elements from path
  • [pluralize] Methods Pluralize and PluralizeSpecial now return only pluralized word (incompatible changes)
  • [pluralize] Added methods P and PS for pluralization with custom formatting
  • [pluralize] Added usage examples

  • [usage] Added more examples
  • [cron] Added usage examples
  • [system] Fixed bug with parsing group info in id output
  • [usage] Added support of raw examples (without prefix with command name)
  • [errutil] Fixed panic in Add if given Errors struct is nil
  • [color] Fixed compatibility with ARM
  • [fmtutil] Fixed compatibility with ARM
  • [system] Fixed compatibility with ARM
  • [signal] Added method GetByName for getting signal by its name
  • [signal] Added method GetByCode for getting signal by its code
  • [fsutil] Added method ValidatePerms for permissions validation
  • [system] Improved current user info caching mechanic
  • [fsutil] Increased code coverage (98.0% → 98.8%)
  • [initsystem] Fixed stubs for Windows
  • [log] Logger is now more concurrency friendly
  • [log] Default color for debug messages set to light gray
  • [cache] Added data removal from cache with disabled janitor
  • [cache] Added method Has for checking item existence
  • [cache] Janitor thread will not run if the cleaning interval is equal to 0
  • [pid] Added method Read for reading PID files without any configuration
  • [knf] Minor documentation fixes
  • [fsutil] GetPerms renamed to GetMode
  • [fsutil] Added support of checking for character and block devices (C and B)
  • [knf] Validators moved to sub-package (incompatible changes)
  • [knf] Added more validators
  • [knf] Removed useless dependencies
  • [fsutil] Increased code coverage (97.4% → 98.0%)
  • [kv] Package removed

  • [strutil] Fixed bug in Substr method for a situation when the index of start symbol is greater than the length of the string
  • [strutil] Fixed bug in Substring method for a situation when the index of start symbol is greater than the length of the string
  • [knf] Added no as a valid boolean value for GetB
  • [knf] Added new validators for property type validation
  • [knf] Code refactoring
  • [cache] Added package which provides simple in-memory key:value store
  • [timeutil] Added support of short durations (milliseconds, microseconds or nanoseconds) to PrettyDuration method
  • [log] Added support of ANSI colors in the output
  • [log] Using uint8 for level codes instead of int
  • [version] Added method IsZero for checking empty version struct
  • [errutil] Method Add now allows adding slices with errors
  • [errutil] Added possibility to limit the number of errors to store
  • [errutil] Method Add now allows adding errors from other Errors struct
  • [sliceutil] Using in-place deduplication in Deduplicate method
  • [req] Changed default user-agent to go-ek-req/10
  • [usage] Fixed bug with formatting options without short name
  • [req] Added method PostFile for multipart file uploading
  • [fsutil] Fixed bug with filtering listing data
  • [pid] Added method IsProcessWorks for checking process state by PID
  • [pid] Improved process state check
  • [pid] Improved Mac OS X support
  • [terminal] Reading user input now is more stdin friendly (you can pass the input through the stdin)
  • [usage] Fixed bug with formatting options
  • [fmtutil/table] More copy&paste friendly table rendering
  • [emoji] New package for working with emojis
  • [usage/completion/bash] Improved bash completion generation
  • [usage/completion/bash] Added bash completion generator
  • [usage/completion/zsh] Added zsh completion generator
  • [usage/completion/fish] Added fish completion generator
  • [usage] Added method info.BoundOptions for linking command with options
  • [csv] Added method reader.ReadTo for reading CSV data into slice
  • [strutil] Fixed bug in Fields method
  • [initsystem] Added caching for initsystem usage status
  • [initsystem] Improved service state search for SysV scripts on systems with Systemd
  • [usage] Code refactoring
  • [strutil] Added method Exclude as the faster replacement for strings.ReplaceAll
  • [fmtutil] Fixed bug with formatting small float numbers using PrettySize method
  • [jsonutil] Added Write as alias for EncodeToFile
  • [jsonutil] Added Read as alias for DecodeFile
  • [jsonutil] Added WriteGz for writing gzipped JSON data
  • [jsonutil] Added ReadGz for reading gzipped JSON data
  • [strutil] Improved parsing logic for the Fields method
  • [strutil] Added additional supported quotation marks types
  • [initsystem] Fixed bug with parsing systemd's failed ActiveState status
  • [initsystem] Added tests for output parsers
  • [initsystem] Code refactoring
  • [fmtc] Added new methods LPrintf, LPrintln, TLPrintf and TLPrintln
  • [fmtc] Fixed bug with parsing reset and modification tags (found by go-fuzz)
  • [fmtc] Code refactoring
  • [fmtc] Improved work with temporary output (TPrintf, TPrintln)
  • [fsutil] Added method IsReadableByUser for checking read permission for some user
  • [fsutil] Added method IsWritableByUser for checking write permission for some user
  • [fsutil] Added method IsExecutableByUser for checking execution permission for some user
  • [version] Added method Simple() which returns simple version
  • [version] More usage examples added
  • [system] Improved OS version search
  • [tmp] Package refactoring
  • [system] Added method GetCPUInfo for fetching info about CPUs from procfs
  • [fmtutil/table] Added global variable MaxWidth for configuration of maximum table width
  • [system] FSInfo now is FSUsage (incompatible changes)
  • [system] MemInfo now is MemUsage (incompatible changes)
  • [system] CPUInfo now is CPUUsage (incompatible changes)
  • [system] InterfaceInfo now is InterfaceStats (incompatible changes)
  • [system] GetFSInfo() now is GetFSUsage() (incompatible changes)
  • [system] GetMemInfo() now is GetMemUsage() (incompatible changes)
  • [system] GetCPUInfo() now is GetCPUUsage() (incompatible changes)
  • [system] GetInterfacesInfo() now is GetInterfacesStats() (incompatible changes)
  • [initsystem] HasService() now is IsPresent() (incompatible changes)
  • [initsystem] IsServiceWorks() now is IsWorks() (incompatible changes)
  • [system] Fixed bug with parsing CPU stats data (found by go-fuzz)
  • [fmtc] Fixed bug with parsing reset and modification tags (found by go-fuzz)
  • [initsystem] Fixed examples
  • [fmtc] Fixed examples
  • [system] Added fuzz testing
  • [cron] Code refactoring
  • [timeutil] Code refactoring
  • [fmtutil] Increased code coverage (97.9% → 100.0%)
  • [fmtutil/table] Increased code coverage (99.4% → 100.0%)
  • [knf] Increased code coverage (99.6% → 100.0%)
  • [req] Increased code coverage (97.1% → 100.0%)
  • [pid] Increased code coverage (97.4% → 100.0%)
  • [system] Increased code coverage (73.8% → 79.0%)

  • [initsystem] Improved application state checking in systemd
  • [system] Fixed typo in json tag for CPUInfo.Average
  • [system] Improved memory usage calculation
  • [system] Added Shmem and SReclaimable values to MemInfo struct
  • [system] Fixed typo in json tag for MemInfo.SwapCached
  • [system] Improved tests
  • [system/sensors] Added package for collecting sensors data
  • [strutil] Added method Substring for safe substring extraction
  • [strutil] Added method Extract for safe substring extraction
  • [strutil] Fixed tests and example for Substr method
  • [strutil] Improved tests
  • [strutil] Code refactoring
  • [strutil] Optimization and improvements for ReadField method
  • [easing] Code refactoring
  • [fmtutil] Code refactoring
  • [knf] Code refactoring
  • [log] Code refactoring
  • [options] Code refactoring
  • [pid] Code refactoring
  • [req] Code refactoring
  • [sliceutil] Code refactoring
  • [strutil] Code refactoring
  • [system] Code refactoring
  • [terminal] Code refactoring
  • [timeutil] Code refactoring
  • [uuid] Code refactoring
  • [fmtc] Fixed bug with parsing {} and {-} as valid color tags
  • [fmtc] Added fuzz testing
  • [fmtutil/table] Fixed bug with rendering data using not-configured table
  • [sliceutil] Added method Index which return index of given item in slice
  • [fmtutil] Improved size parser
  • [fmtutil] Fixed various bugs with processing NaN values
  • [req] Added constants with status codes
  • [req] Added method String for Query struct for query encoding
  • [log] Added wrapper for compatibility with stdlib logger
  • [log] Fixed race condition issue
  • [usage] Fixed bug with aligning option info with Unicode symbols
  • [options] Guess option type by default value type
  • [options] Added check for unsupported default value type
  • [system/process] Fixed windows stubs
  • [fsutil] Improved CopyDir method
  • [fsutil] Added method CopyDir for recursive directories copying
  • [fsutil] Removed useless method Current
  • [fsutil] Tests refactoring
  • [fsutil] Code refactoring
  • [system/process] Added new type ProcSample as a lightweight analog of ProcInfo for CPU usage calculation
  • [system/process] Code refactoring
  • [system/process] Increased code coverage (75.5% → 82.4%)
  • [system] Code refactoring
  • [fmtutil] Added method PrettyPerc for formatting values in percentages
  • [fmtc] Added methods Print and Sprintln for better compatibility with fmt package
  • [fmtutil/table] Fixed minor bug with output formatting
  • [options] Code refactoring
  • [directio] Added sub-package directio for writing/reading data with using direct IO
  • [fmtc] 256 colors support with new tags (foreground: {#000}, background: {%000})
  • [fmtc] Added method Is256ColorsSupported for checking support of 256 color output
  • [fmtc] Improved color tags syntax
  • [fmtc] Added tags for resetting modificators (e.g. {!*})
  • [fmtc] Removed color tags overriding (i.e. now {*}{r} == {r*})
  • [color] Added method RGB2Term for converting RGB colors to terminal color codes
  • [system] Fixed bug with extra new line symbol in user Shell field
  • [fmtc] Temporary output feature moved from T struct to TPrintf and TPrintln
  • Dependencies now download with initial go get command
  • [options] Fixed bug with using Bound or Conflict fields for options (thx to @gongled)
  • [netutil] Code refactoring
  • [netutil] Increased code coverage (78.8% → 87.9%)
  • [netutil] Improved main IP search
  • [strutil] Added usage example for Copy method
  • [system/procname] Added usage examples
  • [netutil] Ignore TUN/TAP interfaces while searching main IP address
  • [initsystem] Added method IsEnabled which return info about service autostart
  • [initsystem] Method GetServiceState renamed to IsServiceWorks
  • [strutil] Added method Copy for forced copying of strings
  • [strutil] Improved Fields parsing
  • [fmtutil/table] Added method RenderHeaders for forced headers rendering
  • [strutil] Added ellipsis suffix customization
  • [strutil] Added support of custom separators for ReadField
  • [req] Closing response body after parsing data
  • [system] Fixed bug with parsing id command output with empty group names
  • [system] Fixed bug with calculating transferred bytes on active interfaces
  • [system] Improved id and getent commands output parsing
  • [system] Code refactoring
  • [terminal] Fixed bug with empty title output
  • [system] Code refactoring
  • [initsystem] Fixed bug with checking service state in systemd
  • [system] Fixed windows stubs
  • [system] Fixed bug with unclosed file descriptor
  • [initsystem] Fixed bug in SysV service state determination
  • [strutil] Added new method ReadField for reading space/tab separated fields from given data
  • [system] Code refactoring
  • [system] Improved CPU usage calculation
  • [system/process] Code refactoring
  • [system] Code refactoring
  • [knf] Added new validators: NotLen, NotPrefix and NotSuffix
  • [knf] Validators code refactoring
  • [system/process] Fixed bug with parsing CPU data
  • [system/process] Increased code coverage (0.0% → 87.5%)
  • [usage/update] Increased code coverage (0.0% → 80.0%)
  • [system/process] Improved error handling in GetInfo
  • [system] Improved IO utilization calculation
  • [system] Improved network speed calculation
  • [system] Added method GetCPUStats which return basic CPU info from /proc/stat
  • [system] Improved IO utilization calculation
  • [initsystem] Added stubs for windows
  • Code refactoring
  • [system] Improved disk usage calculation (now it similar to df command output)
  • [initsystem] New package for working with different init systems (sysv, upstart, systemd)
  • [fmtc] Improved utf8 support in temporary messages
  • [fmtc] Added method NewT which creates a new struct for working with the temporary output
  • [fmtc] More docs about color tags
  • [knf] Removing trailing spaces from property values
  • [system/procname] Added method Replace which replace just one argument in process command
  • [knf] Added new getters GetU, GetU64 and GetI64
  • [usage] Improved API for NewInfo method
  • [options] Added support of mixed options (string / bool)
  • [terminal] Improved title rendering for ReadAnswer method
  • [terminal] Simplified API for ReadAnswer method
  • [fmtutil] Improved floating numbers formatting with PrettyNum
  • [fmtutil/table] Fixed bug with color tags in headers when colors is disabled
  • [timeutil] Fixed bug with formatting milliseconds
  • [timeutil] Improved tests
  • [terminal] Fixed bug with masking password in tmux
  • [fmtutil/table] Fixed bug with rendering data with color tags
  • [version] Fixed bug with version comparison
  • [version] Added method Int() which return version as integer
  • Package args renamed to options (incompatible changes)
  • [fmtutil/table] Added new package for rendering data as a table
  • [fmtutil] Added support of separator symbol configuration
  • [usage] Improved output about a newer version
  • [usage] Increased code coverage (0.0% → 100%)
  • [usage] Code refactoring

  • [usage] Improved options and commands info rendering
  • Overall documentation improvements
  • [system/process] Fixed windows stubs
  • [system] Package refactoring
  • [fsutil] Fixed checking empty directory on FreeBSD
  • [pid] Fixed checking process state on FreeBSD
  • [system/process] Added method GetMemInfo for obtaining information about memory consumption by process.
  • [system/process] Added method GetInfo which return partial info from /proc/[PID]/stat.
  • [system/process] Added method CalculateCPUUsage which can be used for process CPU usage calculation.
  • [system] Methods for executing commands moved to system/exec package (incompatible changes)
  • [system] Methods for changing process name moved to system/procname package (incompatible changes)
  • [system] Minor improvements
  • [system] Code refactoring
  • [system] Increased code coverage (0.0% → 79.5%)

  • [errutil] Implemented error interface (added method Error() string)
  • [errutil] Minor improvements
  • [system] Fixed windows stubs
  • [fmtutil] Added flag SeparatorFullscreen which enable full size separator
  • [terminal/window] Window size detection code moved from terminal to terminal/window package
  • [terminal/window] Fixed bug with unclosed TTY file descriptor
  • [fsutil] Fixed bug with fsutil.IsLink (method returns true for symlinks)
  • [fsutil] Fixed bug with fsutil.GetSize (method returns 0 for non-existent files)
  • [fsutil] Improved input arguments checks in fsutil.CopyFile
  • [fsutil] Added input arguments checks to fsutil.MoveFile
  • [fsutil] Increased code coverage (49.8% → 97.9%)
  • [knf] Increased code coverage (99.2% → 99.6%)
  • [jsonutil] Increased code coverage (92.3% → 100%)
  • [sortutil] Added methods NatualLess and StringsNatual for natural ordering
  • [jsonutil] Added optional argument to EncodeToFile method with file permissions (0644 by default)
  • [jsonutil] Code refactoring
  • [jsonutil] Improved tests
  • [jsonutil] Added usage examples
  • [knf] Return default value for the property even if config struct is nil
  • [system] Added methods CalculateNetworkSpeed and CalculateIOUtil for metrics calculation without blocking main thread
  • [system] Code and examples refactoring
  • [passwd] Fixed panic in Check for some rare cases
  • [fsutil] Fixed typo
  • [pid] Fixed typo
  • [system] Fixed typo
  • [tmp] Fixed typo
  • [knf] Increased code coverage
  • [version] Fixed bug with version comparison
  • [version] Improved version data storing model
  • [usage] Fixed bug with new application version checking mechanics
  • [fsutil] Fixed windows stubs for compatibility with latest changes
  • [usage] Added interface for different ways to check application updates
  • [usage] Added Github update checker
  • [usage] Moved CommandsColorTag, OptionsColorTag, Breadcrumbs to Info struct (incompatible changes)
  • [fsutil] Now ListingFilter must be passed as value instead of pointer (incompatible changes)
  • [fsutil] Added support of filtering by size for ListingFilter
  • [version] Now Parse return value instead of pointer
  • [cron] Improved expressions parsing
  • [version] Added fuzz testing
  • [cron] Added fuzz testing
  • [knf] Added fuzz testing

  • [usage] Improved working with GitHub API
  • [netutil] Now GetIP return primary IPv4 address
  • [netutil] Added method GetIP6 which return main IPv6 address
  • [usage] Showing info about latest available release on GitHub
  • [knf] Added tabs support in indentation
  • [timeutil] Added new sequences %n (new line symbol) and %K (milliseconds)
  • [timeutil] Code refactoring
  • [passwd] Much secure hash generation (now with sha512, bcrypt, and AES)
  • [system] Improved changing process and arguments names
  • [system/process] Fixed windows stubs

  • [usage] Improved build info output
  • [system] Improved OS version search process
  • [system/process] GetTree now can return tree for custom root process
  • [system/process] Fixed threads marking
  • [fmtutil] Added method CountDigits for counting the number of digits in integer
  • [terminal] Now PrintWarnMessage and PrintErrorMessage prints messages to stderr
  • [usage] Added support for optional arguments in commands
  • [system] Added Distribution and Version info to SystemInfo struct
  • [arg] Added bound arguments support
  • [arg] Added conflicts arguments support
  • [arg] Added method Q for merging several arguments to string (useful for Alias, Bound and Conflicts)
  • [system] Added method CurrentTTY which return path to current tty
  • [system] Code refactoring
  • [fmtc] Fixed bug with parsing tags
  • [usage] Changed color for arguments from dark gray to light gray
  • [usage] Added breadcrumbs output for commands and options
  • [fmtutil] Fixed special symbols colorization in ColorizePassword
  • [fmtutil] Added method ColorizePassword for password colorization
  • [passwd] Improved password generation and strength check
  • [log] Code refactoring
  • [tmp] Added permissions customization for each temp struct
  • [terminal] Added password mask symbol color customization
  • [terminal] go-linenoise updated to v3
  • [req] Improved Engine initialization routine
  • [terminal] Fixed bug in windows stub with error variable name
  • [req] Improved SetUserAgent method for appending subpackages versions
  • [usage] Fixed examples header
  • [req] Fixed major bug with setting method through helper methods
  • [req] Multi-client feature (use req.Engine instead req.Request struct methods)
  • [crypto] Package divided into multiple packages (hash, passwd, uuid)
  • [uuid] Added UUID generation based on SHA-1 hash of namespace UUID and name (version 5)
  • [req] Added different types support for Query
  • [knf] Added NotContains validator which checks if given config property contains any value from given slice
  • [kv] Using values instead pointers
  • [system] Added custom duration support for GetNetworkSpeed and GetIOUtil
  • [version] Improved version parsing
  • [system] More logical RunAsUser arguments naming
  • [terminal] Minor fixes in windows stubs
  • [netutil] Added tests
  • [system] Code refactoring
  • Added usage examples

  • [usage] Using dark gray color for license and copyright
  • [fmtutil] Added global variable SeparatorColorTag for separator color customization
  • [fmtutil] Added global variable SeparatorTitleColorTag for separator title color customization
  • [terminal] Using forked go.linenoise package instead original
  • [terminal] Added hints support from new version of go.linenoise
  • [fmtc] Light colors tag (-) support
  • [usage] Using dark gray color for option values and example description
  • [tmp] Added DefaultDirPerms and DefaultFilePerms global variables for permissions customization
  • [tmp] Improved error handling
  • [strutil] Fixed bug with overflowing int in Tail method
  • [terminal] Improved reading user input
  • [httputil] Added GetRequestAddr, GetRemoteAddr, GetRemoteHost, GetRemotePort methods
  • [usage] Fixed bug with rendering command groups
  • [terminal] Small fixes in windows stubs
  • [system/process] Added new package for getting information about active system processes
  • [terminal] Fixed bug with title formatting in ReadAnswer method
  • [terminal] Fixed bug with title formatting in ReadUI method
  • [req] Added content types constants
  • [knf] Fixed typo in tests
  • [strutil] Removed unreachable code
  • [strutil] Added method Len which returns number of symbols in string
  • [strutil] UTF-8 support for Substr, Tail, Head and Ellipsis methods
  • [strutil] Added some benchmarks to tests
  • [fsutil] Fixed GetPerm stub for Windows
  • [fsutil] Fixed package description
  • [req] RequestTimeout set to 0 (disabled) by default
  • [terminal] Fixed bug with source name file conventions
  • [system] Fixed bug with appending real user info on MacOS X
  • [req] Small fixes in Request struct fields types
  • [req] Lazy transport initialization
  • [req] Added DialTimeout and RequestTimeout variables for timeouts control
  • [system] Removed debug output
  • Added makefile with some helpful commands (fmt, deps, test)
  • Small fixes in docs
  • [sliceutil] Code refactoring
  • [knf] Typo fixed
  • [terminal] Typo fixed
  • Some minor changes
  • [fmtutil] Pluralization moved from fmtutil to separate package pluralize (incompatible changes)
  • [pluralize] Brand new pluralization package with more than 140 languages support
  • [timeutil] Improved PrettyDuration output
  • [system] Now SessionInfo contnains full user info (Info struct) instead username (incompatible changes)
  • [timeutil] Code refactoring
  • [system] Code refactoring
  • [log] Code refactoring
  • [arg] Code refactoring

  • [pid] Added method IsWorks which return true if process with PID from PID file is active
  • [pid] Increased code coverage
  • [terminal] Fixed bugs with Windows stubs
  • [signal] Fixed bugs with Windows stubs
  • [color] New package for working with colors
  • [usage] Added color tags support for description
  • [terminal] Improved reading y/n answers (incompatible changes)
  • [strutil] Added method Fields for "smart" string splitting
  • [system] Methods GetUsername and GetGroupname deprecated
  • [system] Added method GroupList for user struct which returns slice with user groups names
  • [jsonutil] Code refactoring
  • [usage] Code refactoring

  • [signal] Added method Send for sending signal to process
  • [log] Fixed bug with logging empty strings
  • [sortutil] Added method VersionCompare which can be used for custom version sorting
  • [sortutil] Added case insensitive strings sorting
  • [sliceutil] Added Deduplicate method
  • [strutil] Added ReplaceAll method
  • [terminal] method fmtutil.GetTermSize moved to terminal.GetSize
  • [timeutil] Added method ParseDuration which parses duration in 1w2d3h5m6s format
  • [terminal] Custom prompt support
  • [terminal] Custom masking symbols support
  • [terminal] Code refactoring
  • [fsutil] Fixed bug in List method with filtering output
  • [fsutil] Fixed bug with NotPerms filtering
  • [env] Added methods for getting env vars as string, int, and float
  • [usage] Added docs for exported fields in About struct
  • [fsutils] Added fs walker (bash pushd/popd analog)
  • [fsutil] Method ListAbsolute ranamed to ListToAbsolute
  • [errutil] Added method Chain
  • [log] Improved min level changing
  • [fsutil] Fixed major bug with closing file descriptor after directory listing
  • [fsutil] Fixed major bug with closing file descriptor after counting lines in file
  • [fsutil] Fixed major bug with closing file descriptor after checking number of files in directory
  • [fsutil] Improved docs
  • [fsutil] Added method (wrapper) for moving files
  • [path] Added method IsDotfile for checking dotfile names
  • [strutil] Added methods PrefixSize and SuffixSize
  • [fsutil] Improved working with paths
  • [fsutil] Added method ProperPath to windows stub
  • [path] Fixed windows stub
  • [path] Added package for working with paths
  • [knf] Fixed bug in HasProp method which returns true for unset properties
  • [tmp] Improved error handling
  • [tmp] Changed name pattern of temporary files and directories
  • [pid] Fixed bug with PID file creation
  • [pid] Increased coverage
  • [errutil] Added method Num which returns number of errors
  • [errutil] Improved Add method
  • [fsutil] Added method ProperPath which return first proper path from given slice
  • [fsutil] Added partial FreeBSD support
  • [system] Added partial FreeBSD support
  • [log] Some minor fixes in tests
  • [kv] Added package with simple key-value structs
  • [strutil] Fixed bug in Tail method
  • [strutil] Added method Head for subtraction first symbols from the string
  • [strutil] Added method Tail for subtraction last symbols from the string
  • Improved TravisCI build script for support pkg.re
  • Added pkg.re usage
  • [system] Fixed major bug with OS X compatibility
  • [fmtutil] Fixed tests for OS X
  • [req] Added flag for marking connection to close
  • [crypto] Small improvements in hash generation
  • [csv] Increased code coverage
  • [easing] Increased code coverage
  • [fmtc] Increased code coverage
  • [httputil] Increased code coverage
  • [jsonutil] Increased code coverage
  • [pid] Increased code coverage
  • [req] Increased code coverage
  • [req] Increased default timeout to 10 seconds
  • [strutil] Increased code coverage
  • [timeutil] Increased code coverage
  • [log] Now buffered I/O must be enabled manually
  • [log] Auto flushing for bufio
  • [system] Added JSON tags for User, Group and SessionInfo structs
  • [usage] Info now can use os.Args[0] for info rendering
  • [version] Added package for working with version in semver notation
  • [arg] Changed default fail values (int -1 → 0, float -1.0 → 0.0)
  • [arg] Increased code coverage
  • [arg] Many minor fixes
  • [cron] Fixed rare bug
  • [cron] Increased code coverage
  • [crypto] Increased code coverage
  • [easing] Increased code coverage
  • [errutil] Increased code coverage
  • [fmtc] Increased code coverage
  • [fmtutil] Increased code coverage
  • [jsonutil] Increased code coverage
  • [knf] Fixed bug in Reload method for global config
  • [knf] Improved Reload method
  • [knf] Increased code coverage
  • [log] Increased code coverage
  • [mathutil] Increased code coverage
  • [pid] Increased code coverage
  • [rand] Increased code coverage
  • [req] Fixed bug with Accept header
  • [req] Increased code coverage
  • [sliceutil] Increased code coverage
  • [sortutil] Increased code coverage
  • [spellcheck] Increased code coverage
  • [strutil] Increased code coverage
  • [system] Added method system.SetProcName for changing process name
  • [timeutil] Fixed bug in PrettyDuration method
  • [timeutil] Increased code coverage
  • [tmp] Increased code coverage
  • [system] Fixed bug in fs usage calculation
  • [usage] Improved new Info struct creation

Initial public release