packages feed

salmon-ops-0.3.0.0: salmon-ops.cabal

cabal-version:      2.4
name:               salmon-ops
version:            0.3.0.0
synopsis:           IO builtins and command line plumbing for Salmon operations.
description:        Builtin operations (files, systemd, debian packages, podman, postgres, wireguard, certificates, ssh, ...) built on salmon-core, plus the shared command line, the long-running serve loop with its HTTP API and web UI.
homepage:           https://lucasdicioccio.github.io/salmon/
bug-reports:        https://github.com/lucasdicioccio/salmon/issues
license:            BSD-3-Clause
license-file:       LICENSE
author:             Lucas DiCioccio
maintainer:         lucas@dicioccio.fr
copyright:          2022-2026 Lucas DiCioccio
category:           Development
build-type:         Simple
tested-with:        GHC == 9.10.3
extra-doc-files:    CHANGELOG.md
extra-source-files:
                    ui/index.html
                    ui/ui.js
                    ui/ui.css
                    ui/auth.html
                    ui/tail-template.js
                    ui/card-template.js
                    ui/vendor/tramaj-js/*.js
                    ui/vendor/tramaj-js/LICENSE
                    ui-test/tail-template.test.mjs
                    ui-test/card-template.test.mjs
                    openapi/serve-api.openapi.json

source-repository head
    type:     git
    location: https://github.com/lucasdicioccio/salmon
    subdir:   salmon-ops

flag http-server
    description: Build @run serve@'s HTTP surface (@--http@, @--http-tcp@,
                 the web UI, "Salmon.Actions.Serve.Http"), and with it warp,
                 warp-tls and wai. Turn it off (@constraints: salmon-ops
                 -http-server@) for a binary that never serves HTTP; @serve@
                 over standard input and @--listen@, pull mode and the
                 status sink stay.
    default:     True
    manual:      True

library
    exposed-modules: Salmon.Actions.Concurrent
                   , Salmon.Actions.Follow
                   , Salmon.Actions.Follow.Registry
                   , Salmon.Actions.Follow.Registry.Dns
                   , Salmon.Actions.Follow.Registry.Git
                   , Salmon.Actions.Follow.Registry.Http
                   , Salmon.Actions.Follow.Scheduler
                   , Salmon.Actions.Follow.Signature
                   , Salmon.Actions.Help
                   , Salmon.Actions.Serve
                   , Salmon.Actions.Serve.Events
                   , Salmon.Actions.Serve.HttpBind
                   , Salmon.Actions.Serve.Socket
                   , Salmon.Actions.Serve.StatusSink
                   , Salmon.Actions.Fleet
                   , Salmon.Actions.UpDown
                   , Salmon.Actions.Upkeep
                   , Salmon.Actions.Dot
                   , Salmon.Actions.Query
                   , Salmon.Client.Http
                   , Salmon.Client.Model
                   , Salmon.Builtin.Extension
                   , Salmon.Builtin.Cards
                   , Salmon.Builtin.Cards.Gcp
                   , Salmon.Builtin.Cards.Keys
                   , Salmon.Builtin.Cards.Patroni
                   , Salmon.Builtin.Cards.Postgres
                   , Salmon.Builtin.Guarded
                   , Salmon.Builtin.CommandLine
                   , Salmon.Builtin.Helpers
                   , Salmon.Builtin.Migrations
                   , Salmon.Builtin.Nodes.Bash
                   , Salmon.Builtin.NodeLog
                   , Salmon.Builtin.Nodes.Binary
                   , Salmon.Builtin.Nodes.Cabal
                   , Salmon.Builtin.Nodes.Daemon
                   , Salmon.Builtin.Nodes.Detached
                   , Salmon.Builtin.Nodes.Capabilities
                   , Salmon.Builtin.Nodes.Certificates
                   , Salmon.Builtin.Nodes.Continuation
                   , Salmon.Builtin.Nodes.CronTask
                   , Salmon.Builtin.Nodes.Debian.Debootstrap
                   , Salmon.Builtin.Nodes.Debian.AptRepository
                   , Salmon.Builtin.Nodes.Debian.Package
                   , Salmon.Builtin.Nodes.Debian.OS
                   , Salmon.Builtin.Nodes.Demo
                   , Salmon.Builtin.Nodes.Gcp.ArtifactRegistry
                   , Salmon.Builtin.Nodes.Gcp.Billing
                   , Salmon.Builtin.Nodes.Gcp.CloudDns
                   , Salmon.Builtin.Nodes.Gcp.CloudRun
                   , Salmon.Builtin.Nodes.Gcp.Compute
                   , Salmon.Builtin.Nodes.Gcp.Core
                   , Salmon.Builtin.Nodes.Gcp.Iam
                   , Salmon.Builtin.Nodes.Gcp.LoadBalancing
                   , Salmon.Builtin.Nodes.Gcp.Monitoring
                   , Salmon.Builtin.Nodes.Gcp.ResourceManager
                   , Salmon.Builtin.Nodes.Gcp.SecretManager
                   , Salmon.Builtin.Nodes.Gcp.ServiceUsage
                   , Salmon.Builtin.Nodes.Gcp.SshAccess
                   , Salmon.Builtin.Nodes.Gcp.Storage
                   , Salmon.Builtin.Nodes.Filesystem
                   , Salmon.Builtin.Nodes.Git
                   , Salmon.Builtin.Nodes.User
                   , Salmon.Builtin.Nodes.Keys
                   , Salmon.Builtin.Nodes.Deferred
                   , Salmon.Builtin.Nodes.LinuxBridge
                   , Salmon.Builtin.Nodes.Netfilter
                   , Salmon.Builtin.Nodes.Netbird
                   , Salmon.Builtin.Nodes.Nginx
                   , Salmon.Builtin.Nodes.Npm
                   , Salmon.Builtin.Nodes.PgBouncer
                   , Salmon.Builtin.Nodes.Haproxy
                   , Salmon.Builtin.Nodes.PortMapping
                   , Salmon.Builtin.Nodes.PortMapping.Upnpc
                   , Salmon.Builtin.Nodes.Etcd
                   , Salmon.Builtin.Nodes.Patroni
                   , Salmon.Builtin.Nodes.Patroni.PreferredLeader
                   , Salmon.Builtin.Nodes.Patroni.RollingMaintenance
                   , Salmon.Builtin.Nodes.PgBackRest
                   , Salmon.Builtin.Nodes.Postgres
                   , Salmon.Builtin.Nodes.Postgres.Logical
                   , Salmon.Builtin.Nodes.PeerDB
                   , Salmon.Builtin.Nodes.ClickHouse
                   , Salmon.Builtin.Nodes.ClipCpp
                   , Salmon.Builtin.Nodes.LlamaServer
                   , Salmon.Builtin.Nodes.PgVector
                   , Salmon.Builtin.Nodes.PgTextSearch
                   , Salmon.Builtin.Nodes.Plakar
                   , Salmon.Builtin.Nodes.Podman
                   , Salmon.Builtin.Nodes.Podman.Quadlet
                   , Salmon.Builtin.Nodes.Qemu
                   , Salmon.Builtin.Nodes.Readiness
                   , Salmon.Builtin.Nodes.Rsync
                   , Salmon.Builtin.Nodes.Routes
                   , Salmon.Builtin.Nodes.Self
                   , Salmon.Builtin.Nodes.SecretDelivery
                   , Salmon.Builtin.Nodes.Secrets
                   , Salmon.Builtin.Nodes.Spago
                   , Salmon.Builtin.Nodes.Ssh
                   , Salmon.Builtin.Nodes.Sysctl
                   , Salmon.Builtin.Nodes.Systemd
                   , Salmon.Builtin.Nodes.Systemd.Job
                   , Salmon.Builtin.Nodes.Tar
                   , Salmon.Builtin.Nodes.Upx
                   , Salmon.Builtin.Nodes.Web
                   , Salmon.Builtin.Nodes.WireGuard
                   , Salmon.Op.CardTemplate
                   , Salmon.Op.Concurrency
                   , Salmon.Op.Dag
                   , Salmon.Op.Guard
                   , Salmon.Op.Ledger
                   , Salmon.Op.Mailbox
                   , Salmon.Op.Rewrite
                   , Salmon.Op.Status
                   , Salmon.Op.Supervision
                   , Salmon.Op.Window
                   , Salmon.Op.Configure
                   , Salmon.Op.Ref
                   , Salmon.Reporter
                   , Salmon.Reporter.Tagged
                   , Salmon.Reporter.UpDownText
    build-depends:    base >=4.16.3.0 && <4.22
                    , array ^>=0.5.8.0
                    , async ^>=2.2.6
                    , aeson ^>=2.3.2.0
                    , base64-bytestring ^>=1.2.1.0
                    , bytestring ^>=0.12.2.0
                    , containers ^>=0.7
                    , contravariant ^>=1.5.6
                    , crypton ^>=2.2.5
                    , crypton-connection ^>=0.4.6
                    , crypton-x509-store ^>=1.10.0
                    , cryptohash-sha256 ^>=0.11.102.1
                    , directory ^>=1.3.8.5
                    , file-embed ^>=0.0.16.0
                    , filepath ^>=1.5.4.0
                    , free ^>=5.2
                    , hashable ^>=1.5.1.0
                    , http-client ^>=0.7.19
                    , http-client-tls ^>=0.4.0
                    , http-types ^>=0.12.6
                    , jose ^>=0.13
                    , mtl ^>=2.3.1
                    , network ^>=3.2.9.0
                    , optparse-applicative ^>=0.19.0.0
                    , optparse-generic ^>=1.5.3
                    , process ^>=1.6.26.1
                    , process-extras ^>=0.7.4
                    , salmon-core ^>=0.1.0.0
                    , stm ^>=2.5.3.1
                    , text ^>=2.1.3
                    , time ^>=1.12.2
                    , unix ^>=2.8.7.0
                    , tls ^>=2.4.12
    hs-source-dirs:   src
    if flag(http-server)
        exposed-modules: Salmon.Actions.Serve.Http
        build-depends:   wai ^>=3.2.5
                       , warp ^>=3.4.16
                       , warp-tls ^>=3.4.14
        cpp-options:     -DSALMON_HTTP_SERVER
    else
        other-modules:   Salmon.Actions.Serve.NoHttp
        hs-source-dirs:  src-no-http-server
    default-language: Haskell2010
    default-extensions: KindSignatures
                      , DataKinds
                      , OverloadedStrings
                      , DeriveFunctor
                      , OverloadedRecordDot
                      , TypeApplications
                      , ScopedTypeVariables

executable salmon-ops-dot-fixture
    main-is:          DotFixture.hs
    hs-source-dirs:   fixtures
    build-depends:    base >=4.16.3.0 && <4.22
                    , mtl ^>=2.3.1
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.3.0.0
                    , text ^>=2.1.3
    -- every salmon binary can end up running the concurrent driver (`run
    -- serve` does), and a node's own thread must not block the whole runtime.
    ghc-options:      -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
                      , OverloadedRecordDot
                      , ScopedTypeVariables

executable salmon-postgres-replication-fixture
    main-is:          PostgresReplicationFixture.hs
    hs-source-dirs:   fixtures
    build-depends:    base >=4.16.3.0 && <4.22
                    , mtl ^>=2.3.1
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.3.0.0
                    , text ^>=2.1.3
    -- every salmon binary can end up running the concurrent driver (`run
    -- serve` does), and a node's own thread must not block the whole runtime.
    ghc-options:      -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
                      , OverloadedRecordDot
                      , ScopedTypeVariables

executable salmon-qemu-host-setup-fixture
    main-is:          QemuHostSetupFixture.hs
    hs-source-dirs:   fixtures
    build-depends:    base >=4.16.3.0 && <4.22
                    , directory ^>=1.3.8.5
                    , mtl ^>=2.3.1
                    , filepath ^>=1.5.4.0
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.3.0.0
                    , text ^>=2.1.3
    -- every salmon binary can end up running the concurrent driver (`run
    -- serve` does), and a node's own thread must not block the whole runtime.
    ghc-options:      -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
                      , OverloadedRecordDot
                      , ScopedTypeVariables

executable salmon-qemu-smoke-rootfs-fixture
    main-is:          QemuSmokeRootfsFixture.hs
    hs-source-dirs:   fixtures
    build-depends:    base >=4.16.3.0 && <4.22
                    , directory ^>=1.3.8.5
                    , mtl ^>=2.3.1
                    , filepath ^>=1.5.4.0
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.3.0.0
                    , text ^>=2.1.3
    ghc-options:      -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
                      , OverloadedRecordDot
                      , ScopedTypeVariables

executable salmon-ops-serve-fixture
    main-is:          ServeFixture.hs
    hs-source-dirs:   fixtures
    build-depends:    base >=4.16.3.0 && <4.22
                    , aeson ^>=2.3.2.0
                    , directory ^>=1.3.8.5
                    , filepath ^>=1.5.4.0
                    , optparse-applicative ^>=0.19.0.0
                    , optparse-generic ^>=1.5.3
                    , process ^>=1.6.26.1
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.3.0.0
                    , text ^>=2.1.3
    -- every salmon binary can end up running the concurrent driver (`run
    -- serve` does), and a node's own thread must not block the whole runtime.
    ghc-options:      -threaded
    default-language: Haskell2010
    default-extensions: OverloadedStrings
                      , OverloadedRecordDot
                      , ScopedTypeVariables