neocities 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66e57f453b9ea7929315daf45943965369a7d9ee
4
- data.tar.gz: 1329416d9d7ffde417ba98ba67c0e050fff11fec
3
+ metadata.gz: 91023e44cb2b6df2ed6014513a925da7b00420f7
4
+ data.tar.gz: 728a534ab0854def9a92ce9397aca1b5b07ca80b
5
5
  SHA512:
6
- metadata.gz: c3510f9cb980ffbb3c163ff2698421f2a97318b3dbcc07fb50db7a3774dd5d8b4192aac0db600684852fe234dc0335551f34c1f79d8b74104f486ccbec0f0998
7
- data.tar.gz: 67772ce43a82756e3a9ebf91929bf41e9a154885d5f4ccf4bd20a7821fbdca0aa03acd2d0d061a74bb2416ad9261a9f9c86cbedb5f67bcfcdd863ecd4d133afc
6
+ metadata.gz: 8c9e360c1d69af9f34d5ba7be22dc87944e827e781a2f689212d39e75d5520cf08767510c9f590b28ab1213ed510b427e218c8cccbb9f9ecf86f26de866942c4
7
+ data.tar.gz: 40f7d15988184963237693961b240ad5467eb231eb2bee559fa7d5ec527f585526573fef66936bc46ad1a1e098ea002727020929b87707f69c8ea609a5fd34d8
data/.gitignore CHANGED
@@ -1,17 +1,2 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
1
  Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
