packages feed

salmon-ops-0.2.0.0: salmon-ops.cabal

cabal-version:      2.4
name:               salmon-ops
version:            0.2.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.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
                    , async
                    , aeson
                    , base64-bytestring
                    , bytestring
                    , containers
                    , contravariant
                    , crypton
                    , crypton-connection
                    , crypton-x509-store
                    , cryptohash-sha256
                    , directory
                    , file-embed
                    , filepath
                    , free
                    , hashable
                    , http-client
                    , http-client-tls
                    , http-types
                    , jose
                    , mtl
                    , network
                    , optparse-applicative
                    , optparse-generic
                    , process
                    , process-extras
                    , salmon-core ^>=0.1.0.0
                    , stm
                    , text
                    , time
                    , unix
                    , tls
    hs-source-dirs:   src
    if flag(http-server)
        exposed-modules: Salmon.Actions.Serve.Http
        build-depends:   wai
                       , warp
                       , warp-tls
        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
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.2.0.0
                    , text
    -- 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
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.2.0.0
                    , text
    -- 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
                    , mtl
                    , filepath
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.2.0.0
                    , text
    -- 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
                    , mtl
                    , filepath
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.2.0.0
                    , text
    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
                    , directory
                    , filepath
                    , optparse-applicative
                    , optparse-generic
                    , process
                    , salmon-core ^>=0.1.0.0
                    , salmon-ops ^>=0.2.0.0
                    , text
    -- 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