From a1e3f305e830aad536adc6b79474a5c7cdbf8829 Mon Sep 17 00:00:00 2001 From: at15 Date: Sun, 16 Feb 2020 21:30:55 -0800 Subject: [PATCH 1/5] hack: Init github action cron for updating issue - just test if cron got triggered properly, the go code simply echo and exit and does not do anything to issue --- .dockerignore | 5 +++++ .github/workflows/README.md | 16 ++++++++++++++++ .github/workflows/issue.yaml | 16 ++++++++++++++++ Dockerfile | 18 ++++++++++++++++++ action.yml | 8 ++++++++ scripts/weekly/go.mod | 3 +++ scripts/weekly/main.go | 12 ++++++++++++ 7 files changed, 78 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/README.md create mode 100644 .github/workflows/issue.yaml create mode 100644 Dockerfile create mode 100644 action.yml create mode 100644 scripts/weekly/go.mod create mode 100644 scripts/weekly/main.go diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a835f70 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +201* +2020 +docs +.github +.jekyll \ No newline at end of file diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 0000000..5751389 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,16 @@ +# Workflow for dyweb weekly + +GitHub workflow does the following things + +- create a new issue every week +- close old issues when creating new issues +- generate new weekly markdown file and push to master +- generate new html? (not sure if it is really needed) + +## TODO + +- multiple workflow yaml + +## Reference + +- [cron](https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule) \ No newline at end of file diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml new file mode 100644 index 0000000..7e2d33d --- /dev/null +++ b/.github/workflows/issue.yaml @@ -0,0 +1,16 @@ +# create a new issue every week +# FIXME(at15): it is coded to every 5 minutes to have test if things are working + +on: + schedule: + - cron: '*/5 * * * *' + +job: + create: + runs-on: ubuntu-latest + name: create new weekly issue + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: new issue + uses: ./ # Uses action in the root directory \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0b6fd92 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +# https://steele.blue/tiny-github-actions/ +FROM dyweb/go-dev:1.13.6 as builder + +LABEL maintainer="contact@dongyue.io" + +ARG PROJECT_ROOT=/go/src/github.com/dyweb/weekly + +WORKDIR $PROJECT_ROOT + +COPY . $PROJECT_ROOT +RUN cd scripts/weekly && go install . + +FROM ubuntu:18.04 +LABEL maintainer="contact@dongyue.io" +WORKDIR /usr/bin +COPY --from=builder /go/bin/weekly . +ENTRYPOINT ["weekly"] +CMD ["help"] \ No newline at end of file diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..d39be80 --- /dev/null +++ b/action.yml @@ -0,0 +1,8 @@ +name: 'weekly' +description: 'Create new weekly issue, run weekly generator' +runs: + using: 'docker' + image: 'Dockerfile' + # TODO: allow passing arguments from workflow + args: + - foo \ No newline at end of file diff --git a/scripts/weekly/go.mod b/scripts/weekly/go.mod new file mode 100644 index 0000000..2aa38bc --- /dev/null +++ b/scripts/weekly/go.mod @@ -0,0 +1,3 @@ +module github.com/dyweb/weekly/scripts/weekly + +go 1.13 diff --git a/scripts/weekly/main.go b/scripts/weekly/main.go new file mode 100644 index 0000000..9cdc29a --- /dev/null +++ b/scripts/weekly/main.go @@ -0,0 +1,12 @@ +package main + +import ( + "fmt" + "os" +) + +// TODO: create github client, port code from https://github.com/dyweb/dy-bot/blob/master/pkg/weekly/worker.go + +func main() { + fmt.Printf("weekly args %v\n", os.Args) +} From ac70e95a596fc9ad0e8d0015e152b347157e6069 Mon Sep 17 00:00:00 2001 From: at15 Date: Sun, 16 Feb 2020 21:34:37 -0800 Subject: [PATCH 2/5] hack: job -> jobs in github workflow --- .github/workflows/issue.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml index 7e2d33d..6bf71c0 100644 --- a/.github/workflows/issue.yaml +++ b/.github/workflows/issue.yaml @@ -5,7 +5,7 @@ on: schedule: - cron: '*/5 * * * *' -job: +jobs: create: runs-on: ubuntu-latest name: create new weekly issue From 2dd96774f87795b4abed5352d6685d6ae0df14b3 Mon Sep 17 00:00:00 2001 From: at15 Date: Sun, 16 Feb 2020 21:43:51 -0800 Subject: [PATCH 3/5] hack: Add spf13/cobra to test go mod --- scripts/weekly/go.mod | 2 ++ scripts/weekly/go.sum | 32 ++++++++++++++++++++++++++++++++ scripts/weekly/main.go | 22 ++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 scripts/weekly/go.sum diff --git a/scripts/weekly/go.mod b/scripts/weekly/go.mod index 2aa38bc..dc6f307 100644 --- a/scripts/weekly/go.mod +++ b/scripts/weekly/go.mod @@ -1,3 +1,5 @@ module github.com/dyweb/weekly/scripts/weekly go 1.13 + +require github.com/spf13/cobra v0.0.5 // indirect diff --git a/scripts/weekly/go.sum b/scripts/weekly/go.sum new file mode 100644 index 0000000..baada52 --- /dev/null +++ b/scripts/weekly/go.sum @@ -0,0 +1,32 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/scripts/weekly/main.go b/scripts/weekly/main.go index 9cdc29a..5347b5e 100644 --- a/scripts/weekly/main.go +++ b/scripts/weekly/main.go @@ -3,10 +3,32 @@ package main import ( "fmt" "os" + + "github.com/spf13/cobra" ) // TODO: create github client, port code from https://github.com/dyweb/dy-bot/blob/master/pkg/weekly/worker.go func main() { fmt.Printf("weekly args %v\n", os.Args) + rootCmd := &cobra.Command{ + Use: "weekly", + Short: "dyweb weekly", + Run: func(cmd *cobra.Command, args []string) { + cmd.Help() + os.Exit(1) + }, + } + issueCmd := &cobra.Command{ + Use: "issue", + Short: "Reconcile issue", + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("TODO: fetch issues, close old one and create new one") + }, + } + rootCmd.AddCommand(issueCmd) + if err := rootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } } From 4b00972f0e16e827c7ef8197ab716013bfcff4b2 Mon Sep 17 00:00:00 2001 From: at15 Date: Sun, 16 Feb 2020 22:46:25 -0800 Subject: [PATCH 4/5] hack: Add weekly-gen to Dockerfile --- Dockerfile | 13 +++++++++++-- scripts/weekly/go.mod | 5 ++++- scripts/weekly/go.sum | 13 +++++++++++++ scripts/weekly/main.go | 27 +++++++++++++++++++++++++-- 4 files changed, 53 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0b6fd92..cc9cc05 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,27 @@ +# Builder # https://steele.blue/tiny-github-actions/ FROM dyweb/go-dev:1.13.6 as builder - LABEL maintainer="contact@dongyue.io" ARG PROJECT_ROOT=/go/src/github.com/dyweb/weekly - +ENV WEEKLY_GEN_VERSION=v0.3.5 WORKDIR $PROJECT_ROOT +RUN curl -sSL https://github.com/dyweb/dy-weekly-generator/releases/download/$WEEKLY_GEN_VERSION/dy-weekly-generator-$WEEKLY_GEN_VERSION-x86_64-unknown-linux-gnu.tar.gz \ + | tar -vxz -C /usr/bin COPY . $PROJECT_ROOT RUN cd scripts/weekly && go install . +# Runner FROM ubuntu:18.04 LABEL maintainer="contact@dongyue.io" +# NOTE: libssl is required by weekly-gen +RUN apt update && apt install -y libssl1.0.0 + WORKDIR /usr/bin + +COPY --from=builder /usr/bin/weekly-gen . COPY --from=builder /go/bin/weekly . + ENTRYPOINT ["weekly"] CMD ["help"] \ No newline at end of file diff --git a/scripts/weekly/go.mod b/scripts/weekly/go.mod index dc6f307..c5d124b 100644 --- a/scripts/weekly/go.mod +++ b/scripts/weekly/go.mod @@ -2,4 +2,7 @@ module github.com/dyweb/weekly/scripts/weekly go 1.13 -require github.com/spf13/cobra v0.0.5 // indirect +require ( + github.com/dyweb/gommon v0.0.13 + github.com/spf13/cobra v0.0.5 +) diff --git a/scripts/weekly/go.sum b/scripts/weekly/go.sum index baada52..706f3bc 100644 --- a/scripts/weekly/go.sum +++ b/scripts/weekly/go.sum @@ -4,14 +4,21 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dyweb/gommon v0.0.13 h1:SwEex1UakZJVpO37GqiTc0QQ7iOe5Rz+6hQnGh1UePo= +github.com/dyweb/gommon v0.0.13/go.mod h1:cdTMuWn9B/9F87Jza4nwI6Ka8z+uT5+WcGDWWKFhnqM= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -22,11 +29,17 @@ github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb6 github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/scripts/weekly/main.go b/scripts/weekly/main.go index 5347b5e..1b7d8cf 100644 --- a/scripts/weekly/main.go +++ b/scripts/weekly/main.go @@ -3,7 +3,11 @@ package main import ( "fmt" "os" + "os/exec" + "strconv" + "github.com/dyweb/gommon/errors" + "github.com/dyweb/gommon/util/fsutil" "github.com/spf13/cobra" ) @@ -22,8 +26,8 @@ func main() { issueCmd := &cobra.Command{ Use: "issue", Short: "Reconcile issue", - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("TODO: fetch issues, close old one and create new one") + RunE: func(cmd *cobra.Command, args []string) error { + return build() }, } rootCmd.AddCommand(issueCmd) @@ -32,3 +36,22 @@ func main() { os.Exit(1) } } + +// Based on https://github.com/dyweb/dy-bot/blob/master/pkg/weekly/weekly.go#L14 buildWeekly +// shell out to weekly-gen binary from https://github.com/dyweb/dy-weekly-generator +// weekly-gen --repo dyweb/weekly --issue 183 +func build() error { + // TODO: + issue := 183 + cmd := exec.Command("weekly-gen", "--repo", "dyweb/weekly", "--issue", strconv.Itoa(issue)) + out, err := cmd.CombinedOutput() + if err != nil { + return errors.Wrapf(err, "error running weekly-gen %s", string(out)) + } + // TODO: get weekly number based on issue + dst := "TODO.md" + if err = fsutil.WriteFile(dst, out); err != nil { + return errors.Wrapf(err, "error writing weekly-gen output to %s", dst) + } + return nil +} From ce3609f90e00afc0665d61d1e0d6bdf39981a099 Mon Sep 17 00:00:00 2001 From: at15 Date: Mon, 17 Feb 2020 23:37:24 -0800 Subject: [PATCH 5/5] hack: Can't generate file name until #186 is resolved - we are relying on issue being created on time ... which is never the case .. --- scripts/weekly/main.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/weekly/main.go b/scripts/weekly/main.go index 1b7d8cf..38ff6c1 100644 --- a/scripts/weekly/main.go +++ b/scripts/weekly/main.go @@ -55,3 +55,12 @@ func build() error { } return nil } + +// Based on https://github.com/dyweb/dy-bot/blob/master/pkg/util/weeklyutil/weekly.go +// weekly title is Weekly-157 +// so @gaocegege just write strconv.Atoi(title[7:len(title)]) +// It does not work properly because we don't create weekly every week, which is the case for #183 +func fileNameFromIssue(title string) (string, error) { + // FIXME(#186): need to modify weekly generator + return "", errors.New("not implemented, see https://github.com/dyweb/weekly/issues/186") +}