neocities 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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