Skip to content

Commit fe06da6

Browse files
committed
Initial project
1 parent faf6083 commit fe06da6

File tree

11 files changed

+518
-19
lines changed

11 files changed

+518
-19
lines changed

.circleci/config.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
version: 2.1
2+
3+
orbs:
4+
haskell: haskell-works/[email protected]
5+
github: haskell-works/[email protected]
6+
hackage: haskell-works/[email protected]
7+
8+
workflows:
9+
multiple-ghc-build:
10+
jobs:
11+
- haskell/build:
12+
name: GHC 8.2.2
13+
executor: haskell/ghc-8_2_2
14+
15+
- haskell/build:
16+
name: GHC 8.4.4
17+
executor: haskell/ghc-8_4_4
18+
19+
- haskell/build:
20+
name: GHC 8.6.4
21+
executor: haskell/ghc-8_6_4
22+
23+
- github/release-cabal:
24+
name: GitHub Release
25+
context: haskell-ci
26+
requires:
27+
- GHC 8.2.2
28+
- GHC 8.4.4
29+
- GHC 8.6.4
30+
checkout: true
31+
filters:
32+
branches:
33+
only: master
34+
35+
- hackage/upload:
36+
context: haskell-ci
37+
publish: true
38+
requires:
39+
- GitHub Release
40+
username: ${HACKAGE_USER}
41+
password: ${HACKAGE_PASS}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ cabal.project.local
2020
cabal.project.local~
2121
.HTF/
2222
.ghc.environment.*
23+
24+
.vscode/ipch

