Skip to content

Commit

Permalink
Read fix and release action added
Browse files Browse the repository at this point in the history
  • Loading branch information
abbyssoul committed Mar 16, 2020
1 parent 683a5f1 commit 01dfc84
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 35 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/conan-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build conan package

on:
push:
tags:
- 'x*'

jobs:
build:
strategy:
matrix:
# TODO: -- windows-latest
os: [ubuntu-latest, macOS-latest]

runs-on: ${{ matrix.os }}
env:
CONAN_USERNAME: "abbyssoul"
CONAN_LOGIN_USERNAME: "abbyssoul"
CONAN_CHANNEL: "stable"
CONAN_UPLOAD: "https://api.bintray.com/conan/abbyssoul/public-conan"
#CONAN_STABLE_BRANCH_PATTERN: "release/*"
CONAN_APPLE_CLANG_VERSIONS: "11.0"
CONAN_VISUAL_VERSIONS: ${{ matrix.vs-version }}
CONAN_GCC_VERSIONS: ${{ matrix.gcc-version }}
# CONAN_GCC_VERSIONS=7
# CONAN_DOCKER_IMAGE=conanio/gcc7
# CONAN_ARCHS="x86_64"

steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v1
with:
python-version: '3.7'
- run: |
python -m pip install conan conan_package_tools -U
conan profile new default --detect
- name: Generating conan user directory
run: conan user
- name: Get current tag:
run: echo ${{ github.ref }}
- name: Set ref version
run: echo $CONAN_REFERENCE
- name: Describe
run: git describe --tags
- name: Show ref/tag
run: echo $GITHUB_REF

- name: Building the package
#run: python build.py
22 changes: 11 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# Contributing

Thank you so much for your interest in contributing!
Thank you for your interest in contributing!
This project is in active development and all contributions are welcomed.

