Skip to content

Releases: heckj/formic

0.3.0

26 Feb 19:36
Compare
Choose a tag to compare

This release cleans up awkward API that's been in place since inception, avoiding conflicts with Foundation.Host and cleaning up logging output, which has become the primary flow for details in a side-band during execution in the engine. Everything is still imperative, and some updates have been made to allow for declarative structures, but the details aren't yet fixed in that respect from use, so expect there could easily be further changes in that API down the road, based on learning from attempted use.

I briefly added in CitadelSSH as an alternative command invocation process, but ran into compilation problems in some scenarios where I was pushing Swift code and compiling it on a remote machine for further invocation from a bastion host, so the code is in place, but unavailable unless Citadel is already imported.

What's Changed

  • [docs] adding more internal notes about the APIs and how things work by @heckj in #88
  • radically updating the API to resolve issues hit while developing with it by @heckj in #89
  • improving output to show time required to execute a command by @heckj in #90
  • Shelve citadel by @heckj in #91
  • Log cleanup by @heckj in #92
  • tweak logging output to include host by @heckj in #93

Full Changelog: 0.2.0...0.3.0

0.2.0

15 Feb 23:32
Compare
Choose a tag to compare

What's Changed

  • Follow up by @heckj in #39
  • Cmd protocol by @heckj in #40
  • remove print from test execution by @heckj in #41
  • making direct run on engine discardableResult by @heckj in #46
  • rework LocalProcess into different commands by @heckj in #47
  • simplifying the whole backoff thing after I overcomplicated it by @heckj in #49
  • extends CommandOutput with some useful static constructors by @heckj in #52
  • Addijitter by @heckj in #51
  • enabling a general command by @heckj in #53
  • Reflection by @heckj in #54
  • Resource updates by @heckj in #55
  • removing playbook and merging it into Engine directly by @heckj in #60
  • breaking up resource from requiring a command defined on it by @heckj in #61
  • reorg engine arguments to make it easier to make a playbook like setup by @heckj in #62
  • swarm join command parsing by @heckj in #65
  • makes parser initializer public for ext access by @heckj in #66
  • adding chdir to ShellCommand, revising CopyFrom arguments by @heckj in #69
  • add chdir to single-string version of ShellCommand by @heckj in #70
  • working commands to be a single string invoked remotely by @heckj in #71
  • pipe through debug on output execution by @heckj in #72
  • Work by @heckj in #73
  • shifting exception capture to allow for retry by @heckj in #74
  • fixing and testing verifyAccess logic by @heckj in #75
  • disable timeout execution capability by @heckj in #77
  • re-enable remote TTY request by @heckj in #78
  • trying without a space by @heckj in #79
  • thread a Logger (swift-log) through the API instead of printing output for CLI consumption by @heckj in #80
  • Citadel for remote SSH commands by @heckj in #81
  • setup for functional testing by @heckj in #82
  • Hang debug by @heckj in #83
  • tweaking output to display results 'in progress' at info level by @heckj in #84
  • disables the process linking between the process ID forked and the ex… by @heckj in #86
  • switch to invoking commands using 'sh -c' over 'env' by @heckj in #87
  • CitadelSSH specific Command by @heckj in #85

Full Changelog: 0.1.0...0.2.0

0.1.0

14 Dec 02:27
Compare
Choose a tag to compare

Initial Release

The idea is a library to help assembling IT automation tasks as CLI executables - likely leveraging swift-argument-parser, or potentially included in development tools to ease deployments. This takes a great deal of inspiration from the SRE tool Ansible, but leaning into the type-safety of Swift while assembling playbooks.

This initial version uses Foundation's Process (the old, closed-source version), with an eye towards switching to Subprocess when it's part of FoundationEssentials, or potentially using other libraries (Joannis' Citadel, for remote SSH command invocations).

Right now the API is focused on imperative playbooks of commands, local or remote, with remote invoked over SSH. The stubs of the API are in place for declarative structures, but until the API is used a bit, I won't feel confident in its current shape and choices.

I'm creating this to share, in case someone else is looking for something akin - but it's not a set of tooling that I'd expect your general SRE/Operations staff member to want to pick up.