.stylish-haskell.yaml

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
# stylish-haskell configuration file
2+
# ==================================
3+
4+
# The stylish-haskell tool is mainly configured by specifying steps. These steps
5+
# are a list, so they have an order, and one specific step may appear more than
6+
# once (if needed). Each file is processed by these steps in the given order.
7+
steps:
8+
# Convert some ASCII sequences to their Unicode equivalents. This is disabled
9+
# by default.
10+
# - unicode_syntax:
11+
# # In order to make this work, we also need to insert the UnicodeSyntax
12+
# # language pragma. If this flag is set to true, we insert it when it's
13+
# # not already present. You may want to disable it if you configure
14+
# # language extensions using some other method than pragmas. Default:
15+
# # true.
16+
# add_language_pragma: true
17+
18+
# Align the right hand side of some elements. This is quite conservative
19+
# and only applies to statements where each element occupies a single
20+
# line.
21+
- simple_align:
22+
cases: true
23+
top_level_patterns: true
24+
records: true
25+
26+
# Import cleanup
27+
- imports:
28+
# There are different ways we can align names and lists.
29+
#
30+
# - global: Align the import names and import list throughout the entire
31+
# file.
32+
#
33+
# - file: Like global, but don't add padding when there are no qualified
34+
# imports in the file.
35+
#
36+
# - group: Only align the imports per group (a group is formed by adjacent
37+
# import lines).
38+
#
39+
# - none: Do not perform any alignment.
40+
#
41+
# Default: global.
42+
align: group
43+
44+
# Folowing options affect only import list alignment.
45+
#
46+
# List align has following options:
47+
#
48+
# - after_alias: Import list is aligned with end of import including
49+
# 'as' and 'hiding' keywords.
50+
#
51+
# > import qualified Data.List as List (concat, foldl, foldr, head,
52+
# > init, last, length)
53+
#
54+
# - with_alias: Import list is aligned with start of alias or hiding.
55+
#
56+
# > import qualified Data.List as List (concat, foldl, foldr, head,
57+
# > init, last, length)
58+
#
59+
# - new_line: Import list starts always on new line.
60+
#
61+
# > import qualified Data.List as List
62+
# > (concat, foldl, foldr, head, init, last, length)
63+
#
64+
# Default: after_alias
65+
list_align: after_alias
66+
67+
# Long list align style takes effect when import is too long. This is
68+
# determined by 'columns' setting.
69+
#
70+
# - inline: This option will put as much specs on same line as possible.
71+
#
72+
# - new_line: Import list will start on new line.
73+
#
74+
# - new_line_multiline: Import list will start on new line when it's
75+
# short enough to fit to single line. Otherwise it'll be multiline.
76+
#
77+
# - multiline: One line per import list entry.
78+
# Type with contructor list acts like single import.
79+
#
80+
# > import qualified Data.Map as M
81+
# > ( empty
82+
# > , singleton
83+
# > , ...
84+
# > , delete
85+
# > )
86+
#
87+
# Default: inline
88+
long_list_align: inline
89+
90+
# Align empty list (importing instances)
91+
#
92+
# Empty list align has following options
93+
#
94+
# - inherit: inherit list_align setting
95+
#
96+
# - right_after: () is right after the module name:
97+
#
98+
# > import Vector.Instances ()
99+
#
100+
# Default: inherit
101+
empty_list_align: inherit
102+
103+
# List padding determines indentation of import list on lines after import.
104+
# This option affects 'long_list_align'.
105+
#
106+
# - <integer>: constant value
107+
#
108+
# - module_name: align under start of module name.
109+
# Useful for 'file' and 'group' align settings.
110+
list_padding: 4
111+
112+
# Separate lists option affects formating of import list for type
113+
# or class. The only difference is single space between type and list
114+
# of constructors, selectors and class functions.
115+
#
116+
# - true: There is single space between Foldable type and list of it's
117+
# functions.
118+
#
119+
# > import Data.Foldable (Foldable (fold, foldl, foldMap))
120+
#
121+
# - false: There is no space between Foldable type and list of it's
122+
# functions.
123+
#
124+
# > import Data.Foldable (Foldable(fold, foldl, foldMap))
125+
#
126+
# Default: true
127+
separate_lists: true
128+
129+
# Language pragmas
130+
- language_pragmas:
131+
# We can generate different styles of language pragma lists.
132+
#
133+
# - vertical: Vertical-spaced language pragmas, one per line.
134+
#
135+
# - compact: A more compact style.
136+
#
137+
# - compact_line: Similar to compact, but wrap each line with
138+
# `{-#LANGUAGE #-}'.
139+
#
140+
# Default: vertical.
141+
style: vertical
142+
143+
# Align affects alignment of closing pragma brackets.
144+
#
145+
# - true: Brackets are aligned in same collumn.
146+
#
147+
# - false: Brackets are not aligned together. There is only one space
148+
# between actual import and closing bracket.
149+
#
150+
# Default: true
151+
align: true
152+
153+
# stylish-haskell can detect redundancy of some language pragmas. If this
154+
# is set to true, it will remove those redundant pragmas. Default: true.
155+
remove_redundant: true
156+
157+
# Replace tabs by spaces. This is disabled by default.
158+
# - tabs:
159+
# # Number of spaces to use for each tab. Default: 8, as specified by the
160+
# # Haskell report.
161+
# spaces: 8
162+
163+
# Remove trailing whitespace
164+
- trailing_whitespace: {}
165+
166+
# A common setting is the number of columns (parts of) code will be wrapped
167+
# to. Different steps take this into account. Default: 80.
168+
columns: 800
169+
170+
# By default, line endings are converted according to the OS. You can override
171+
# preferred format here.
172+
#
173+
# - native: Native newline format. CRLF on Windows, LF on other OSes.
174+
#
175+
# - lf: Convert to LF ("\n").
176+
#
177+
# - crlf: Convert to CRLF ("\r\n").
178+
#
179+
# Default: native.
180+
newline: native
181+
182+
# Sometimes, language extensions are specified in a cabal file or from the
183+
# command line instead of using language pragmas in the file. stylish-haskell
184+
# needs to be aware of these, so it can parse the file correctly.
185+
#
186+
# No language extensions are enabled by default.
187+
# language_extensions:
188+
# - TemplateHaskell
189+
# - QuasiQuotes

