codeberg-cli 0.5.5

CLI Tool for codeberg similar to gh and glab
Documentation
{ inputs, ... }:
let
  sharedLib = inputs.self.sharedLib;
in
{
  perSystem =
    {
      self',
      lib,
      pkgs,
      ...
    }:
    let
      tapeTestLib = inputs.self.tapeTestLib { inherit self' lib pkgs; };
    in
    {
      checks =
        let
          releaseSetup =
            tagName:
            [
              "berg auth login --token TOKEN"
              "berg --non-interactive repo create --name ${sharedLib.repo} --default-branch ${sharedLib.main}"
              "berg repo clone ${sharedLib.user}/${sharedLib.repo}"
              "cd ${sharedLib.repo}"
              "git checkout -b ${sharedLib.main}"
              "echo 'Hello, World!' > hello.txt"
              "git add -A"
              "git commit -m 'Hello, World!' "
              "git push origin ${sharedLib.main}"
            ]
            ++ (lib.optionals (tagName != null) [
              "git tag ${tagName}"
              "git push --tags"
            ]);
        in
        tapeTestLib.embeddInFlake {
          releaseCreateNoTags = {
            extraSetup = releaseSetup null;
            exec = [
              ''Type "berg release create"''
              "Enter"
              "Sleep 5s"
            ];
          };
          releaseCreateVersion = {
            extraSetup = releaseSetup "v1.0.0";
            exec = [
              ''Type "berg release create"''
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Sleep 5s"
            ];
          };
          releaseCreateNonVersion = {
            extraSetup = releaseSetup "firstRelease";
            exec = [
              ''Type "berg release create"''
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Sleep 5s"
            ];
          };
          releaseCreateMixedVersions = {
            extraSetup = (releaseSetup "firstRelease") ++ [
              "git tag v1.0.0"
              "git push --tags"
              "Sleep 500ms"
            ];
            exec = [
              ''Type "berg release create"''
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Sleep 5s"
            ];
          };
          releaseCreateAllCLIOptionsSet = {
            extraSetup = releaseSetup "v1.0.0";
            exec = [
              ''Type "berg release create --description 'foo' --name 'bar'"''
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Enter"
              "Sleep 500ms"
              "Sleep 5s"
            ];
          };
        };
    };
}