Skip to content

Commit

Permalink
Merge funflow2 repository
Browse files Browse the repository at this point in the history
Merged the funflow2 repository with its full history into
the funflow2/ directory using a subtree merge strategy.
  • Loading branch information
dorranh committed Jul 1, 2021
2 parents 7d8f088 + f26c9a1 commit 98183e9
Show file tree
Hide file tree
Showing 137 changed files with 12,577 additions and 0 deletions.
5 changes: 5 additions & 0 deletions funflow2/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# GitHub Linguist annotations.
# Hide nix/.stack.nix/*.nix
# That is stuff that is generated by nix-tools stack-to-nix

nix/.stack.nix/*.nix linguist-generated=true
30 changes: 30 additions & 0 deletions funflow2/.github/settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
repository:
has_wiki: false

labels:
- name: "duplicate"
color: cfd3d7
- name: "good first issue"
color: 7057ff
- name: "invalid"
color: cfd3d7
- name: "P0"
color: b60205
- name: "P1"
color: d93f0b
- name: "P2"
color: e99695
- name: "P3"
color: fbca04
- name: "P4"
color: fef2c0
- name: "question"
color: d876e3
- name: "type: bug"
color: 0052cc
- name: "type: documentation"
color: 0052cc
- name: "type: feature request"
color: 0052cc
- name: "wontfix"
color: ffffff
56 changes: 56 additions & 0 deletions funflow2/.github/workflows/funflow2-ci-linux-nix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: funflow2 CI (Linux, Nix)

on: [push]

jobs:
build:
name: funflow2 [build >> tests >> doc]
runs-on: ubuntu-latest
steps:
# Setup
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v12
# with:
# skip_adding_nixpkgs_channel: true
- uses: cachix/cachix-action@v8
with:
name: tweag-funflow2
signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}"
# Builds
# docker-client library with its tests
- name: Build docker-client library
run: nix-build -A docker-client
- name: Build docker-client test suite
run: nix-build -A docker-client-tests -o docker-client-tests
- name: Run docker-client unit tests
run: ./docker-client-tests/bin/primary --pattern "unit"
# Note: these tests take about 10s to run. If executing time
# gets much longer we can rethink when we want to run these.
- name: Run docker-client <--> docker integration tests
run: ./docker-client-tests/bin/primary --pattern "integration"
# funflow library with its tests
- name: Build funflow library
run: nix-build -A funflow
- name: Test
run: |
echo "Building tests"
FLOW_TESTS_PATH=$(nix-build -A funflow-tests)
TESTS_PATH=$(nix-build -A funflow-unit-tests)
echo "Running main test suite"
$TESTS_PATH/bin/unit-tests
echo "Running flow tests"
# Funflow flow tests have to be run in the `funflow` folder, like stack does, in order to have access to test assets
cd ./funflow
$FLOW_TESTS_PATH/bin/test-funflow
cd ..
# Build documentation
- name: Build docs and tutorials
run: funflow-pages/scripts/build.sh
# Deploy documentation to a github page
- name: Deploy docs
# Push to GitHub Pages only on master
if: github.ref == 'refs/heads/master'
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
publish_dir: ./funflow-pages/result/funflow2
41 changes: 41 additions & 0 deletions funflow2/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
dist
dist-*
cabal-dev
*.o
*.hi
*.chi
*.chs.h
*.dyn_o
*.dyn_hi
.hpc
.hsenv
.cabal-sandbox/
cabal.sandbox.config
*.prof
*.aux
*.hp
*.eventlog
.stack-work/
cabal.project.local

.vscode
.idea/

result*

out

# TODO remove once bug corrected
*.cabal

funflow-tutorial/outputs
funflow-tutorial/notebooks/**/*.html
funflow-tutorial/notebooks/**/.ipynb_checkpoints

.tmp

.ipynb_checkpoints/

# Examples
makefiletest/

6 changes: 6 additions & 0 deletions funflow2/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"nixEnvSelector.nixShellConfig": "${workspaceRoot}/shell.nix",
"haskell.languageServerVariant": "haskell-language-server",
"editor.formatOnSave": true,
"liveServer.settings.root": "/funflow-pages/result"
}
21 changes: 21 additions & 0 deletions funflow2/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2020 Tweag

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
47 changes: 47 additions & 0 deletions funflow2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# funflow2

Compose and run computational workflows.

> **Disclaimer**: funflow2 is in an extremely early state and is subject to change. Use at your own risk.
## Introduction

`funflow2` is a Haskell library to write workflows programatically. It is the spiritual
successor to the excellent [funflow](https://github.com/tweag/funflow) library and builds upon
the [kernmantle](https://github.com/tweag/kernmantle/) binary effects library.

Funflow allows you to compose tasks to make *reusable* workflows and helps promote reproducibility
by employing a content-addressed store.

https://tweag.github.io/funflow2/

## Getting started

### Installation

#### Cookiecutter Template

To get started with a simple project, you can use the cookiecutter template provided with this repo:

```console
cookiecutter [email protected]:tweag/funflow2.git --directory cookiecutter-funflow
```

#### Stack

While funflow2 hasn't been plublished on Hackage yet, you can install it as a git dependency using the standard Haskell tooling (e.g. [Stack](https://docs.haskellstack.org/en/stable/yaml_configuration/#packages)). Note that you will
also need to add a couple of extra dependencies to your `stack.yaml`. See the [example stack.yaml](./docs/example-user-stack.yaml) for a minimal example.

### Tutorials

Check out the tutorials on the funflow2 website to get started: https://tweag.github.io/funflow2/tutorials/.

You can run the tutorial notebooks using the nix shell provided in the [funflow-tutorial](./funflow-tutorial) directory.

## Documentation

The API documentation can be found here: https://tweag.github.io/funflow2/api/

## Developement

For those interested in contributing, please see [DEVELOPMENT.md](./docs/DEVELOPMENT.md).
21 changes: 21 additions & 0 deletions funflow2/cas/hashable/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2017 Tweag I/O

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
45 changes: 45 additions & 0 deletions funflow2/cas/hashable/cas-hashable.cabal
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Name: cas-hashable
Version: 1.0.1
Synopsis: A hashing class for content-addressed storage
Description:
A hashing class for content-addressed storage. Content can be hashed either by value or through an IO action. Part of the funflow ecosystem.
License: MIT
License-file: LICENSE
Author: Tom Nielsen, Nicholas Clarke, Andreas Herrmann
Maintainer: [email protected]
build-type: Simple
Cabal-Version: >= 1.10
homepage: https://github.com/tweag/funflow
bug-reports: https://github.com/tweag/funflow
category: Control
Tested-With: GHC == 7.8.4, GHC == 7.10.2, GHC == 7.10.3, GHC == 8.0.1

extra-source-files:
changelog.md

Library
ghc-options: -Wall -fno-warn-type-defaults
hs-source-dirs: src
default-language: Haskell2010

Exposed-modules: Data.CAS.ContentHashable
Build-depends:
base >= 4.6 && <5
, aeson >= 1.2.3.0
, bytestring
, clock
, containers
, cryptonite
, ghc-prim
, hashable
, integer-gmp
, memory
, path > 0.6.0
, path-io
, safe-exceptions
, scientific
, text
, time
, unix
, unordered-containers
, vector
Empty file.
Loading

0 comments on commit 98183e9

Please sign in to comment.