-
Notifications
You must be signed in to change notification settings - Fork 1
/
Customize.rb
251 lines (238 loc) · 7.88 KB
/
Customize.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
################################################
# CUSTOMIZATION SCRIPT #
# ==================== #
# Welcome to the version 2.0 of this template! #
# In this version, we aim to automatize the #
# setting up of your new repository with an #
# automated script. #
# This automation requires Ruby 2.5.0 or later #
# installed and the reading and writing #
# permissions to the repository's folder. #
# #
# Set the variables bellow to your project's #
# data BEFORE running the script. #
# Once the script is run, the adequate place- #
# holders are replaced, and subsequent runs of #
# this script will result in either nothing or #
# an error. #
# If you run this script by accident, pull the #
# template files from the repository (and #
# replace any conflicting files by the source #
# ones), then run this script once again. #
# This script will prompt if you are sure you #
# want to run it so you cannot blame the code. #
# :) #
################################################
################################################
# STRING VARIABLES #
################################################
# The full name of the project
name = "Project Name"
# The slug name for the project
# Ideally, the GitHub slug, for parity
slug = "project-name"
# Your author name (or pseudonym)
author = "Igor Padoim"
# Your GitHub username
github = "Nereare"
# Your email for contact purposes
email = "igorpadoim@gmail.com"
# Your website or GitHub profile
site = "https://nereare.com/"
# The long description of this project
# Used mainly in the README file
description = %Q{
Laboris enim tamen consequat magna. De duis incididunt excepteur o mentitum duis
voluptate. Commodo irure ipsum ad anim.Quem cupidatat eu quem irure. Quid non
commodo o culpa. Legam laborum exercitation, iis occaecat familiaritatem, de
tamen pariatur distinguantur, occaecat aliqua sed aliquip praetermissum. Quis
admodum ex singulis.
}
# The short description of this project
# Make it on-line
desc = "Ipsum elit illum cillum minim esse illum quis cillum multos"
# The copyright years of this project
# It is a string, so that a range of years can be used:
# E.g. "2019, 2021-2022" or "2004-2013"
year = "2022"
# The initial version of the project
# Do not include "v." or "v"
version = "0.1.0"
################################################
# FILE HOLDING VERSION NUMBER #
# This is an array of arrays and strings. #
# Each element of the main array is a list #
# item to be listed. #
# These items may be output as two things: #
# - If the item is a String, it will be just a #
# list item; and #
# - If the item is an array, this array must #
# contain two Strings which will output an #
# anchor (link), where the first string is #
# the link text and the second one the URI. #
################################################
files = [
"Any example files",
[
"Package JSON file",
"package.json"
]
]
################################################
# LICENSE #
# Here you chose your license for the project. #
# The default is the Hippocratic License. #
# If you want other licenses, below are some #
# commented others. #
# #
# NOTE #
# We >HIGHLY< disencourage the use of GNU GPL, #
# since it places economic freedom over basic #
# Human Rights. #
################################################
license = [
"Hippocratic License",
"./Lic_HL3.md",
"Hippocratic-3",
"https://firstdonoharm.dev/"
]
=begin
license = [
"GNU General Public License v3.0 or later",
"./Lic_GPL3.md",
"GPL-3.0-or-later",
"https://www.gnu.org/licenses/gpl-3.0.en.html"
]
license = [
"MIT License",
"./Lic_MIT.md",
"MIT",
"https://opensource.org/licenses/MIT"
]
license = [
"The Unlicense",
"./Lic_UnL.md",
"Unlicense",
"https://unlicense.org/"
]
license = [
"Do What The F*ck You Want To Public License",
"./Lic_WTFPL.md",
"WTFPL",
"http://www.wtfpl.net/"
]
=end
################################################
# SCRIPT #
# Here the script begins. #
# Any change below is made at your own risk. #
################################################
system("clear") || system("cls")
def to_the_hills(val)
puts "(Press any key to exit)"
gets
exit val
end
version_files = ""
files.each do |val|
if val.kind_of?(Array)
version_files += " - [" + val[0] + "](" + val[1] + ")\n"
else
version_files += " - " + val + "\n"
end
end
version_files.chomp!
description.strip!
puts "################################################"
puts "# CUSTOMIZATION SCRIPT #"
puts "# ==================== #"
puts "# Welcome to the customization script for my #"
puts "# repository template. #"
puts "# We will ask a few questions to confirm the #"
puts "# data we hope with our heart of hearts you #"
puts "# fed this script before running it. #"
puts "# Fret not, if you haven't done so, we won't #"
puts "# be deeply and unrevokably disappointed. :) #"
puts "################################################"
puts ""
puts "0. FIRST"
puts " Have you opened this script of your own voli-"
puts " tion? (y/N)"
reply = gets.chomp.downcase
if reply == "y"
puts "1. So, let's make some checks:"
checks = [
["project's full name", name],
["project's slugified name (GitHub repo)", slug],
["name or pseudonym", author],
["GitHub username", github],
["email", email],
["site", site],
["project's full description", description],
["project's short (one line) description", desc],
["project's year of copyright", year],
["project's initial version", version],
["project files containing such version", version_files],
["project's license", license[0]]
]
checks.each.with_index(1) do |v, i|
puts "1.#{i}. Is this your #{v[0]}? (Y/n)"
puts v[1]
reply = gets.chomp.downcase
if reply == "n"
puts "So, please, edit the script with the correct"
puts "value. :)"
to_the_hills 1
end
end
puts "2. Begining the customization process."
steps = [
["{{PKG_NAME}}", name],
["{{PKG_REPO}}", slug],
["{{PKG_AUTHOR}}", author],
["{{PKG_USERNAME}}", github],
["{{PKG_USEREMAIL}}", email],
["{{PKG_USERURI}}", site],
["{{PKG_DESCRIPTION}}", description],
["{{PKG_DESC}}", desc],
["{{PKG_YEAR}}", year],
["{{PKG_VERS}}", version],
["{{PKG_VERS_FILES}}", version_files],
["{{PKG_LICENSE_NAME}}", license[0]],
["{{PKG_LICENSE_SPDX}}", license[2]],
["{{PKG_LICENSE_URI}}", license[3]]
]
steps.each.with_index(1) do |v, i|
files = Dir["./*"]
files.each do |va|
contents = File.read(va)
contents.gsub!(Regexp.new(v[0]), v[1])
File.open(va, 'w') do |file|
file.write contents
end
end
puts " 2.#{i}. Replaced all #{v[0]} instances."
end
puts "3. Setting license."
license_files = Dir["./Lic_*"]
license_files.each.with_index(1) do |file, i|
if file != license[1]
puts " 3.#{i}. Deleting usused #{file} file."
File.delete(file)
else
puts " 3.#{i}. Setting #{file} file as LICENSE.md."
File.rename(file, "LICENSE.md")
end
end
puts "4. Do you want to delete this file? (Y/n)"
reply = gets.chomp.downcase
if reply != "n"
File.delete("Customize.rb")
end
puts "5. Everything set up!"
to_the_hills(0)
else
puts "That's alright..."
puts "Open the script without executing it, then."
to_the_hills 1
end