.vscode/tasks.json

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
{
2+
"version": "2.0.0",
3+
"type": "shell",
4+
"presentation": {
5+
"reveal": "always",
6+
"panel": "new"
7+
},
8+
"windows": {
9+
"command": "cmd", "args": ["/c"]
10+
},
11+
"linux": {
12+
"command": "sh", "args": ["-c"]
13+
},
14+
"osx": {
15+
"command": "sh", "args": ["-c"]
16+
},
17+
"tasks": [
18+
{
19+
"label": "stack build",
20+
"group": "build",
21+
"command": "/bin/bash",
22+
"args": [
23+
"-c",
24+
"echo START_BUILD && cd ${workspaceRoot} && ./project.sh build && echo END_BUILD "
25+
],
26+
"problemMatcher": {
27+
"owner": "haskell",
28+
"fileLocation": "absolute",
29+
"pattern": [
30+
{
31+
"regexp": "^(.+?):(\\d+):(\\d+):\\s+(error|warning|info):.*$",
32+
"file": 1, "line": 2, "column": 3, "severity": 4
33+
},
34+
{
35+
"regexp": "\\s*(.*)$",
36+
"message": 1
37+
}
38+
]
39+
}
40+
},
41+
{
42+
"label": "stack clean & build",
43+
"command": "/bin/bash",
44+
"args": [
45+
"-c",
46+
"echo START_CLEAN_AND_BUILD && cd ${workspaceRoot} && ./project.sh clean && ./project.sh build && echo END_CLEAN_AND_BUILD "
47+
],
48+
"problemMatcher": {
49+
"owner": "haskell",
50+
"fileLocation": "absolute",
51+
"pattern": [
52+
{
53+
"regexp": "^(.+?):(\\d+):(\\d+):\\s+(error|warning|info):.*$",
54+
"file": 1, "line": 2, "column": 3, "severity": 4
55+
},
56+
{
57+
"regexp": "\\s*(.*)$",
58+
"message": 1
59+
}
60+
]
61+
}
62+
},
63+
{
64+
"group": "test",
65+
"label": "stack test",
66+
"command": "/bin/bash",
67+
"args": [
68+
"-c",
69+
"echo START_TEST && cd ${workspaceRoot} && ./project.sh test && echo END_TEST "
70+
],
71+
"problemMatcher": {
72+
"owner": "haskell",
73+
"fileLocation": [ "relative", "${workspaceRoot}" ],
74+
"pattern": [
75+
{
76+
"regexp": "^\\s+(.+):(\\d+):.*$",
77+
"file": 1, "line": 2
78+
},
79+
{
80+
"regexp": "^.*\\.(.+)\\s*$",
81+
"message": 1
82+
}
83+
]
84+
}
85+
},
86+
{
87+
"isBackground": true,
88+
"label": "stack watch",
89+
"command": "/bin/bash",
90+
"args": [
91+
"-c",
92+
"echo START_WATCH && cd ${workspaceRoot} && ./project.sh build --test --no-run-tests --file-watch && echo END_WATCH "
93+
],
94+
"problemMatcher": {
95+
"owner": "haskell",
96+
"fileLocation": "absolute",
97+
"pattern": [
98+
{
99+
"regexp": "^(.+?):(\\d+):(\\d+):\\s+(error|warning|info):.*$",
100+
"file": 1, "line": 2, "column": 3, "severity": 4
101+
},
102+
{
103+
"regexp": "\\s*(.*)$",
104+
"message": 1
105+
}
106+
],
107+
"background": {
108+
"activeOnStart": true,
109+
"beginsPattern": "^.*\\(local file changes:\\s",
110+
"endsPattern": "(ExitFailure|ExitSuccess)"
111+
}
112+
}
113+
},
114+
{
115+
"isBackground": true,
116+
"label": "stack watch & test",
117+
"command": "/bin/bash",
118+
"args": [
119+
"-c",
120+
"echo START_WATCH && cd ${workspaceRoot} && ./project.sh build --test --file-watch && echo END_WATCH "
121+
],
122+
"problemMatcher": {
123+
"owner": "haskell",
124+
"fileLocation": [ "relative", "${workspaceRoot}" ],
125+
"pattern": [
126+
{
127+
"regexp": "^\\s+(.+):(\\d+):.*$",
128+
"file": 1, "line": 2
129+
},
130+
{
131+
"regexp": "^.*\\.(.+)\\s*$",
132+
"message": 1
133+
}
134+
],
135+
"background": {
136+
"activeOnStart": true,
137+
"beginsPattern": "^.*\\(local file changes:.*$",
138+
"endsPattern": "(ExitFailure|ExitSuccess)"
139+
}
140+
}
141+
}
142+
]
143+
}

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Revision history for hw-ci-assist
2+
3+
## 0.1.0.0 -- YYYY-mm-dd
4+
5+
* First version. Released on an unsuspecting world.

0 commit comments

Comments
 (0)