There are multiple ways you can help. For example you can [Submit a patch](#submitting-patch) or you can [Contribute documentation](#submitting-docs). If you have encountered an issue while using the library in your project please [Report errors or bugs](#reporting-bugs) to help us fix the issue. If you feel that this library is misssing something feel free to [Request a feature/improvement](#requesting-feature) - it might be that other people can benefit from this feature.
There are multiple ways you can help. For example you can [Submit a patch](#submitting-patch) or you can [Contribute documentation](#submitting-docs). If you have encountered an issue while using the library in your project please [Report errors or bugs](#reporting-bugs) to help us fix the issue. If you feel that this library is missing something, feel free to [Request a feature/improvement](#requesting-feature) - it might be that other people can benefit from this feature too.

## Submit a patch
If you want to fix an issue or add a feature - code contribution is the best way to do it. Easiest way to submit a patch is by raising a pull request (PR):

* Clone the project.
* Clone the project (`git clone git@github.com:abbyssoul/libsolace.git`)
* Make any necessary changes to the source code. Please see [coding convention](docs/coding_convention.md) about code style.
* Include any [additional documentation](#contribute-documentation) the changes might be needed.
* When adding new feature it is essential to write tests that verify that your contribution works as expected.
* When fixing exising issues it is essential to update existing tests accordingly.
* All code changes are subject to automatic code quality checks run as part of CI. Code changes can not be accepted if they fail quality check so please make sure this checks pass by run `make codecheck` locally before submitting.
* Include any [additional documentation](#contribute-documentation) for changes as need.
* When adding new feature it is essential to write extra tests that verify that the feature works as intended.
* When fixing existing issues it is essential to update existing tests to make sure that issues remains solved and won't be re-introduced in the future.
* All code changes are subject to automatic code quality checks run as part of CI. Code changes can not be accepted if they fail quality checks. You can make sure this checks pass by runing `make codecheck` locally before raising a pull request.
* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md).
* Go to https://github.com/abbyssoul/libsolace/pulls and open a new pull request with your changes.
* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing.

### Testing
This project is commited to maintaining higest level of code quality. That is why any new feature submitted must be covered by expensive unit tests and pass code quality checks.
For fixes it is natural that existing test coverage was not sufficent to vet it. Thus it is expected that exising tests will be extended to cover issue being fixed when ever possible. This helps to avoid re-occurance of the issue as code changes over time.
This project is committed to maintaining highest level of code quality. That is why any new feature submitted must be covered by expensive unit tests and pass code quality checks.
For fixes it is natural that existing test coverage was not sufficient to vet it. Thus it is expected that existing test suite be extended to cover issue being fixed when ever possible. This helps to avoid re-occurrence of the issue as code changes over time.


## Reporting errors or bugs
Expand All @@ -32,7 +32,7 @@ If you think you run into an error or bug with the project please let us know. I


## Request a feature/improvement
If the project doesn't do something you need or want it to do you can create a feature request. It is possible that there are othere users who need the same functions. To request a feature:
If the project doesn't do something you need or want it to do you can create a feature request. It is possible that there are other users who need the same functions. To request a feature:

* Open an Issue at https://github.com/abbyssoul/libsolace/issues
* Provide as much context as you can about what you're running into.
Expand All @@ -44,7 +44,7 @@ Documentation is essential part of any project. To contribute documentation:
* Clone the project.
* Edit or add any relevant documentation.
* Make sure your changes are formatted correctly and consistently with the rest of the documentation.
* Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything.
* Re-read what you wrote, and run a spell-checker on it to make sure you didn't miss anything.
* Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(<component>): <message>`.
* Go to https://github.com/abbyssoul/libsolace/pulls and open a new pull request with your changes.
* If your PR is connected to an open issue, add a line in your PR's description that says `Fixes: #123`, where `#123` is the number of the issue you're fixing.
51 changes: 27 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ This library needs to be installed on your system in order to be used. There are
The library is available via [Conan](https://conan.io/) package manager. Add this to your project `conanfile.txt`:
```
[requires]
libsolace/0.3.6
libsolace/0.3.9
```

Please check the latest available [binary version][conan-central-latest].
Expand All @@ -67,8 +67,8 @@ The project build is managed via CMake with a Makefile provided to automate some

### Build tool dependencies
In order to build this project, following tools must be present in the system:
* git (to check out the project and external modules, see dependencies section)
* cmake (version 3.0 and above)
* git (to check out this project)
* cmake (version 3.12 and above)
* doxygen (for documentation generation)
* cppcheck (static code analysis, the latest version from git is used as part of the 'codecheck' build step)
* cpplint (for static code analysis in addition to cppcheck)
Expand All @@ -78,28 +78,22 @@ This project is using **C++17** features extensively. The minimal tested/require
CI is using clang-5 and gcc-7.
To install build tools on Debian based Linux distribution:
```shell
sudo apt-get update -qq
sudo apt-get install cmake doxygen python-pip valgrind ggcov
sudo pip install cpplint
sudo apt update -qq
sudo apt install cmake doxygen python-pip valgrind ggcov
python3 -m pip install cpplint conan -U
conan profile new default --detect
```

The one external dependency is on [googletest](http://github.com/googletest/) - a unit testing framework.
It is managed as `git submodule`. Please make sure to use `git clone --recursive` when cloning the project for the first time.
You can also update an existing clone with:
```sh
git submodule update --init --recursive
```
If you have an existing checkout that you need to initialize to use submodules:
```sh
git submodule init
```

The only external dependency is on [googletest](http://github.com/googletest/) - a unit testing framework used for development.


## Building the project
Current build system used for the project is `cmake`.
Please make sure that the system has `cmake` installed. Minimal confirmed version is 3.0
```sh
> cmake --version
cmake version 3.0.1
cmake version 3.12.1
```

```shell
Expand All @@ -115,6 +109,7 @@ make test

# To run Valgrind on test suit:
# Note: `valgrind` does not work with `./configure --enable-sanitize` option
# Configure as: `./configure --enable-debug --disable-sanitize`
make verify
```

Expand Down Expand Up @@ -152,22 +147,30 @@ The library is designed with the following platforms in mind:


## Design
The design of the library is inspired by various functional language elements that can be found in other languages such as Rust and Java.
Main goal of design for this library is to make declarative programming in C++ easy.
As a result a number of similir data structures provided are inspired by othre functional languages.
So some of the concepts and types might fill familiar if you have previous experience with Rust, Java, Python etc.
- Fixed-size integral types:
- Fix sized integral types:
- int{8,16,32}
- uint{8,16,32}
- float{32,64}
- OOP Memory management interface:
- MemoryView – a OOP way of dealing with raw memory that knows its size and has associated destructor.
- Memory management interface:
- MemoryManager – a custom memory allocator that can be locked to control memory allocation after initialization.
- Immutable String (for those who are from Java land) with StringBuilder.
- Optional<> - optional monad.
- Result<> - Either monad. A good alternative to throwing an exception.
- Result<> - Either monad. An alternative approach to error handling instead of throwing exceptions.
- Fixed-size collections:
- ArrayView: a memory view as a collection of objects.
- Array: Fixed-size array (dynamically allocated on the heap)
- ArrayBuilder: variable-length collection
- Vector: A collection to hold up-to given number of elements. No re-allocation performed if limit is reached.
- Views to different data structures. Views don't own underlying resources and must be used with care as to not to exceed
lifetime of the object being viewed. Views are designed to be "lightweight" many views can exist for same resource.
It is also convenient for slicing of a resource. It is preferable to pass views by value.
- ArrayView: a memory view as a collection of objects.
- MemoryView – a OOP way of dealing with raw memory that knows its size and has associated destructor.
- StringView - non-owning "string" consisting of pointer and an integer representing length of the string.

- ArrayBuilder: variable-length collection
- Text utilities:
- Formatting
- Encoding
Expand All @@ -184,7 +187,7 @@ Given the language of choice, the library is designed with the idea that excepti


## Dependencies
The project's external dependency managed via `git submodule`:
The project has no dependencies other then unit testing framework.
* [GTest](https://github.com/google/googletest) - Google's C++ test framework


Expand Down

0 comments on commit 01dfc84

Please sign in to comment.