diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..bb13dae --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use devenv diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 5a91f76..ccf2a26 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -6,8 +6,7 @@ - Build and test Haskell code - [Draft](draft.yml) - Create a GH draft release with a static binary -- [Release](release.yml) - - Upload the package and docs to Hackage (release candidate) + ## Events diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 3f33363..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Release -on: - push: - branches: - - main -jobs: - release: - name: "Release" - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - # Workaround for issue: https://github.com/cycjimmy/semantic-release-action/issues/159 - # Had to pin to version 14 - - name: "Pin node version" - uses: actions/setup-node@v2 - with: - node-version: '14' - # Use haskell environment to run cabal configure needed for semantic-release-hackage - - name: Setup Haskell - id: setup-haskell-cabal - uses: haskell-actions/setup@v2 - with: - ghc-version: "9.0" - cabal-version: "3.8" - - name: Semantic Release - run: cabal configure --enable-tests - - name: Semantic Release - uses: cycjimmy/semantic-release-action@v4 - with: - extra_plugins: | - @semantic-release/commit-analyzer - @semantic-release/release-notes-generator - @semantic-release/github - semantic-release-hackage@1.1.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HACKAGE_TOKEN: ${{ secrets.HACKAGE_TOKEN }} diff --git a/.gitignore b/.gitignore index 80ea13d..241a9fc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,6 @@ cabal.config *.hp .stack-work/ .env +.direnv/ +.devenv/ dist-newstyle/ diff --git a/.releaserc b/.releaserc deleted file mode 100644 index b5bfc69..0000000 --- a/.releaserc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/semantic-release", - "branches": ["main"], - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - [ - "semantic-release-hackage", - { - "packageName": "dotenv", - "versionPrefix": "0.", - "publishDocumentation": true - } - ], - "@semantic-release/github" - ], - "tagFormat": "v0.${version}" -} diff --git a/README.md b/README.md index c3c4496..dde2c66 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,31 @@ also install the library and executable by invoking `stack install dotenv` or you can download the dotenv binaries from our [releases](https://github.com/stackbuilders/dotenv-hs/releases) page. +## Development with devenv + +This project includes a [devenv](https://devenv.sh/) setup for reproducible +local development. + +1. Install Nix and devenv. +2. From the project root, run: + +```shell +direnv allow +``` + +Or, if you are not using direnv: + +```shell +devenv shell +``` + +Inside the shell you can use the normal project commands, for example: + +```shell +cabal build +cabal test +``` + ## Usage Set configuration variables in a file following the format below: diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..58b16f0 --- /dev/null +++ b/devenv.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1785352168, + "narHash": "sha256-m/9I5Ai3+wbJuKXtwwaFLG+4Db7Pg2EUYP3ZGLsA7xU=", + "owner": "cachix", + "repo": "devenv", + "rev": "bf3fde552a27d5e41c52c0fcfbf258e396c995bb", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "nixpkgs": { + "inputs": { + "nixpkgs-src": "nixpkgs-src" + }, + "locked": { + "lastModified": 1785104946, + "narHash": "sha256-VLSslwCjlsICjyaUfrS7lGMypmO03fzmDAqhD85Ae84=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "c946ff36bf193309589932c371bd5ae6653c912e", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs-src": { + "flake": false, + "locked": { + "lastModified": 1784783405, + "narHash": "sha256-4IHyyLgLBdKefkljdKod4IMn023pQiDXAWJA187cmdY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7525d999cd850b9a488817abc89c75dc733acf17", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} \ No newline at end of file diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..567ddff --- /dev/null +++ b/devenv.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + # https://devenv.sh/reference/options/ + packages = with pkgs; [ + cabal-install + ghc + haskell-language-server + hlint + ormolu + stack + zlib + ]; + + enterShell = '' + echo "dotenv-hs dev environment loaded" + echo "Try: cabal build && cabal test" + ''; + + languages.haskell.enable = true; +} diff --git a/dotenv.cabal b/dotenv.cabal index d07697a..1232a7e 100644 --- a/dotenv.cabal +++ b/dotenv.cabal @@ -1,5 +1,5 @@ name: dotenv -version: 0.0.0.0 +version: 0.12.0.0 synopsis: Loads environment variables from dotenv files homepage: https://github.com/stackbuilders/dotenv-hs description: