discorb 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_version.yml +2 -2
  3. data/.rubocop.yml +12 -75
  4. data/Changelog.md +10 -0
  5. data/Rakefile +482 -454
  6. data/lib/discorb/allowed_mentions.rb +68 -72
  7. data/lib/discorb/app_command/command.rb +466 -398
  8. data/lib/discorb/app_command/common.rb +65 -25
  9. data/lib/discorb/app_command/handler.rb +304 -266
  10. data/lib/discorb/app_command.rb +5 -5
  11. data/lib/discorb/application.rb +198 -197
  12. data/lib/discorb/asset.rb +101 -101
  13. data/lib/discorb/attachment.rb +134 -119
  14. data/lib/discorb/audit_logs.rb +412 -385
  15. data/lib/discorb/automod.rb +279 -269
  16. data/lib/discorb/channel/base.rb +107 -108
  17. data/lib/discorb/channel/category.rb +32 -32
  18. data/lib/discorb/channel/container.rb +44 -44
  19. data/lib/discorb/channel/dm.rb +26 -28
  20. data/lib/discorb/channel/guild.rb +311 -246
  21. data/lib/discorb/channel/stage.rb +156 -140
  22. data/lib/discorb/channel/text.rb +430 -336
  23. data/lib/discorb/channel/thread.rb +374 -325
  24. data/lib/discorb/channel/voice.rb +85 -79
  25. data/lib/discorb/channel.rb +5 -5
  26. data/lib/discorb/client.rb +635 -621
  27. data/lib/discorb/color.rb +178 -182
  28. data/lib/discorb/common.rb +168 -164
  29. data/lib/discorb/components/button.rb +107 -106
  30. data/lib/discorb/components/select_menu.rb +157 -145
  31. data/lib/discorb/components/text_input.rb +103 -106
  32. data/lib/discorb/components.rb +68 -66
  33. data/lib/discorb/dictionary.rb +135 -135
  34. data/lib/discorb/embed.rb +404 -398
  35. data/lib/discorb/emoji.rb +309 -302
  36. data/lib/discorb/emoji_table.rb +16099 -8857
  37. data/lib/discorb/error.rb +131 -131
  38. data/lib/discorb/event.rb +360 -314
  39. data/lib/discorb/event_handler.rb +39 -39
  40. data/lib/discorb/exe/about.rb +17 -17
  41. data/lib/discorb/exe/irb.rb +72 -67
  42. data/lib/discorb/exe/new.rb +323 -315
  43. data/lib/discorb/exe/run.rb +69 -68
  44. data/lib/discorb/exe/setup.rb +57 -55
  45. data/lib/discorb/exe/show.rb +12 -12
  46. data/lib/discorb/extend.rb +25 -45
  47. data/lib/discorb/extension.rb +89 -83
  48. data/lib/discorb/flag.rb +126 -128
  49. data/lib/discorb/gateway.rb +984 -804
  50. data/lib/discorb/gateway_events.rb +670 -638
  51. data/lib/discorb/gateway_requests.rb +45 -48
  52. data/lib/discorb/guild.rb +2115 -1626
  53. data/lib/discorb/guild_template.rb +280 -241
  54. data/lib/discorb/http.rb +247 -232
  55. data/lib/discorb/image.rb +42 -42
  56. data/lib/discorb/integration.rb +169 -161
  57. data/lib/discorb/intents.rb +161 -163
  58. data/lib/discorb/interaction/autocomplete.rb +76 -62
  59. data/lib/discorb/interaction/command.rb +279 -224
  60. data/lib/discorb/interaction/components.rb +114 -104
  61. data/lib/discorb/interaction/modal.rb +36 -32
  62. data/lib/discorb/interaction/response.rb +379 -336
  63. data/lib/discorb/interaction/root.rb +271 -257
  64. data/lib/discorb/interaction.rb +5 -5
  65. data/lib/discorb/invite.rb +154 -153
  66. data/lib/discorb/member.rb +344 -311
  67. data/lib/discorb/message.rb +615 -544
  68. data/lib/discorb/message_meta.rb +197 -186
  69. data/lib/discorb/modules.rb +371 -290
  70. data/lib/discorb/permission.rb +305 -291
  71. data/lib/discorb/presence.rb +352 -346
  72. data/lib/discorb/rate_limit.rb +81 -76
  73. data/lib/discorb/reaction.rb +55 -54
  74. data/lib/discorb/role.rb +272 -240
  75. data/lib/discorb/shard.rb +76 -74
  76. data/lib/discorb/sticker.rb +193 -171
  77. data/lib/discorb/user.rb +205 -188
  78. data/lib/discorb/utils/colored_puts.rb +16 -16
  79. data/lib/discorb/utils.rb +12 -16
  80. data/lib/discorb/voice_state.rb +305 -281
  81. data/lib/discorb/webhook.rb +537 -507
  82. data/lib/discorb.rb +62 -56
  83. data/sig/discorb/application.rbs +2 -0
  84. data/sig/discorb/automod.rbs +10 -1
  85. data/sig/discorb/guild.rbs +2 -0
  86. data/sig/discorb/message.rbs +2 -0
  87. data/sig/discorb/user.rbs +22 -20
  88. metadata +2 -2
