Skip to content

Commit

Permalink
feat: port previous script
Browse files Browse the repository at this point in the history
  • Loading branch information
moul committed Apr 24, 2021
1 parent 0408584 commit 96cc82c
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 58 deletions.
6 changes: 0 additions & 6 deletions AUTHORS

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

123 changes: 71 additions & 52 deletions maintenance.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"os"
"os/exec"

"github.com/go-git/go-git/v5"
"go.uber.org/multierr"
Expand Down Expand Up @@ -72,64 +73,82 @@ func doMaintenanceOnce(_ context.Context, path string) error {
return fmt.Errorf("not implemented: git checkout master/main")
}

// TODO: check if the worktree looks like the corresponding template

// TODO
// - repoman.yml ->
// - template -> moul/golang-repo-template
// - exclude: - README.md
// - no-main / lib-only
// - auto update from template
// - open PR / update existing one
//
// _do.maintenance: _do.checkoutmaster
// # renovate.json
// mkdir -p .github
// git mv renovate.json .github/renovate.json || true
// git rm -f renovate.json || true
// cp ~/go/src/moul.io/golang-repo-template/.github/renovate.json .github/ || true
// git add .github/renovate.json || true
// git add renovate.json || true
//
// # dependabot
// cp ~/go/src/moul.io/golang-repo-template/.github/dependabot.yml .github/ || true
// git add .github/dependabot.yml || true
//
// # rules.mk
// if [ -f rules.mk ]; then cp ~/go/src/moul.io/rules.mk/rules.mk .; fi || true
//
// # authors
// if [ -f rules.mk ]; then make generate.authors; git add AUTHORS; fi || true
//
// # copyright
// set -xe; \
// for prefix in "©" "Copyright" "Copyright (c)"; do \
// for file in README.md LICENSE-APACHE LICENSE-MIT LICENSE COPYRIGHT; do \
// if [ -f "$$file" ]; then \
// sed -i "s/$$prefix 2014 /$$prefix 2014-2021 /" $$file; \
// sed -i "s/$$prefix 2015 /$$prefix 2015-2021 /" $$file; \
// sed -i "s/$$prefix 2016 /$$prefix 2016-2021 /" $$file; \
// sed -i "s/$$prefix 2017 /$$prefix 2017-2021 /" $$file; \
// sed -i "s/$$prefix 2018 /$$prefix 2018-2021 /" $$file; \
// sed -i "s/$$prefix 2019 /$$prefix 2019-2021 /" $$file; \
// sed -i "s/$$prefix 2020 /$$prefix 2020-2021 /" $$file; \
// sed -i "s/$$prefix \([0-9][0-9][0-9][0-9]\)-20[0-9][0-9] /$$prefix \1-2021 /" $$file; \
// sed -i "s/$$prefix 2021-2021/$$prefix 2021 /" $$file; \
// fi; \
// done; \
// done
//
// # golangci-lint fix
// sed -i "s/version: v1.26/version: v1.38/" .github/workflows/*.yml || true
// sed -i "s/version: v1.27/version: v1.38/" .github/workflows/*.yml || true
// sed -i "s/version: v1.28/version: v1.38/" .github/workflows/*.yml || true
//
// # apply changes
// git diff
// git diff --cached
// git branch -D dev/moul/maintenance || true
// git checkout -b dev/moul/maintenance
// git status
// git commit -s -a -m "chore: repo maintenance 🤖" -m "more details: https://github.com/moul/repoman"
// git push -u origin dev/moul/maintenance -f
// hub pull-request -m "chore: repo maintenance 🤖" -m "more details: https://github.com/moul/repoman" || $(MAKE) -f $(REPOMAN)/Makefile _do.prlist

script := `
main() {
# renovate.json
mkdir -p .github
git mv renovate.json .github/renovate.json || true
git rm -f renovate.json || true
cp ~/go/src/moul.io/golang-repo-template/.github/renovate.json .github/ || true
git add .github/renovate.json || true
git add renovate.json || true
# dependabot
cp ~/go/src/moul.io/golang-repo-template/.github/dependabot.yml .github/ || true
git add .github/dependabot.yml || true
# rules.mk
if [ -f rules.mk ]; then cp ~/go/src/moul.io/rules.mk/rules.mk .; fi || true
# authors
if [ -f rules.mk ]; then make generate.authors; git add AUTHORS; fi || true
# copyright
set -xe; \
for prefix in "©" "Copyright" "Copyright (c)"; do \
for file in README.md LICENSE-APACHE LICENSE-MIT LICENSE COPYRIGHT; do \
if [ -f "$$file" ]; then \
sed -i "s/$$prefix 2014 /$$prefix 2014-2021 /" $$file; \
sed -i "s/$$prefix 2015 /$$prefix 2015-2021 /" $$file; \
sed -i "s/$$prefix 2016 /$$prefix 2016-2021 /" $$file; \
sed -i "s/$$prefix 2017 /$$prefix 2017-2021 /" $$file; \
sed -i "s/$$prefix 2018 /$$prefix 2018-2021 /" $$file; \
sed -i "s/$$prefix 2019 /$$prefix 2019-2021 /" $$file; \
sed -i "s/$$prefix 2020 /$$prefix 2020-2021 /" $$file; \
sed -i "s/$$prefix \([0-9][0-9][0-9][0-9]\)-20[0-9][0-9] /$$prefix \1-2021 /" $$file; \
sed -i "s/$$prefix 2021-2021/$$prefix 2021 /" $$file; \
fi; \
done; \
done
# golangci-lint fix
sed -i "s/version: v1.26/version: v1.38/" .github/workflows/*.yml || true
sed -i "s/version: v1.27/version: v1.38/" .github/workflows/*.yml || true
sed -i "s/version: v1.28/version: v1.38/" .github/workflows/*.yml || true
# apply changes
git diff
git diff --cached
git branch -D dev/moul/maintenance || true
git checkout -b dev/moul/maintenance
git status
git commit -s -a -m "chore: repo maintenance 🤖" -m "more details: https://github.com/moul/repoman"
git push -u origin dev/moul/maintenance -f
hub pull-request -m "chore: repo maintenance 🤖" -m "more details: https://github.com/moul/repoman" || $(MAKE) -f $(REPOMAN)/Makefile _do.prlist
}
main
`
// exec
{
cmd := exec.Command("/bin/sh", "-xec", script)
cmd.Stdout = os.Stderr
cmd.Stderr = os.Stderr
cmd.Dir = project.Path
err := cmd.Run()
if err != nil {
return fmt.Errorf("script execution failed: %w", err)
}
}

return nil
}

0 comments on commit 96cc82c

Please sign in to comment.