2
+ test.rb
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in neocities-ruby.gemspec
4
2
  gemspec
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/neocities'
3
+ cli = Neocities::CLI.new ARGV
4
+ cli.run
@@ -0,0 +1,3 @@
1
+ require_relative 'neocities/version'
2
+ require_relative 'neocities/client'
3
+ require_relative 'neocities/cli'
@@ -0,0 +1,341 @@
1
+ require 'pathname'
2
+ require 'pastel'
3
+ require 'tty/table'
4
+ require 'tty/prompt'
5
+ require 'fileutils'
6
+ require 'buff/ignore'
7
+
8
+ module Neocities
9
+ class CLI
10
+ API_KEY_PATH = ENV['HOME']+'/.neocities/api_key'
11
+ SUBCOMMANDS = %w{upload delete list info sync pizza}
12
+ HELP_SUBCOMMANDS = ['-h', '--help', 'help']
13
+ PENELOPE_MOUTHS = %w{^ o ~ - v U}
14
+ PENELOPE_EYES = %w{o ~ O}
15
+
16
+ def initialize(argv)
17
+ @argv = argv.dup
18
+ @pastel = Pastel.new eachline: "\n"
19
+ @subcmd = @argv.first
20
+ @subargs = @argv[1..@argv.length]
21
+ @prompt = TTY::Prompt.new
22
+ @api_key = ENV['NEOCITIES_API_KEY'] || nil
23
+ end
24
+
25
+ def display_response(resp)
26
+ if resp[:result] == 'success'
27
+ puts "#{@pastel.green.bold 'SUCCESS:'} #{resp[:message]}"
28
+ else
29
+ out = "#{@pastel.red.bold 'ERROR:'} #{resp[:message]}"
30
+ out += " (#{resp[:error_type]})" if resp[:error_type]
31
+ puts out
32
+ end
33
+ end
34
+
35
+ def run
36
+ if @argv[0] == 'version'
37
+ puts Neocities::VERSION
38
+ exit
39
+ end
40
+
41
+ display_help_and_exit if @subcmd.nil? || @argv.include?(HELP_SUBCOMMANDS) || !SUBCOMMANDS.include?(@subcmd)
42
+ send "display_#{@subcmd}_help_and_exit" if @subargs.empty?
43
+
44
+ begin
45
+ @api_key = File.read API_KEY_PATH
46
+ rescue Errno::ENOENT
47
+ @api_key = nil
48
+ end
49
+
50
+ if @api_key.nil?
51
+ puts "Please login to get your API key:"
52
+
53
+ if !@sitename && !@password
54
+ @sitename = @prompt.ask('sitename:', default: ENV['NEOCITIES_SITENAME'])
55
+ @password = @prompt.mask('password:', default: ENV['NEOCITIES_PASSWORD'])
56
+ end
57
+
58
+ @client = Neocities::Client.new sitename: @sitename, password: @password
59
+
60
+ res = @client.key
61
+ if res[:api_key]
62
+ FileUtils.mkdir_p Pathname(API_KEY_PATH).dirname
63
+ File.write API_KEY_PATH, res[:api_key]
64
+ puts "The api key for #{@pastel.bold @sitename} has been stored in #{@pastel.bold API_KEY_PATH}."
65
+ else
66
+ display_response resp
67
+ exit
68
+ end
69
+ else
70
+ @client = Neocities::Client.new api_key: @api_key
71
+ end
72
+
73
+ send @subcmd
74
+ end
75
+
76
+ def delete
77
+ @subargs.each do |file|
78
+ puts @pastel.bold("Deleting #{file} ...")
79
+ resp = @client.delete file
80
+
81
+ display_response resp
82
+ end
83
+ end
84
+
85
+ def info
86
+ resp = @client.info(@subargs[0] || @sitename)
87
+
88
+ if resp[:result] == 'error'
89
+ display_response resp
90
+ exit
91
+ end
92
+
93
+ out = []
94
+
95
+ resp[:info].each do |k,v|
96
+ v = Time.parse(v).localtime if k == :created_at || k == :last_updated
97
+ out.push [@pastel.bold(k), v]
98
+ end
99
+
100
+ puts TTY::Table.new(out).to_s
101
+ exit
102
+ end
103
+
104
+ def list
105
+ if @subargs.delete('-d') == '-d'
106
+ @detail = true
107
+ end
108
+
109
+ if @subargs.delete('-a')
110
+ @subargs[0] = nil
111
+ end
112
+
113
+ resp = @client.list @subargs[0]
114
+
115
+ if resp[:result] == 'error'
116
+ display_response resp
117
+ exit
118
+ end
119
+
120
+ if @detail
121
+ out = [
122
+ [@pastel.bold('Path'), @pastel.bold('Size'), @pastel.bold('Updated')]
123
+ ]
124
+ resp[:files].each do |file|
125
+ out.push([
126
+ @pastel.send(file[:is_directory] ? :blue : :green).bold(file[:path]),
127
+ file[:size] || '',
128
+ Time.parse(file[:updated_at]).localtime
129
+ ])
130
+ end
131
+ puts TTY::Table.new(out).to_s
132
+ exit
133
+ end
134
+
135
+ resp[:files].each do |file|
136
+ puts @pastel.send(file[:is_directory] ? :blue : :green).bold(file[:path])
137
+ end
138
+ end
139
+
140
+ def sync
141
+ @no_gitignore = false
142
+ @excluded_files = []
143
+ loop {
144
+ case @subargs[0]
145
+ when '--no-gitignore' then @subargs.shift; @no_gitignore = true
146
+ when '-e' then @subargs.shift; @excluded_files.push(@subargs.shift)
147
+ when /^-/ then puts(@pastel.red.bold("Unknown option: #{@subargs[0].inspect}")); display_sync_help_and_exit
148
+ else break
149
+ end
150
+ }
151
+
152
+ root_path = Pathname @subargs[0]
153
+
154
+ if !root_path.exist?
155
+ display_response result: 'error', message: "path #{root_path} does not exist"
156
+ display_sync_help_and_exit
157
+ end
158
+
159
+ if !root_path.directory?
160
+ display_response result: 'error', message: 'provided path is not a directory'
161
+ display_sync_help_and_exit
162
+ end
163
+
164
+ Dir.chdir(root_path) do
165
+ paths = Dir.glob(File.join('**', '*'))
166
+
167
+ if @no_gitignore == false
168
+ begin
169
+ ignore = Buff::Ignore::IgnoreFile.new '.gitignore'
170
+ ignore.apply! paths
171
+ puts "Not syncing .gitignore entries (--no-gitignore to disable)"
172
+ rescue Buff::Ignore::IgnoreFileNotFound
173
+ end
174
+ end
175
+
176
+ paths.select! {|p| !@excluded_files.include?(p)}
177
+
178
+ paths.collect! {|path| Pathname path}
179
+
180
+ paths.each do |path|
181
+ next if path.directory?
182
+ print @pastel.bold("Syncing #{path} ... ")
183
+ resp = @client.upload path, path
184
+
185
+ if resp[:result] == 'success'
186
+ print @pastel.green.bold("SUCCESS") + "\n"
187
+ else
188
+ print "\n"
189
+ display_response resp
190
+ end
191
+ end
192
+ end
193
+ end
194
+
195
+ def upload
196
+ display_upload_help_and_exit if @subargs.empty?
197
+ @dir = ''
198
+
199
+ loop {
200
+ case @subargs[0]
201
+ when '-d' then @subargs.shift; @dir = @subargs.shift
202
+ when /^-/ then puts(@pastel.red.bold("Unknown option: #{@subargs[0].inspect}")); display_upload_help_and_exit
203
+ else break
204
+ end
205
+ }
206
+
207
+ @subargs.each do |path|
208
+ path = Pathname path
209
+
210
+ if !path.exist?
211
+ display_response result: 'error', message: "#{path} does not exist locally."
212
+ next
213
+ end
214
+
215
+ if path.directory?
216
+ puts "#{path} is a directory, skipping (see the sync command)"
217
+ next
218
+ end
219
+
220
+ remote_path = ['/', @dir, path.basename.to_s].join('/').gsub %r{/+}, '/'
221
+
222
+ puts @pastel.bold("Uploading #{path} to #{remote_path} ...")
223
+ resp = @client.upload path, remote_path
224
+ display_response resp
225
+ end
226
+ end
227
+
228
+ def display_pizza_help_and_exit
229
+ puts "Sorry, we're fresh out of dough today. Try again tomorrow."
230
+ exit
231
+ end
232
+
233
+ def display_list_help_and_exit
234
+ display_banner
235
+
236
+ puts <<HERE
237
+ #{@pastel.green.bold 'list'} - List files on your Neocities site
238
+
239
+ #{@pastel.dim 'Examples:'}
240
+
241
+ #{@pastel.green '$ neocities list /'} List files in your root directory
242
+
243
+ #{@pastel.green '$ neocities list -a'} Recursively display all files and directories
244
+
245
+ #{@pastel.green '$ neocities list -d /mydir'} Show detailed information on /mydir
246
+
247
+ HERE
248
+ exit
249
+ end
250
+
251
+ def display_delete_help_and_exit
252
+ display_banner
253
+
254
+ puts <<HERE
255
+ #{@pastel.green.bold 'delete'} - Delete files on your Neocities site
256
+
257
+ #{@pastel.dim 'Examples:'}
258
+
259
+ #{@pastel.green '$ neocities delete myfile.jpg'} Delete myfile.jpg
260
+
261
+ #{@pastel.green '$ neocities delete myfile.jpg myfile2.jpg'} Delete myfile.jpg and myfile2.jpg
262
+
263
+ HERE
264
+ exit
265
+ end
266
+
267
+ def display_upload_help_and_exit
268
+ display_banner
269
+
270
+ puts <<HERE
271
+ #{@pastel.green.bold 'upload'} - Upload individual files to your Neocities site
272
+
273
+ #{@pastel.dim 'Examples:'}
274
+
275
+ #{@pastel.green '$ neocities upload img.jpg img2.jpg'} Upload images to the root of your site
276
+
277
+ #{@pastel.green '$ neocities upload -d images img.jpg'} Upload img.jpg to the 'images' directory on your site
278
+
279
+ HERE
280
+ exit
281
+ end
282
+
283
+ def display_sync_help_and_exit
284
+ display_banner
285
+
286
+ puts <<HERE
287
+ #{@pastel.green.bold 'sync'} - Upload a local directory to your Neocities site
288
+
289
+ #{@pastel.dim 'Examples:'}
290
+
291
+ #{@pastel.green '$ neocities sync .'} Recursively upload current directory
292
+
293
+ #{@pastel.green '$ neocities sync -e node_modules -e secret.txt .'} Exclude certain files from sync
294
+
295
+ #{@pastel.green '$ neocities sync --no-gitignore .'} Don't use .gitignore to exclude files
296
+
297
+ HERE
298
+ exit
299
+ end
300
+
301
+ def display_info_help_and_exit
302
+ display_banner
303
+
304
+ puts <<HERE
305
+ #{@pastel.green.bold 'info'} - Get site info
306
+
307
+ #{@pastel.dim 'Examples:'}
308
+
309
+ #{@pastel.green '$ neocities info fauux'} Gets info for 'fauux' site
310
+
311
+ HERE
312
+ exit
313
+ end
314
+
315
+ def display_banner
316
+ puts <<HERE
317
+
318
+ |\\---/|
319
+ | #{PENELOPE_EYES.sample}_#{PENELOPE_EYES.sample} | #{@pastel.on_cyan.bold ' Neocities '}
320
+ \\_#{PENELOPE_MOUTHS.sample}_/
321
+
322
+ HERE
323
+ end
324
+
325
+ def display_help_and_exit
326
+ display_banner
327
+ puts <<HERE
328
+ #{@pastel.dim 'Subcommands:'}
329
+ sync Recursively upload a local directory to your site
330
+ upload Upload individual files to your Neocities site
331
+ delete Delete files from your Neocities site
332
+ list List files from your Neocities site
333
+ info Information and stats for your site
334
+ version Unceremoniously display version and self destruct
335
+ pizza Order a free pizza
336
+
337
+ HERE
338
+ exit
339
+ end
340
+ end
341
+ end
@@ -0,0 +1,55 @@
1
+ require 'http'
2
+ require 'json'
3
+ require 'pathname'
4
+
5
+ module Neocities
6
+ class Client
7
+ API_URI = 'https://neocities.org/api/'
8
+
9
+ def initialize(opts={})
10
+ if opts[:api_key]
11
+ @http = HTTP.auth "Bearer #{opts[:api_key]}"
12
+ elsif opts[:sitename] && opts[:password]
13
+ @http = HTTP.basic_auth user: opts[:sitename], pass: opts[:password]
14
+ else
15
+ raise ArgumentError, 'client requires a login (sitename/password) or an api_key'
16
+ end
17
+ end
18
+
19
+ def list(path=nil)
20
+ run :get, 'list', params: {path: path}
21
+ end
22
+
23
+ def key
24
+ run :get, 'key', {}
25
+ end
26
+
27
+ def upload(path, remote_path=nil)
28
+ path = Pathname path
29
+
30
+ unless path.exist?
31
+ raise ArgumentError, "#{path.to_s} does not exist."
32
+ end
33
+
34
+ run :post, 'upload', form: {
35
+ (remote_path || path.basename) => HTTP::FormData::File.new(path.to_s)
36
+ }
37
+ end
38
+
39
+ def delete(*paths)
40
+ run :post, 'delete', form: {'filenames[]' => paths}
41
+ end
42
+
43
+ def info(sitename)
44
+ run :get, 'info', params: {sitename: sitename}
45
+ end
46
+
47
+ private
48
+
49
+ def run(meth, path, args)
50
+ resp = @http.send(meth, API_URI+path, args)
51
+ JSON.parse resp.body, symbolize_names: true
52
+ end
53
+
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module Neocities
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.2'
3
3
  end
