Initialize Consumer Repository

scripts/init-consumer.sh turns provider to consumer in irreversible way. It drops junk, generates files from .consumer.in, and commits changes with message INITIAL CONSUMER.

The .consumer.in is an ini-like file. It stores sections. Each section begins with [<field>] and ends with [end<field>]. Indentations are preserved. Don’t use whitespaces unless the field is license or readme. This document uses $<field> to refer to fields.

# Example of .consumer.in

[repo]
git@github.com:barroit/brukit.git
[endrepo]

[license]
GPL-3.0-or-later
[endlicense]

[name]
brukit
[endname]

[conf]
no_arch
[endconf]

[icon]
cherry.ico
[endicon]

[readme]
Negi
====

Miku is justice!
[endreadme]

This script sets origin remote URL to $repo. Replaces README contents with $readme. It records $name in NAME, but uses lowercase when generating files with $name prefix.

$license is new license to use in consumer. It only affects source code works, not documents, GitHub workflows, or artworks. Check Licenses for available licenses. As of writing this document, brukit source code works are dual-licensed under GPL-3.0-or-later and MIT. You can choose whichever one you want, but not others.

This script generates .pickignore and .licensefix, which are read by merge tool. .pickignore tells which files to ignore when merging upstream to current branch, to avoid upstream changes on dropped files causing merge conflicts. .licensefix enables automatic replacement of old licenses with new ones.

$conf is some tuning knobs for consumer. Don’t use it in new consumer. It’s an overengineering crap, non-portable, broken, and planned to be dropped in a future version; icon specifies executable icon file. It’s only available on Windows, noop on Unix-like OS.

You are free to amend the initial commit of consumer. For example, you never port to Windows and drop all Windows stuff ;)