@@ -1,315 +1,323 @@
1
- # frozen_string_literal: true
2
-
3
- # description: Make files for the discorb project.
4
-
5
- require "optparse"
6
- require "discorb"
7
- require "pathname"
8
- require_relative "../utils/colored_puts"
9
-
10
- $path = Dir.pwd
11
-
12
- # @private
13
- FILES = {
14
- "main.rb" => <<~'RUBY',
15
- # frozen_string_literal: true
16
-
17
- require "discorb"
18
- require "dotenv/load" # Load environment variables from .env file.
19
-
20
- client = Discorb::Client.new # Create client for connecting to Discord
21
-
22
- client.once :standby do
23
- puts "Logged in as #{client.user}" # Prints username of logged in user
24
- end
25
-
26
- client.run ENV["%<token>s"] # Starts client
27
- RUBY
28
- "main.rb_nc" => <<~'RUBY',
29
- # frozen_string_literal: true
30
-
31
- require "discorb"
32
- require "dotenv/load"
33
-
34
- client = Discorb::Client.new
35
-
36
- client.once :standby do
37
- puts "Logged in as #{client.user}"
38
- end
39
-
40
- client.run ENV["%<token>s"]
41
- RUBY
42
- ".env" => <<~BASH,
43
- # Put your token after `%<token>s=`
44
- %<token>s=
45
- BASH
46
- ".env_nc" => <<~BASH,
47
- %<token>s=
48
- BASH
49
- ".gitignore" => <<~GITIGNORE,
50
- *.gem
51
- *.rbc
52
- /.config
53
- /coverage/
54
- /InstalledFiles
55
- /pkg/
56
- /spec/reports/
57
- /spec/examples.txt
58
- /test/tmp/
59
- /test/version_tmp/
60
- /tmp/
61
-
62
- # Used by dotenv library to load environment variables.
63
- .env
64
-
65
- # Ignore Byebug command history file.
66
- .byebug_history
67
-
68
- ## Specific to RubyMotion:
69
- .dat*
70
- .repl_history
71
- build/
72
- *.bridgesupport
73
- build-iPhoneOS/
74
- build-iPhoneSimulator/
75
-
76
- ## Specific to RubyMotion (use of CocoaPods):
77
- #
78
- # We recommend against adding the Pods directory to your .gitignore. However
79
- # you should judge for yourself, the pros and cons are mentioned at:
80
- # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
81
- #
82
- # vendor/Pods/
83
-
84
- ## Documentation cache and generated files:
85
- /.yardoc/
86
- /_yardoc/
87
- /doc/
88
- /rdoc/
89
-
90
- ## Environment normalization:
91
- /.bundle/
92
- /vendor/bundle
93
- /lib/bundler/man/
94
-
95
- # for a library or gem, you might want to ignore these files since the code is
96
- # intended to run in multiple environments; otherwise, check them in:
97
- # Gemfile.lock
98
- # .ruby-version
99
- # .ruby-gemset
100
-
101
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
102
- .rvmrc
103
-
104
- # Used by RuboCop. Remote config files pulled in from inherit_from directive.
105
- # .rubocop-https?--*
106
-
107
- # This gitignore is from github/gitignore.
108
- # https://github.com/github/gitignore/blob/master/Ruby.gitignore
109
- GITIGNORE
110
- ".gitignore_nc" => <<~GITIGNORE,
111
- *.gem
112
- *.rbc
113
- /.config
114
- /coverage/
115
- /InstalledFiles
116
- /pkg/
117
- /spec/reports/
118
- /spec/examples.txt
119
- /test/tmp/
120
- /test/version_tmp/
121
- /tmp/
122
-
123
- .env
124
-
125
- .byebug_history
126
-
127
- .dat*
128
- .repl_history
129
- build/
130
- *.bridgesupport
131
- build-iPhoneOS/
132
- build-iPhoneSimulator/
133
-
134
- /.yardoc/
135
- /_yardoc/
136
- /doc/
137
- /rdoc/
138
-
139
- /.bundle/
140
- /vendor/bundle
141
- /lib/bundler/man/
142
-
143
- .rvmrc
144
- GITIGNORE
145
- "Gemfile" => <<~RUBY,
146
- # frozen_string_literal: true
147
-
148
- source "https://rubygems.org"
149
-
150
- git_source(:github) { |repo_name| "https://github.com/\#{repo_name}" }
151
-
152
- gem "discorb", "~> #{Discorb::VERSION}"
153
- gem "dotenv", "~> 2.7"
154
-
155
- ruby "~> #{RUBY_VERSION.split(".")[0]}.#{RUBY_VERSION.split(".")[1]}"
156
- RUBY
157
- ".env.sample" => <<~BASH,
158
- %<token>s=
159
- BASH
160
- "README.md" => <<~MARKDOWN,
161
- # %<name>s
162
-
163
- Welcome to your bot: %<name>s!
164
-
165
- TODO: Write your bot's description here.
166
-
167
- ## Usage
168
-
169
- TODO: Write your bot's usage here.
170
-
171
- ## Features
172
-
173
- TODO: Write your bot's features here.
174
-
175
- ## How to host
176
-
177
- 1. Clone the repository.
178
- 2. Run `bundle install`.
179
- 3. Get your bot's token from the Discord developer portal.
180
- 4. Copy `.env.sample` to `.env` and fill in the token.
181
- 5. Run `bundle exec discorb run`.
182
-
183
- TODO: Write your own customizations here.
184
-
185
- ## License
186
-
187
- TODO: Write your bot's license here.
188
- See https://choosealicense.com/ for more information.
189
-
190
- MARKDOWN
191
- }.freeze
192
-
193
- # @private
194
- def create_file(name)
195
- template_name = name
196
- template_name += "_nc" if !$values[:comment] && FILES.key?(name + "_nc")
197
- content = format(FILES[template_name], token: $values[:token], name: $values[:name])
198
- File.write($path + "/#{name}", content, mode: "wb")
199
- end
200
-
201
- # @private
202
- def make_files
203
- iputs "Making files..."
204
- create_file("main.rb")
205
- create_file(".env")
206
- sputs "Made files.\n"
207
- end
208
-
209
- # @private
210
- def bundle_init
211
- iputs "Initializing bundle..."
212
- create_file("Gemfile")
213
- iputs "Installing gems..."
214
- system({ "BUNDLE_GEMFILE" => nil }, "bundle install", chdir: $path)
215
- sputs "Installed gems.\n"
216
- end
217
-
218
- # @private
219
- def git_init
220
- create_file(".gitignore")
221
- iputs "Initializing git repository..."
222
- system "git init", chdir: $path
223
- sputs "Initialized repository.\n"
224
- end
225
-
226
- # @private
227
- def make_descs
228
- iputs "Making descriptions..."
229
- create_file(".env.sample")
230
- create_file("README.md")
231
- sputs "Made descriptions.\n"
232
- end
233
-
234
- opt = OptionParser.new <<~BANNER
235
- A tool to make a new project.
236
-
237
- Usage: discorb new [options] [dir]
238
-
239
- dir The directory to make the files in.
240
- BANNER
241
-
242
- $values = {
243
- bundle: true,
244
- git: false,
245
- force: false,
246
- token: "TOKEN",
247
- descs: false,
248
- name: nil,
249
- comment: true,
250
- }
251
-
252
- opt.on("--[no-]bundle", "Whether to use bundle. Default to true.") do |v|
253
- $values[:bundle] = v
254
- end
255
-
256
- opt.on("--[no-]git", "Whether to initialize git. Default to false.") do |v|
257
- $values[:git] = v
258
- end
259
-
260
- opt.on("--[no-]descs", "Whether to put some file for description. Default to false.") do |v|
261
- $values[:descs] = v
262
- end
263
-
264
- opt.on("--[no-]comment", "Whether to write comment. Default to true.") do |v|
265
- $values[:comment] = v
266
- end
267
-
268
- opt.on("-t NAME", "--token NAME", "The name of token environment variable. Default to TOKEN.") do |v|
269
- $values[:token] = v
270
- end
271
-
272
- opt.on("-n NAME", "--name NAME", "The name of your project. Default to the directory name.") do |v|
273
- $values[:name] = v
274
- end
275
-
276
- opt.on("--force", "-f", "Whether to force use directory. Default to false.") do |v|
277
- $values[:force] = v
278
- end
279
-
280
- opt.parse!(ARGV)
281
-
282
- if (dir = ARGV[0])
283
- $path += "/#{dir}"
284
- $path = File.expand_path($path)
285
- dir = File.basename($path)
286
- if Dir.exist?($path)
287
- if Dir.empty?($path)
288
- iputs "Found \e[30m#{dir}\e[90m and empty, using this directory."
289
- elsif $values[:force]
290
- iputs "Found \e[30m#{dir}\e[90m and not empty, but force is on, using this directory."
291
- else
292
- eputs "Directory \e[31m#{dir}\e[91m already exists and not empty. Use \e[31m-f\e[91m to force."
293
- exit
294
- end
295
- else
296
- Dir.mkdir($path)
297
- iputs "Couldn't find \e[30m#{dir}\e[90m, created directory."
298
- end
299
- Dir.chdir($path)
300
- else
301
- puts opt
302
- abort
303
- end
304
-
305
- $values[:name] ||= Dir.pwd.split("/").last
306
-
307
- bundle_init if $values[:bundle]
308
-
309
- make_files
310
-
311
- make_descs if $values[:descs]
312
-
313
- git_init if $values[:git]
314
-
315
- sputs "\nSuccessfully made a new project at \e[32m#{Pathname.new($path).cleanpath.split[-1]}\e[92m."
1
+ # frozen_string_literal: true
2
+
3
+ # description: Make files for the discorb project.
4
+
5
+ require "optparse"
6
+ require "discorb"
7
+ require "pathname"
8
+ require_relative "../utils/colored_puts"
9
+
10
+ $path = Dir.pwd
11
+
12
+ # @private
13
+ FILES = {
14
+ "main.rb" => <<~'RUBY',
15
+ # frozen_string_literal: true
16
+
17
+ require "discorb"
18
+ require "dotenv/load" # Load environment variables from .env file.
19
+
20
+ client = Discorb::Client.new # Create client for connecting to Discord
21
+
22
+ client.once :standby do
23
+ puts "Logged in as #{client.user}" # Prints username of logged in user
24
+ end
25
+
26
+ client.run ENV["%<token>s"] # Starts client
27
+ RUBY
28
+ "main.rb_nc" => <<~'RUBY',
29
+ # frozen_string_literal: true
30
+
31
+ require "discorb"
32
+ require "dotenv/load"
33
+
34
+ client = Discorb::Client.new
35
+
36
+ client.once :standby do
37
+ puts "Logged in as #{client.user}"
38
+ end
39
+
40
+ client.run ENV["%<token>s"]
41
+ RUBY
42
+ ".env" => <<~BASH,
43
+ # Put your token after `%<token>s=`
44
+ %<token>s=
45
+ BASH
46
+ ".env_nc" => <<~BASH,
47
+ %<token>s=
48
+ BASH
49
+ ".gitignore" => <<~GITIGNORE,
50
+ *.gem
51
+ *.rbc
52
+ /.config
53
+ /coverage/
54
+ /InstalledFiles
55
+ /pkg/
56
+ /spec/reports/
57
+ /spec/examples.txt
58
+ /test/tmp/
59
+ /test/version_tmp/
60
+ /tmp/
61
+
62
+ # Used by dotenv library to load environment variables.
63
+ .env
64
+
65
+ # Ignore Byebug command history file.
66
+ .byebug_history
67
+
68
+ ## Specific to RubyMotion:
69
+ .dat*
70
+ .repl_history
71
+ build/
72
+ *.bridgesupport
73
+ build-iPhoneOS/
74
+ build-iPhoneSimulator/
75
+
76
+ ## Specific to RubyMotion (use of CocoaPods):
77
+ #
78
+ # We recommend against adding the Pods directory to your .gitignore. However
79
+ # you should judge for yourself, the pros and cons are mentioned at:
80
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
81
+ #
82
+ # vendor/Pods/
83
+
84
+ ## Documentation cache and generated files:
85
+ /.yardoc/
86
+ /_yardoc/
87
+ /doc/
88
+ /rdoc/
89
+
90
+ ## Environment normalization:
91
+ /.bundle/
92
+ /vendor/bundle
93
+ /lib/bundler/man/
94
+
95
+ # for a library or gem, you might want to ignore these files since the code is
96
+ # intended to run in multiple environments; otherwise, check them in:
97
+ # Gemfile.lock
98
+ # .ruby-version
99
+ # .ruby-gemset
100
+
101
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
102
+ .rvmrc
103
+
104
+ # Used by RuboCop. Remote config files pulled in from inherit_from directive.
105
+ # .rubocop-https?--*
106
+
107
+ # This gitignore is from github/gitignore.
108
+ # https://github.com/github/gitignore/blob/master/Ruby.gitignore
109
+ GITIGNORE
110
+ ".gitignore_nc" => <<~GITIGNORE,
111
+ *.gem
112
+ *.rbc
113
+ /.config
114
+ /coverage/
115
+ /InstalledFiles
116
+ /pkg/
117
+ /spec/reports/
118
+ /spec/examples.txt
119
+ /test/tmp/
120
+ /test/version_tmp/
121
+ /tmp/
122
+
123
+ .env
124
+
125
+ .byebug_history
126
+
127
+ .dat*
128
+ .repl_history
129
+ build/
130
+ *.bridgesupport
131
+ build-iPhoneOS/
132
+ build-iPhoneSimulator/
133
+
134
+ /.yardoc/
135
+ /_yardoc/
136
+ /doc/
137
+ /rdoc/
138
+
139
+ /.bundle/
140
+ /vendor/bundle
141
+ /lib/bundler/man/
142
+
143
+ .rvmrc
144
+ GITIGNORE
145
+ "Gemfile" => <<~RUBY,
146
+ # frozen_string_literal: true
147
+
148
+ source "https://rubygems.org"
149
+
150
+ git_source(:github) { |repo_name| "https://github.com/\#{repo_name}" }
151
+
152
+ gem "discorb", "~> #{Discorb::VERSION}"
153
+ gem "dotenv", "~> 2.7"
154
+
155
+ ruby "~> #{RUBY_VERSION.split(".")[0]}.#{RUBY_VERSION.split(".")[1]}"
156
+ RUBY
157
+ ".env.sample" => <<~BASH,
158
+ %<token>s=
159
+ BASH
160
+ "README.md" => <<~MARKDOWN
161
+ # %<name>s
162
+
163
+ Welcome to your bot: %<name>s!
164
+
165
+ TODO: Write your bot's description here.
166
+
167
+ ## Usage
168
+
169
+ TODO: Write your bot's usage here.
170
+
171
+ ## Features
172
+
173
+ TODO: Write your bot's features here.
174
+
175
+ ## How to host
176
+
177
+ 1. Clone the repository.
178
+ 2. Run `bundle install`.
179
+ 3. Get your bot's token from the Discord developer portal.
180
+ 4. Copy `.env.sample` to `.env` and fill in the token.
181
+ 5. Run `bundle exec discorb run`.
182
+
183
+ TODO: Write your own customizations here.
184
+
185
+ ## License
186
+
187
+ TODO: Write your bot's license here.
188
+ See https://choosealicense.com/ for more information.
189
+
190
+ MARKDOWN
191
+ }.freeze
192
+
193
+ # @private
194
+ def create_file(name)
195
+ template_name = name
196
+ template_name += "_nc" if !$values[:comment] && FILES.key?("#{name}_nc")
197
+ content =
198
+ format(FILES[template_name], token: $values[:token], name: $values[:name])
199
+ File.write($path + "/#{name}", content, mode: "wb")
200
+ end
201
+
202
+ # @private
203
+ def make_files
204
+ iputs "Making files..."
205
+ create_file("main.rb")
206
+ create_file(".env")
207
+ sputs "Made files.\n"
208
+ end
209
+
210
+ # @private
211
+ def bundle_init
212
+ iputs "Initializing bundle..."
213
+ create_file("Gemfile")
214
+ iputs "Installing gems..."
215
+ system({ "BUNDLE_GEMFILE" => nil }, "bundle install", chdir: $path)
216
+ sputs "Installed gems.\n"
217
+ end
218
+
219
+ # @private
220
+ def git_init
221
+ create_file(".gitignore")
222
+ iputs "Initializing git repository..."
223
+ system "git init", chdir: $path
224
+ sputs "Initialized repository.\n"
225
+ end
226
+
227
+ # @private
228
+ def make_descs
229
+ iputs "Making descriptions..."
230
+ create_file(".env.sample")
231
+ create_file("README.md")
232
+ sputs "Made descriptions.\n"
233
+ end
234
+
235
+ opt = OptionParser.new <<~BANNER
236
+ A tool to make a new project.
237
+
238
+ Usage: discorb new [options] [dir]
239
+
240
+ dir The directory to make the files in.
241
+ BANNER
242
+
243
+ $values = {
244
+ bundle: true,
245
+ git: false,
246
+ force: false,
247
+ token: "TOKEN",
248
+ descs: false,
249
+ name: nil,
250
+ comment: true
251
+ }
252
+
253
+ opt.on("--[no-]bundle", "Whether to use bundle. Default to true.") do |v|
254
+ $values[:bundle] = v
255
+ end
256
+
257
+ opt.on("--[no-]git", "Whether to initialize git. Default to false.") do |v|
258
+ $values[:git] = v
259
+ end
260
+
261
+ opt.on(
262
+ "--[no-]descs",
263
+ "Whether to put some file for description. Default to false."
264
+ ) { |v| $values[:descs] = v }
265
+
266
+ opt.on("--[no-]comment", "Whether to write comment. Default to true.") do |v|
267
+ $values[:comment] = v
268
+ end
269
+
270
+ opt.on(
271
+ "-t NAME",
272
+ "--token NAME",
273
+ "The name of token environment variable. Default to TOKEN."
274
+ ) { |v| $values[:token] = v }
275
+
276
+ opt.on(
277
+ "-n NAME",
278
+ "--name NAME",
279
+ "The name of your project. Default to the directory name."
280
+ ) { |v| $values[:name] = v }
281
+
282
+ opt.on(
283
+ "--force",
284
+ "-f",
285
+ "Whether to force use directory. Default to false."
286
+ ) { |v| $values[:force] = v }
287
+
288
+ opt.parse!(ARGV)
289
+
290
+ if (dir = ARGV[0])
291
+ $path += "/#{dir}"
292
+ $path = File.expand_path($path)
293
+ dir = File.basename($path)
294
+ if Dir.exist?($path)
295
+ if Dir.empty?($path)
296
+ iputs "Found \e[30m#{dir}\e[90m and empty, using this directory."
297
+ elsif $values[:force]
298
+ iputs "Found \e[30m#{dir}\e[90m and not empty, but force is on, using this directory."
299
+ else
300
+ eputs "Directory \e[31m#{dir}\e[91m already exists and not empty. Use \e[31m-f\e[91m to force."
301
+ exit
302
+ end
303
+ else
304
+ Dir.mkdir($path)
305
+ iputs "Couldn't find \e[30m#{dir}\e[90m, created directory."
306
+ end
307
+ Dir.chdir($path)
308
+ else
309
+ puts opt
310
+ abort
311
+ end
312
+
313
+ $values[:name] ||= Dir.pwd.split("/").last
314
+
315
+ bundle_init if $values[:bundle]
316
+
317
+ make_files
318
+
319
+ make_descs if $values[:descs]
320
+
321
+ git_init if $values[:git]
322
+
323
+ sputs "\nSuccessfully made a new project at \e[32m#{Pathname.new($path).cleanpath.split[-1]}\e[92m."