diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0ba5a74 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig allows multiple IDE's to use same formatting rules: https://EditorConfig.org +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +charset = utf-8 + +[*.yml] +indent_size = 2 +insert_final_newline = false \ No newline at end of file diff --git a/.github/workflows/dub.yml b/.github/workflows/dub.yml new file mode 100644 index 0000000..692b800 --- /dev/null +++ b/.github/workflows/dub.yml @@ -0,0 +1,159 @@ +name: CI + +# Overall Poodinis should work on a fairly wide variety of D versions. Similar to Vibe.d, the last +# 10 compiler releases should certainly be supported. As GCC supports D version 2.076, this should +# continue to be supported. +# +# While testing I found: +# Ubuntu builds work with D >= 2.072 +# Windows builds work with D >= 2.075 +# Mac builds work with D >= 2.088 + +on: + schedule: + - cron: '45 6 1 * *' + push: + pull_request: + branches: [ main ] + +jobs: + # Make sure the latest versions of dub and ldc work on all platforms + build-latest: + name: ${{ matrix.compiler }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + compiler: + - dmd-latest + - ldc-latest + steps: + - uses: actions/checkout@v2 + + - name: Install D ${{ matrix.compiler }} + uses: dlang-community/setup-dlang@v1 + with: + compiler: ${{ matrix.compiler }} + + - name: Build library + run: dub build --build=release --config=library + + - name: Build unittest + run: dub test --build=unittest --config=unittest + + - name: Build examples + run: | + dub run --build=release --config=quickstartExample + dub run --build=release --config=qualifiersExample + dub run --build=release --config=arrayCompletionExample + dub run --build=release --config=annotationsExample + dub run --build=release --config=applicationContextExample + dub run --build=release --config=registerOnResolveExample + dub run --build=release --config=constructorInjectionExample + dub run --build=release --config=valueInjectionExample + dub run --build=release --config=postConstructorPreDestructorExample + + # Ensure poodinis can build on everything from 2.076 to latest. These builds are Ubuntu only for speed + build-older: + name: ${{ matrix.compiler }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest ] + compiler: + - dmd-latest + - ldc-latest + - dmd-2.096.1 + - dmd-2.095.1 + - dmd-2.094.2 + - dmd-2.093.1 + - dmd-2.092.1 + - dmd-2.091.1 + - dmd-2.090.1 + - dmd-2.089.1 + - dmd-2.088.1 # mac-latest is ok with dmd-2.088 or higher but the ldc versions can be a problem +# - dmd-2.087.1 +# - dmd-2.086.1 +# - dmd-2.085.1 +# - dmd-2.077.1 + - dmd-2.076.1 # gdc (gcc v9 - v11.1) supports D at this version +# - ldc-1.25.1 # eq to dmd v2.095.1 (excluded as this version seemed to be a bad release) + - ldc-1.24.0 # eq to dmd v2.094.1 + - ldc-1.23.0 # eq to dmd v2.093.1 +# - ldc-1.22.0 # eq to dmd v2.092.1 +# - ldc-1.21.0 # eq to dmd v2.091.1 +# - ldc-1.20.1 # eq to dmd v2.090.1 +# - ldc-1.19.0 # eq to dmd v2.089.1 +# - ldc-1.18.0 # eq to dmd v2.088.1 +# - ldc-1.17.0 # eq to dmd v2.087 +# - ldc-1.16.0 # eq to dmd v2.086.1 + - ldc-1.15.0 # eq to dmd v2.085.1 + steps: + - uses: actions/checkout@v2 + + - name: Install D ${{ matrix.compiler }} + uses: dlang-community/setup-dlang@v1 + with: + compiler: ${{ matrix.compiler }} + + - name: Build library + run: dub build --build=release --config=library + + - name: Build unittest + run: dub test --build=unittest --config=unittest + + - name: Build examples + run: | + dub run --build=release --config=quickstartExample + dub run --build=release --config=qualifiersExample + dub run --build=release --config=arrayCompletionExample + dub run --build=release --config=annotationsExample + dub run --build=release --config=applicationContextExample + dub run --build=release --config=registerOnResolveExample + dub run --build=release --config=constructorInjectionExample + dub run --build=release --config=valueInjectionExample + dub run --build=release --config=postConstructorPreDestructorExample + + # On Ubuntu we can use GDC (so keep working for D version 2.076) + gdc-latest: + name: GDC on Ubuntu + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Install DMD (so dub is available) + uses: dlang-community/setup-dlang@v1 + with: + compiler: dmd-latest + + - name: Install GDC + run: | + sudo apt-get update + sudo apt-get install gdc -y + gdc --version + + - name: Build library + env: + DC: gdc + run: dub build --compiler=gdc --build=release --config=library + + - name: Build unittest + env: + DC: gdc + run: dub test --compiler=gdc --build=unittest --config=unittest + + - name: Build examples + env: + DC: gdc + run: | + dub run --compiler=gdc --build=release --config=quickstartExample + dub run --compiler=gdc --build=release --config=qualifiersExample + dub run --compiler=gdc --build=release --config=arrayCompletionExample + dub run --compiler=gdc --build=release --config=annotationsExample + dub run --compiler=gdc --build=release --config=applicationContextExample + dub run --compiler=gdc --build=release --config=registerOnResolveExample + dub run --compiler=gdc --build=release --config=constructorInjectionExample + dub run --compiler=gdc --build=release --config=valueInjectionExample + dub run --compiler=gdc --build=release --config=postConstructorPreDestructorExample \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index bafa297..0000000 --- a/.travis.yml +++ /dev/null @@ -1,55 +0,0 @@ -language: d - -# For available compilers see: https://semitwist.com/travis-d-compilers -d: - - dmd - - dmd-beta - - dmd-2.090.1 - - dmd-2.089.1 - - dmd-2.088.1 - - dmd-2.087.1 - - dmd-2.086.1 - - dmd-2.085.1 - - dmd-2.084.1 - - dmd-2.083.1 - - dmd-2.082.1 - - dmd-2.081.2 - - dmd-2.080.1 - - dmd-2.079.1 - - dmd-2.078.3 - - dmd-2.077.1 - - dmd-2.076.1 - - dmd-2.075.1 - - dmd-2.074.1 - - dmd-2.073.2 - - dmd-2.072.2 - - dmd-2.071.2 - - dmd-2.070.2 - - dmd-2.069.2 - - ldc - - ldc-beta - - gdc - -sudo: false - -os: - - linux - - osx - -script: - - dub build --build=release --config=library - - dub test --build=unittest --config=unittest - - dub run --build=release --config=quickstartExample - - dub run --build=release --config=qualifiersExample - - dub run --build=release --config=arrayCompletionExample - - dub run --build=release --config=annotationsExample - - dub run --build=release --config=applicationContextExample - - dub run --build=release --config=registerOnResolveExample - - dub run --build=release --config=constructorInjectionExample - - dub run --build=release --config=valueInjectionExample - - dub run --build=release --config=postConstructorPreDestructorExample - -matrix: - allow_failures: - - d: gdc - os: osx diff --git a/README.md b/README.md index 92a9064..0356338 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Version 8.1.0-beta.5 Copyright 2014-2021 Mike Bierlee Licensed under the terms of the MIT license - See [LICENSE.txt](LICENSE.txt) -Main: [![Build Status](https://api.travis-ci.org/mbierlee/poodinis.png?branch=main)](https://travis-ci.org/mbierlee/poodinis) - Dev: [![Build Status](https://api.travis-ci.org/mbierlee/poodinis.png?branch=develop)](https://travis-ci.org/mbierlee/poodinis) +[![DUB Package](https://img.shields.io/dub/v/poodinis.svg)](https://code.dlang.org/packages/poodinis) [![CI](https://github.com/mbierlee/poodinis/actions/workflows/dub.yml/badge.svg)](https://github.com/mbierlee/poodinis/actions/workflows/dub.yml) Poodinis is a dependency injection framework for the D programming language. It is inspired by the [Spring Framework] and [Hypodermic] IoC container for C++. Poodinis supports registering and resolving classes either by concrete type or interface. Automatic injection of dependencies is supported through the use of UDAs or constructors.