git.iko.soy/typeable/rollbar-hs
on master help sign in
Add rules for uploading to hackage
d5d6d73joneshf
.circleci/config.yml+11
@@ -1,5 +1,14 @@
1version: 2
1version: 2
2jobs:
2jobs:
3+ sdist:
4+ docker:
5+ - image: haskell:8.2.2
6+ steps:
7+ - checkout
8+ - run:
9+ name: Build sdist
10+ command: make sdist
11+
3 test:
12 test:
4 docker:
13 docker:
5 - image: haskell:8.2.2
14 - image: haskell:8.2.2
@@ -20,8 +29,10 @@ jobs:
20 paths:
29 paths:
21 - .stack-work
30 - .stack-work
22 - /root/.stack
31 - /root/.stack
32+
23workflows:
33workflows:
24 version: 2
34 version: 2
25 base:
35 base:
26 jobs:
36 jobs:
37+ - sdist
27 - test
38 - test
Makefile+34−4
@@ -1,4 +1,9 @@
1+PROJECT_NAME := rollbar-hs
2+
1BIN := bin
3BIN := bin
4+CABAL := cabal
5+CABAL_FILE := $(PROJECT_NAME).cabal
6+DIST := dist
2EMPTY := .make
7EMPTY := .make
3GHCID := $(BIN)/ghcid
8GHCID := $(BIN)/ghcid
4STACK := stack
9STACK := stack
@@ -6,30 +11,55 @@ STACK_WORK := .stack-work
6
11
7.DEFAULT_GOAL := build
12.DEFAULT_GOAL := build
8
13
14+$(BIN):
15+ mkdir -p $@
16+
17+$(DIST):
18+ mkdir -p $@
19+
9$(EMPTY):
20$(EMPTY):
10− mkdir $@
21+ mkdir -p $@
11
22
12$(EMPTY)/stack-setup: | $(EMPTY)
23$(EMPTY)/stack-setup: | $(EMPTY)
13 $(STACK) setup
24 $(STACK) setup
14 touch $@
25 touch $@
15
26
16−$(GHCID): $(EMPTY)/stack-setup
27+$(GHCID): $(EMPTY)/stack-setup | $(BIN)
17 $(STACK) install ghcid --local-bin-path $(BIN)
28 $(STACK) install ghcid --local-bin-path $(BIN)
18
29
30+$(CABAL_FILE):
31+ # `stack` has no way to run `hpack` directly.
32+ # We can run `hpack` indirectly with little overhead.
33+ $(STACK) build --dry-run
34+
19.PHONY: build
35.PHONY: build
20build: $(EMPTY)/stack-setup
36build: $(EMPTY)/stack-setup
21 $(STACK) build --no-run-tests --test
37 $(STACK) build --no-run-tests --test
22
38
39+.PHONY: cabal-check
40+cabal-check: $(CABAL_FILE)
41+ $(CABAL) check
42+
23.PHONY: clean
43.PHONY: clean
24clean:
44clean:
45+ rm -f $(CABAL_FILE)
25− rm -f $(BIN)/*
46+ rm -fr $(BIN)
47+ rm -fr $(DIST)
26− rm -f $(EMPTY)/*
48+ rm -fr $(EMPTY)
27 rm -fr $(STACK_WORK)
49 rm -fr $(STACK_WORK)
28
50
51+.PHONY: sdist
52+sdist: cabal-check | $(DIST)
53+ $(CABAL) sdist
54+
29.PHONY: test
55.PHONY: test
30test: build
56test: build
31 $(STACK) test
57 $(STACK) test
32
58
59+.PHONY: upload-hackage
60+upload-hackage: sdist
61+ @ $(CABAL) upload $(DIST)/$(PROJECT_NAME)-*.tar.gz
62+
33.PHONY: watch
63.PHONY: watch
34watch: $(GHCID)
64watch: $(GHCID)
35 $(GHCID)
65 $(GHCID)