@@ -7,15 +7,27 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "neocities"
8
8
  spec.version = Neocities::VERSION
9
9
  spec.authors = ["Kyle Drake"]
10
- spec.email = ["kyle@kyledrake.net"]
11
- spec.summary = %q{Library for the NeoCities.org API}
10
+ spec.email = ["contact@neocities.org"]
11
+ spec.summary = %q{Neocities.org CLI and API client}
12
12
  spec.homepage = "https://neocities.org"
13
13
  spec.license = "MIT"
14
- spec.files = `git ls-files -z`.split("\x0")
15
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
14
+ spec.files = `git ls-files | grep -Ev '^(test)'`.split("\n")
15
+ spec.executables = ['neocities']
16
+ spec.test_files = spec.files.grep(%r{^(tests)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_development_dependency "bundler", "~> 1.5"
20
- spec.add_development_dependency "rake"
19
+ spec.add_dependency 'tty-table', '~> 0.8', '>= 0.8.0'
20
+ spec.add_dependency 'tty-prompt', '~> 0.12', '>= 0.12.0'
21
+ spec.add_dependency 'pastel', '~> 0.7', '>= 0.7.1'
22
+ spec.add_dependency 'http', '~> 2.2', '>= 2.2.2'
23
+ spec.add_dependency 'buff-ignore', '~> 1.2'
24
+
25
+ # spec.add_development_dependency 'rake', '~> 10.0'
26
+ # spec.add_development_dependency 'faker'
27
+ # spec.add_development_dependency 'minitest'
28
+ # spec.add_development_dependency 'minitest-reporters'
29
+ # spec.add_development_dependency 'rack-test'
30
+ # spec.add_development_dependency 'mocha'
31
+ # spec.add_development_dependency 'webmock'
32
+ # spec.add_development_dependency 'simplecov'
21
33
  end
metadata CHANGED
@@ -1,56 +1,123 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neocities
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Drake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-11 00:00:00.000000000 Z
11
+ date: 2017-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: tty-table
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
20
- type: :development
19
+ version: '0.8'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.8.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.8'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: tty-prompt
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.12'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.12.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.12'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.12.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: pastel
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.7'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.7.1
63
+ type: :runtime
21
64
  prerelease: false
22
65
  version_requirements: !ruby/object:Gem::Requirement
23
66
  requirements:
24
67
  - - "~>"
25
68
  - !ruby/object:Gem::Version
26
- version: '1.5'
69
+ version: '0.7'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.7.1
27
73
  - !ruby/object:Gem::Dependency
28
- name: rake
74
+ name: http
29
75
  requirement: !ruby/object:Gem::Requirement
30
76
  requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '2.2'
31
80
  - - ">="
32
81
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
82
+ version: 2.2.2
83
+ type: :runtime
35
84
  prerelease: false
36
85
  version_requirements: !ruby/object:Gem::Requirement
37
86
  requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.2'
38
90
  - - ">="
39
91
  - !ruby/object:Gem::Version
40
- version: '0'
92
+ version: 2.2.2
93
+ - !ruby/object:Gem::Dependency
94
+ name: buff-ignore
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '1.2'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '1.2'
41
107
  description:
42
108
  email:
43
- - kyle@kyledrake.net
44
- executables: []
109
+ - contact@neocities.org
110
+ executables:
111
+ - neocities
45
112
  extensions: []
46
113
  extra_rdoc_files: []
47
114
  files:
48
115
  - ".gitignore"
49
116
  - Gemfile
50
- - LICENSE.txt
51
- - README.md
52
- - Rakefile
53
- - lib/neocities/neocities.rb
117
+ - bin/neocities
118
+ - lib/neocities.rb
119
+ - lib/neocities/cli.rb
120
+ - lib/neocities/client.rb
54
121
  - lib/neocities/version.rb
55
122
  - neocities.gemspec
56
123
  homepage: https://neocities.org
@@ -73,8 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
140
  version: '0'
74
141
  requirements: []
75
142
  rubyforge_project:
76
- rubygems_version: 2.2.2
143
+ rubygems_version: 2.6.11
77
144
  signing_key:
78
145
  specification_version: 4
79
- summary: Library for the NeoCities.org API
146
+ summary: Neocities.org CLI and API client
80
147
  test_files: []
@@ -1,22 +0,0 @@
1
- Copyright (c) 2014 Kyle Drake
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1,29 +0,0 @@
1
- # Neocities
2
-
3
- TODO: Write a gem description
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'neocities'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install neocities
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
- ## Contributing
24
-
25
- 1. Fork it ( http://github.com/<my-github-username>/neocities/fork )
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"
@@ -1,4 +0,0 @@
1
- require "neocities/version"
2
-
3
- module Neocities
4
- end