nodes 0.1.7 → 0.2.1
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.
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/{command.rb → nodes} +23 -32
- data/lib/nodes/file_node.rb +37 -0
- data/lib/nodes/node.rb +63 -0
- data/lib/nodes/point.rb +57 -0
- data/lib/nodes/version.rb +3 -0
- data/lib/nodes.rb +18 -58
- data/lib/rails/model.rb +16 -0
- data/metadata +85 -0
- data/nodes.gemspec +20 -0
- metadata +41 -65
- data/LICENSE +0 -0
- data/bin/point +0 -90
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Eugene Markine
|
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
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Nodes
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'nodes'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install nodes
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
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
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/{command.rb → nodes}
RENAMED
@@ -5,17 +5,17 @@
|
|
5
5
|
# Users can add, delete, edit nodes, manage access rights, etc.
|
6
6
|
#
|
7
7
|
# == Examples
|
8
|
-
# This command
|
9
|
-
#
|
8
|
+
# This command create new nodes in current directory:
|
9
|
+
# nodes init
|
10
10
|
#
|
11
11
|
# Other examples:
|
12
|
-
#
|
13
|
-
#
|
12
|
+
# nodes put
|
13
|
+
# nodes del
|
14
14
|
#
|
15
15
|
# == Usage
|
16
|
-
#
|
16
|
+
# nodes [options]
|
17
17
|
#
|
18
|
-
# For help use:
|
18
|
+
# For help use: nodes -h
|
19
19
|
#
|
20
20
|
# == Options
|
21
21
|
# -h, --help Displays help message
|
@@ -26,7 +26,7 @@
|
|
26
26
|
# Eugene Markine
|
27
27
|
#
|
28
28
|
# == Copyright
|
29
|
-
# Copyright (c)
|
29
|
+
# Copyright (c) 2013 EugeneLab. Licensed under the GNU General Public License (GPL), Version 2:
|
30
30
|
# http://www.opensource.org/licenses/gpl-2.0.php
|
31
31
|
|
32
32
|
# TO DO - change license if necessary
|
@@ -37,15 +37,15 @@
|
|
37
37
|
require "#{File.dirname(__FILE__)}/../lib/nodes"
|
38
38
|
|
39
39
|
commands_help = "Commands:\n" \
|
40
|
-
" init Init new
|
41
|
-
"
|
42
|
-
"
|
43
|
-
" put Put changes to server\n" \
|
40
|
+
" init Init new nodes\n" \
|
41
|
+
" list List of nodes on the nodes\n" \
|
42
|
+
" del Delete the nodes \n" \
|
44
43
|
" get Get changes from server\n" \
|
45
|
-
"
|
44
|
+
" put Put changes to server\n" \
|
45
|
+
" size Size of the nodes\n" \
|
46
46
|
"\n"
|
47
|
-
|
48
|
-
usage_help = "usage:
|
47
|
+
|
48
|
+
usage_help = "usage: nodes command [arguments...] [options...]\n\n" + commands_help
|
49
49
|
|
50
50
|
unless ARGV.first
|
51
51
|
puts "Nodes #{Nodes::VERSION}"
|
@@ -54,8 +54,8 @@ unless ARGV.first
|
|
54
54
|
end
|
55
55
|
|
56
56
|
command = ARGV.shift
|
57
|
-
dir = ARGV.first
|
58
|
-
dir = Dir.pwd unless dir
|
57
|
+
#dir = ARGV.first
|
58
|
+
#dir = Dir.pwd unless dir
|
59
59
|
|
60
60
|
#puts "find: #{ARGV.find "-h"}"
|
61
61
|
|
@@ -64,26 +64,17 @@ case command
|
|
64
64
|
when 'version'
|
65
65
|
puts "Nodes #{Nodes::VERSION}"
|
66
66
|
when 'init'
|
67
|
-
Nodes.init
|
68
|
-
|
69
|
-
|
70
|
-
name = ARGV.first
|
71
|
-
unless name
|
72
|
-
puts "You must specify a name to clone.\n\n"
|
73
|
-
puts "usage: point clone <name>\n\n"
|
74
|
-
exit
|
75
|
-
end
|
76
|
-
Nodes.clone name
|
67
|
+
Nodes.init
|
68
|
+
when 'list'
|
69
|
+
Nodes.list
|
77
70
|
when 'put'
|
78
|
-
Nodes.put
|
71
|
+
Nodes.put
|
79
72
|
when 'get'
|
80
|
-
Nodes.get
|
73
|
+
Nodes.get
|
81
74
|
when 'del'
|
82
|
-
Nodes.del
|
75
|
+
Nodes.del
|
83
76
|
when 'size'
|
84
|
-
Nodes.size
|
85
|
-
when 'country'
|
86
|
-
Nodes.country(ARGV.shift)
|
77
|
+
Nodes.size
|
87
78
|
else
|
88
79
|
puts "Unknown command: #{command}\n"
|
89
80
|
puts commands_help
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "./node"
|
2
|
+
require 'digest/sha2'
|
3
|
+
|
4
|
+
|
5
|
+
class FileNode < Node
|
6
|
+
|
7
|
+
def initialize(file=nil)
|
8
|
+
super
|
9
|
+
file = __FILE__ unless file
|
10
|
+
file = File.expand_path(file)
|
11
|
+
if File.stat(file).file?
|
12
|
+
@keys['name'] = File.basename(file)
|
13
|
+
#@keys['path'] = File.dirname(file)
|
14
|
+
@keys['size'] = File.size(file)
|
15
|
+
sha2 = Digest::SHA2.new
|
16
|
+
File.open(file, 'r') do |fh|
|
17
|
+
while buffer = fh.read(1024)
|
18
|
+
sha2 << buffer
|
19
|
+
end
|
20
|
+
end
|
21
|
+
@keys['hash'] = sha2.hexdigest
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
#node = FileNode.new
|
29
|
+
#puts "yaml:"
|
30
|
+
#puts node.to_yaml
|
31
|
+
#puts
|
32
|
+
#puts "marshal:"
|
33
|
+
#puts Marshal.dump(node)
|
34
|
+
#p node.name
|
35
|
+
#p node.path
|
36
|
+
#p node.size
|
37
|
+
#p node.hash
|
data/lib/nodes/node.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
class Node
|
4
|
+
|
5
|
+
attr_accessor :keys
|
6
|
+
|
7
|
+
#
|
8
|
+
#attr_accessor :up, :down
|
9
|
+
#attr_accessor :left, :right
|
10
|
+
#attr_accessor :front, :back
|
11
|
+
#attr_accessor :previous, :next
|
12
|
+
#
|
13
|
+
#attr_accessor :store # directory where this node stored
|
14
|
+
|
15
|
+
def initialize(name=nil)
|
16
|
+
@keys = {}
|
17
|
+
@keys['name'] = name
|
18
|
+
end
|
19
|
+
|
20
|
+
def hash
|
21
|
+
@keys['hash']
|
22
|
+
end
|
23
|
+
|
24
|
+
def name=(name)
|
25
|
+
@keys['name'] = name
|
26
|
+
end
|
27
|
+
|
28
|
+
def tags=(tags)
|
29
|
+
@keys['tags'] = tags
|
30
|
+
end
|
31
|
+
|
32
|
+
def method_missing(name, *args, &block)
|
33
|
+
if @keys.key?(name.to_s)
|
34
|
+
@keys[name.to_s]
|
35
|
+
else
|
36
|
+
super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def ==(other)
|
41
|
+
return self.size == other.size && self.hash == other.hash
|
42
|
+
end
|
43
|
+
|
44
|
+
def dump(filename=nil)
|
45
|
+
filename = ".#{self.class.name}.yml" unless filename
|
46
|
+
File.open(filename, "w") do |file|
|
47
|
+
file.write self.to_yaml
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.load(filename=nil)
|
52
|
+
filename = ".#{self.name}.yml" unless filename
|
53
|
+
YAML::load_file(filename)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
#node = Node.new("ирбиш")
|
61
|
+
#node = Node.new("irbish")
|
62
|
+
#p node.name
|
63
|
+
#p node.keys
|
data/lib/nodes/point.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require "./node"
|
2
|
+
require "./file_node"
|
3
|
+
|
4
|
+
class Point < Node
|
5
|
+
|
6
|
+
def initialize(path=nil)
|
7
|
+
super
|
8
|
+
path = File.dirname(__FILE__) unless path
|
9
|
+
@keys['name'] = File.basename(path)
|
10
|
+
@keys['path'] = path
|
11
|
+
files = []
|
12
|
+
Dir.glob("**/*").each do |filename|
|
13
|
+
filepath = "#{path}/#{filename}"
|
14
|
+
if File.stat(filepath).file?
|
15
|
+
file = FileNode.new(filepath)
|
16
|
+
tags = File.dirname(filename).split(File::SEPARATOR)
|
17
|
+
file.tags = tags if tags[0] != "."
|
18
|
+
files << file
|
19
|
+
end
|
20
|
+
end
|
21
|
+
@keys['size'] = files.inject(0){|sum,file| sum + file.size }
|
22
|
+
sha2 = Digest::SHA2.new
|
23
|
+
files.each do |file|
|
24
|
+
sha2 << file.hash
|
25
|
+
end
|
26
|
+
@keys['hash'] = sha2.hexdigest
|
27
|
+
@keys['list'] = files
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
#node = Point.new
|
34
|
+
#p node.list
|
35
|
+
|
36
|
+
|
37
|
+
#
|
38
|
+
#node = Point.new
|
39
|
+
#node.dump
|
40
|
+
#p node.size
|
41
|
+
#puts node.hash
|
42
|
+
#node = Point.load
|
43
|
+
#p node.size
|
44
|
+
#puts node.hash
|
45
|
+
|
46
|
+
|
47
|
+
#node.files.each do |file|
|
48
|
+
# p file
|
49
|
+
#end
|
50
|
+
#p node.size
|
51
|
+
#p node.hash
|
52
|
+
#
|
53
|
+
#puts "yaml:"
|
54
|
+
#puts node.to_yaml
|
55
|
+
#puts
|
56
|
+
#puts "marshal:"
|
57
|
+
#puts Marshal.dump(node)
|
data/lib/nodes.rb
CHANGED
@@ -1,75 +1,35 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require "nodes/version"
|
3
2
|
|
4
3
|
module Nodes
|
5
|
-
VERSION = "0.1.7"
|
6
|
-
|
7
4
|
|
8
|
-
def self.init
|
9
|
-
puts "
|
10
|
-
src = "#{File.dirname(__FILE__)}/../.point"
|
11
|
-
system("cp -r #{src} #{dir}")
|
5
|
+
def self.init
|
6
|
+
puts "init new nodes in the file system"
|
12
7
|
end
|
13
8
|
|
14
|
-
def self.
|
15
|
-
puts "
|
16
|
-
dir = "#{Dir.pwd}/#{name}"
|
17
|
-
return unless system("mkdir #{dir}")
|
18
|
-
init dir
|
19
|
-
get dir
|
9
|
+
def self.put
|
10
|
+
puts "put the nodes to server"
|
20
11
|
end
|
21
12
|
|
22
|
-
def self.
|
23
|
-
|
13
|
+
def self.get
|
14
|
+
puts "get the nodes to server"
|
24
15
|
end
|
25
16
|
|
26
|
-
def self.
|
27
|
-
|
17
|
+
def self.del
|
18
|
+
puts "delete the nodes from file system"
|
28
19
|
end
|
29
20
|
|
30
|
-
def self.
|
31
|
-
|
32
|
-
system("cd #{dir} && rm -rf #{dir}/.point")
|
21
|
+
def self.list
|
22
|
+
puts "list of nodes in the nodes"
|
33
23
|
end
|
34
24
|
|
35
|
-
def self.size(
|
36
|
-
|
37
|
-
total_files = 0
|
38
|
-
total_directories = 0
|
39
|
-
Find.find(dir) do |path|
|
40
|
-
if FileTest.directory?(path)
|
41
|
-
total_directories += 1
|
42
|
-
if File.basename(path)[0] == ?.
|
43
|
-
Find.prune # Don't look any further into this directory.
|
44
|
-
else
|
45
|
-
next
|
46
|
-
end
|
47
|
-
else
|
48
|
-
if hidden || File.basename(path)[0] != ?.
|
49
|
-
total_files += 1
|
50
|
-
total_size += FileTest.size(path)
|
51
|
-
# print path+" -> "
|
52
|
-
# puts FileTest.size(path)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
puts "size: #{total_size}"
|
57
|
-
puts "directories: #{total_directories}"
|
58
|
-
puts "files: #{total_files}"
|
25
|
+
def self.size(hidden = false)
|
26
|
+
puts "size of the nodes"
|
59
27
|
end
|
60
28
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
country = location[2] if location != nil
|
67
|
-
print " - #{country}"
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.call cmd
|
71
|
-
successfully = system(cmd)
|
72
|
-
exit "blach" unless successfully
|
73
|
-
end
|
29
|
+
#
|
30
|
+
#def self.call cmd
|
31
|
+
# successfully = system(cmd)
|
32
|
+
# exit "blach" unless successfully
|
33
|
+
#end
|
74
34
|
|
75
35
|
end
|
data/lib/rails/model.rb
ADDED
data/metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nodes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 7
|
9
|
+
version: 0.1.7
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Eugene Markine
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-11-12 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :development
|
32
|
+
version_requirements: *id001
|
33
|
+
description: Nodes is a data warehouse in the form of meta tags, which may have additional values
|
34
|
+
email:
|
35
|
+
- emarkine@gmail.com
|
36
|
+
executables:
|
37
|
+
- point
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- bin/command.rb
|
44
|
+
- bin/point
|
45
|
+
- lib/nodes.rb
|
46
|
+
- LICENSE
|
47
|
+
- README.md
|
48
|
+
- ROADMAP.md
|
49
|
+
- CHANGELOG.md
|
50
|
+
has_rdoc: true
|
51
|
+
homepage: http://eugenelab.com/nodes
|
52
|
+
licenses: []
|
53
|
+
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 1
|
74
|
+
- 3
|
75
|
+
- 6
|
76
|
+
version: 1.3.6
|
77
|
+
requirements: []
|
78
|
+
|
79
|
+
rubyforge_project: nodes
|
80
|
+
rubygems_version: 1.3.7
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: Nodes is data management system based on OS files system
|
84
|
+
test_files: []
|
85
|
+
|
data/nodes.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'nodes/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "nodes"
|
8
|
+
gem.version = Nodes::VERSION
|
9
|
+
gem.date = Time.now.strftime('%Y-%m-%d')
|
10
|
+
gem.summary = "easy manipulator of related nodes"
|
11
|
+
gem.description = "Nodes is a system of interconnected nodes through the named connections."
|
12
|
+
gem.authors = ["Eugene Markine"]
|
13
|
+
gem.email = ["eugene@markine.nl"]
|
14
|
+
gem.homepage = "http://eugenelab.com"
|
15
|
+
|
16
|
+
gem.files = `git ls-files`.split($/)
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ["lib"]
|
20
|
+
end
|
metadata
CHANGED
@@ -1,85 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: nodes
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 7
|
9
|
-
version: 0.1.7
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Eugene Markine
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
-
|
21
|
-
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
type: :development
|
32
|
-
version_requirements: *id001
|
33
|
-
description: Nodes is a data warehouse in the form of meta tags, which may have additional values
|
34
|
-
email:
|
35
|
-
- emarkine@gmail.com
|
36
|
-
executables:
|
37
|
-
- point
|
12
|
+
date: 2013-02-28 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Nodes is a system of interconnected nodes through the named connections.
|
15
|
+
email:
|
16
|
+
- eugene@markine.nl
|
17
|
+
executables:
|
18
|
+
- nodes
|
38
19
|
extensions: []
|
39
|
-
|
40
20
|
extra_rdoc_files: []
|
41
|
-
|
42
|
-
|
43
|
-
-
|
44
|
-
-
|
45
|
-
- lib/nodes.rb
|
46
|
-
- LICENSE
|
21
|
+
files:
|
22
|
+
- CHANGELOG.md
|
23
|
+
- Gemfile
|
24
|
+
- LICENSE.txt
|
47
25
|
- README.md
|
48
26
|
- ROADMAP.md
|
49
|
-
-
|
50
|
-
|
51
|
-
|
27
|
+
- Rakefile
|
28
|
+
- bin/nodes
|
29
|
+
- lib/nodes.rb
|
30
|
+
- lib/nodes/file_node.rb
|
31
|
+
- lib/nodes/node.rb
|
32
|
+
- lib/nodes/point.rb
|
33
|
+
- lib/nodes/version.rb
|
34
|
+
- lib/rails/model.rb
|
35
|
+
- metadata
|
36
|
+
- nodes.gemspec
|
37
|
+
homepage: http://eugenelab.com
|
52
38
|
licenses: []
|
53
|
-
|
54
39
|
post_install_message:
|
55
40
|
rdoc_options: []
|
56
|
-
|
57
|
-
require_paths:
|
41
|
+
require_paths:
|
58
42
|
- lib
|
59
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
44
|
none: false
|
61
|
-
requirements:
|
62
|
-
- -
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
|
65
|
-
|
66
|
-
version: "0"
|
67
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
50
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
- 1
|
74
|
-
- 3
|
75
|
-
- 6
|
76
|
-
version: 1.3.6
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
77
55
|
requirements: []
|
78
|
-
|
79
|
-
|
80
|
-
rubygems_version: 1.3.7
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 1.8.24
|
81
58
|
signing_key:
|
82
59
|
specification_version: 3
|
83
|
-
summary:
|
60
|
+
summary: easy manipulator of related nodes
|
84
61
|
test_files: []
|
85
|
-
|
data/LICENSE
DELETED
File without changes
|
data/bin/point
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# == Synopsis
|
4
|
-
# Nodes is a data warehouse in the form of meta tags, which may have additional values.
|
5
|
-
# Users can add, delete, edit nodes, manage access rights, etc.
|
6
|
-
#
|
7
|
-
# == Examples
|
8
|
-
# This command add new point.
|
9
|
-
# point add "{ name: 'test point', tag: test, zero, one: 1, two: [1,2] }"
|
10
|
-
#
|
11
|
-
# Other examples:
|
12
|
-
# point find "{ name, tag, zero }"
|
13
|
-
# point del "{ name, tag, zero, one, two }"
|
14
|
-
#
|
15
|
-
# == Usage
|
16
|
-
# point [options] json_text/file.yml
|
17
|
-
#
|
18
|
-
# For help use: point -h
|
19
|
-
#
|
20
|
-
# == Options
|
21
|
-
# -h, --help Displays help message
|
22
|
-
# -v, --version Display the version, then exit
|
23
|
-
# TO DO - add additional options
|
24
|
-
#
|
25
|
-
# == Author
|
26
|
-
# Eugene Markine
|
27
|
-
#
|
28
|
-
# == Copyright
|
29
|
-
# Copyright (c) 2010 EugeneLab. Licensed under the GNU General Public License (GPL), Version 2:
|
30
|
-
# http://www.opensource.org/licenses/gpl-2.0.php
|
31
|
-
|
32
|
-
# TO DO - change license if necessary
|
33
|
-
|
34
|
-
#require 'rubygems'
|
35
|
-
#require "nodes"
|
36
|
-
|
37
|
-
require "#{File.dirname(__FILE__)}/../lib/nodes"
|
38
|
-
|
39
|
-
commands_help = "Commands:\n" \
|
40
|
-
" init Init new point\n" \
|
41
|
-
" del Delete point \n" \
|
42
|
-
" clone Clone point from server\n" \
|
43
|
-
" put Put changes to server\n" \
|
44
|
-
" get Get changes from server\n" \
|
45
|
-
" size Size of point\n" \
|
46
|
-
"\n"
|
47
|
-
# " country <ip> Extract a country name from IP address\n"
|
48
|
-
usage_help = "usage: point command [arguments...] [options...]\n\n" + commands_help
|
49
|
-
|
50
|
-
unless ARGV.first
|
51
|
-
puts "Nodes #{Nodes::VERSION}"
|
52
|
-
puts usage_help
|
53
|
-
exit
|
54
|
-
end
|
55
|
-
|
56
|
-
command = ARGV.shift
|
57
|
-
dir = ARGV.first
|
58
|
-
dir = Dir.pwd unless dir
|
59
|
-
|
60
|
-
#puts "find: #{ARGV.find "-h"}"
|
61
|
-
|
62
|
-
|
63
|
-
case command
|
64
|
-
when 'version'
|
65
|
-
puts "Nodes #{Nodes::VERSION}"
|
66
|
-
when 'init'
|
67
|
-
Nodes.init dir
|
68
|
-
Nodes.put dir
|
69
|
-
when 'clone'
|
70
|
-
name = ARGV.first
|
71
|
-
unless name
|
72
|
-
puts "You must specify a name to clone.\n\n"
|
73
|
-
puts "usage: point clone <name>\n\n"
|
74
|
-
exit
|
75
|
-
end
|
76
|
-
Nodes.clone name
|
77
|
-
when 'put'
|
78
|
-
Nodes.put dir
|
79
|
-
when 'get'
|
80
|
-
Nodes.get dir
|
81
|
-
when 'del'
|
82
|
-
Nodes.del dir
|
83
|
-
when 'size'
|
84
|
-
Nodes.size dir
|
85
|
-
when 'country'
|
86
|
-
Nodes.country(ARGV.shift)
|
87
|
-
else
|
88
|
-
puts "Unknown command: #{command}\n"
|
89
|
-
puts commands_help
|
90
|
-
end
|