|
|
|
#!/bin/bash
|
|
|
|
#apt-get install python-software-properties
|
|
|
|
#curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –
|
|
|
|
#apt-get install nodejs
|
|
|
|
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
|
|
# brew tap gitea/tap https://gitea.com/gitea/homebrew-gitea
|
|
|
|
# brew install tea
|
|
|
|
#tea login add
|
|
|
|
echo Enter repository name
|
|
|
|
|
|
|
|
#Ask the user for a new repository name
|
|
|
|
read rname
|
|
|
|
echo Enter authors
|
|
|
|
#Ask the user for project authors
|
|
|
|
read projectAuthors
|
|
|
|
#Initialize an empty git repo
|
|
|
|
git init
|
|
|
|
#Create a first empty comment
|
|
|
|
git commit -m "initial commit" --allow-empty
|
|
|
|
#Add a dummy remote in order for tea to work(~eh)
|
|
|
|
git remote add dummy http://localhost/dummy
|
|
|
|
#Create a new repository on gitea
|
|
|
|
tea repos create --name $rname
|
|
|
|
#Remove the dummy remote
|
|
|
|
git remote remove dummy
|
|
|
|
#Add the actual remote
|
|
|
|
git remote add $rname https://git.01.kood.tech/papshmeare/$rname.git
|
|
|
|
#Set upstream so that push can be used without specifying the name
|
|
|
|
git push -u $rname master
|
|
|
|
#Initialize package.json
|
|
|
|
npm init -y
|
|
|
|
#Add authors to package.json
|
|
|
|
npm pkg set author="$projectAuthors"
|
|
|
|
#Create a separate folder for the source code
|
|
|
|
mkdir src
|
|
|
|
#Create index.js with a simple Hello world(For testing purposes)
|
|
|
|
touch src/index.js && echo "console.log('Hello World!')" >> src/index.js
|
|
|
|
#Create test.js with sample tests(for AVA testing purposes)
|
|
|
|
touch src/test.js && echo -e "import test from 'ava';\ntest('foo', (t) => {\n t.pass();\n});\n\ntest('bar', async (t) => {\n const bar = Promise.resolve('bar');\n t.is(await bar, 'barr');\n});" >> src/test.js
|
|
|
|
#Untrack /node_modules
|
|
|
|
touch .gitignore && echo "/node_modules" >> .gitignore
|
|
|
|
#Install prettier as a dev dependency
|
|
|
|
npm install -D prettier eslint
|
|
|
|
#Install prettier-plugin to work with ESLint
|
|
|
|
npm install --save-dev eslint-plugin-prettier && npm install --save-dev --save-exact prettier
|
|
|
|
npm install --save-dev eslint-config-prettier
|
|
|
|
#Initialize empty prettier config
|
|
|
|
touch .prettierrc && echo "{}" >> .prettierrc
|
|
|
|
#Initialize eslintrc properties
|
|
|
|
touch .eslintrc.yml && echo -e "extends:\n - eslint:recommended\n - plugin:prettier/recommended\nenv:\n node: true\n browser: true\n es2022: true\n\nplugins:\n - prettier\nrules:\n prettier/prettier: error\nparserOptions:\n ecmaVersion: latest\n sourceType: module
|
|
|
|
" >> .eslintrc.yml
|
|
|
|
#Create a linting script in package.json
|
|
|
|
npm set-script lint "eslint src"
|
|
|
|
#Install husky as a dev dependency, configure husky
|
|
|
|
npm install husky -D
|
|
|
|
npm set-script prepare "husky install"
|
|
|
|
npm run prepare
|
|
|
|
#Create a pre-commit script to force linting and tests to pass
|
|
|
|
npx husky add .husky/pre-commit "npm run lint && npm run test"
|
|
|
|
git add .husky/pre-commit
|
|
|
|
#Add unit testing through AVA
|
|
|
|
npm init ava
|
|
|
|
#Set package.json attribute type to module
|
|
|
|
npm pkg set type=module
|
|
|
|
#Add git alias for a formatted git log command(git lg)
|
|
|
|
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
|
|
|
#Add git alias for adding, commiting and pushing(git p)
|
|
|
|
git config --global alias.p '!f() { git add . && git commit -am "$@" && git push; }; f'
|
|
|
|
|
|
|
|
touch Readme.md && echo -e "# Welcome to $rname! \n## Contacts\n[Discord](https://discordapp.com/users/859153825075691530/)\n[Telegram](https://t.me/aleksei_baranovski_tln)\n## Authors\n$projectAuthors" >> Readme.md
|
|
|
|
|