Skip to content

Commit

Permalink
feat: generate a library and diagrams
Browse files Browse the repository at this point in the history
  • Loading branch information
tmorin committed Jun 10, 2021
1 parent e1a57bd commit c6dc1c0
Show file tree
Hide file tree
Showing 98 changed files with 8,939 additions and 105 deletions.
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.*
scripts/
target/
test/
7 changes: 7 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Contribution guide

We appreciate your thought to contribute to open source. :heart:

For little fixes or improvements, feel free to submit pull requests with commit messages respecting the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/).

For the other changes, feel free to fill a [GitHub Issue](https://github.com/tmorin/plantuml-generator/issues) first.
12 changes: 12 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: thibault.morin
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
228 changes: 228 additions & 0 deletions .github/workflows/Continuous-Integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
name: Continuous-Integration

on: [ push, pull_request ]

jobs:

Lint:
name: Lint
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: "Cache cargo stuff"
uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-lint-${{ hashFiles('**/Cargo.lock') }}
- name: "Install the toolchain"
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: clippy
- name: "Check with clippy"
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings

Test:
name: Test
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: "Install dependencies"
run: |
sudo apt-get install pkg-config libssl-dev openjdk-11-jre graphviz
sudo snap install inkscape
shell: bash
- name: "Cache cargo stuff"
uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-test-${{ hashFiles('**/Cargo.lock') }}
- name: "Install the toolchain"
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- name: "Perform the tests"
uses: actions-rs/cargo@v1
with:
command: test

Binary:
name: Binary
runs-on: ubuntu-20.04
strategy:
matrix:
include:
- architecture: aarch64
target: aarch64-unknown-linux-gnu
- architecture: x86_64
target: x86_64-unknown-linux-gnu
steps:
- uses: actions/checkout@v2
- name: "Install the dependencies"
run: sudo apt-get install pkg-config libssl-dev
shell: bash
- name: "Cache cargo stuff"
uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-binary-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
- name: "Install the toolchain"
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: "Build the binary"
uses: actions-rs/cargo@v1
with:
use-cross: true
command: build
args: --release --target=${{ matrix.target }} --features vendored-openssl
- name: "Archive the binary"
run: tar czf ${{ matrix.architecture }}_plantuml-generator.tar.gz target/${{ matrix.target }}/release/plantuml-generator
- name: "Upload the binary"
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.architecture }}_plantuml-generator
path: ${{ matrix.architecture }}_plantuml-generator.tar.gz
# - name: "Publish the crate"
# if: ${{ startsWith(github.ref, 'refs/tags/') }}
# uses: actions-rs/cargo@v1
# with:
# use-cross: true
# command: publish
# args: --target=${{ matrix.target }} --features vendored-openssl --token ${{ secrets.CRATEIO_TOKEN }}

DebianPackage:
name: Debian Package
runs-on: ubuntu-20.04
strategy:
matrix:
include:
- architecture: x86_64
target: x86_64-unknown-linux-gnu
steps:
- uses: actions/checkout@v2
- name: "Install the dependencies"
run: sudo apt-get install build-essential pkg-config dpkg libc-bin libssl-dev liblzma-dev
shell: bash
- name: "Cache cargo stuff"
uses: actions/cache@v2
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-debian-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
- name: "Install the toolchain"
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: "Install cargo-deb"
run: cargo install cargo-deb -q || true
- name: "Build the deb package"
run: cargo deb --target=${{ matrix.target }} -- --features vendored-openssl
- name: "Upload the deb package"
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.architecture }}_plantuml-generator
path: target/${{ matrix.target }}/debian/*.deb

DockerImage:
name: Docker Image
runs-on: ubuntu-20.04
needs: [ Lint, Test ]
steps:
- uses: actions/checkout@v1
- name: "Set up QEMU"
uses: docker/setup-qemu-action@v1
- name: "Login to Docker Hub"
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: "Set up Docker Buildx"
uses: docker/setup-buildx-action@v1
with:
install: true
- name: "Inject slug/short variables"
uses: rlespinasse/github-slug-action@v3.x
- name: "Build and push branches"
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
uses: docker/build-push-action@v2
with:
push: true
platforms: linux/amd64
tags: |
thibaultmorin/plantuml-generator:${{ env.GITHUB_REF_SLUG }}
build-args: |
git_sha=${{ github.sha }}
- name: "Process version of the tag"
if: ${{ startsWith(github.ref, 'refs/tags/') }}
id: version
uses: ncipollo/semantic-version-action@v1
- name: "Build and push tags"
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: docker/build-push-action@v2
with:
push: true
platforms: linux/amd64
tags: |
thibaultmorin/plantuml-generator:${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}.${{ steps.version.outputs.patch }}
thibaultmorin/plantuml-generator:${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}
thibaultmorin/plantuml-generator:${{ steps.version.outputs.major }}
build-args: |
git_sha=${{ github.sha }}
GithubRelease:
name: Github Release
runs-on: ubuntu-20.04
needs: [ Lint, Test, Binary, DebianPackage ]
if: ${{ startsWith(github.ref, 'refs/tags/') }}
steps:
- name: "Download all artifacts"
uses: actions/download-artifact@v2
with:
path: artifacts
- name: "List artifacts"
run: ls -R
working-directory: artifacts
- name: "Create the changelog"
id: build_changelog
uses: mikepenz/release-changelog-builder-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Create the release"
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: "artifacts/**/*.tar.gz,artifacts/**/*.deb"
omitName: true
body: ${{steps.github_release.outputs.changelog}}
token: ${{ secrets.GITHUB_TOKEN }}
107 changes: 3 additions & 104 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,104 +1,3 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port
/.idea
/.cache
/target
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Changelog

## Unreleased (2021-06-10)

### Features
Loading

0 comments on commit c6dc1c0

Please sign in to comment.