hitsuji 0.2.0 → 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.
- checksums.yaml +4 -4
- data/bin/hitsuji +44 -0
- data/lib/hitsuji.rb +8 -2
- data/lib/transfer.rb +11 -6
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3912e8f0e280fa4d52a32b4e0bca248effd6f2f4e40fffc204b34b33f848219
|
4
|
+
data.tar.gz: d74c445355211b3e8b391cb685b9d99cf6f3ce9d7f2c5b411239e115894b554c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fa911f19e45220bdee43a983b71b9c5af65b772facf572c053801c78e8500492e4f8007ab162ed79443684d2ce3f8ee37c4dd55410fbbac8382d6c57bde4388
|
7
|
+
data.tar.gz: cae1ac537c14570d5a674e62969d674694c6612ea590872f882ee6ecd6ddc925aebc637f381ccfb49767fed4f3c96004c241627d40ba9e407855930d3af14bc7
|
data/bin/hitsuji
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
HELP = 'Usage: hitsuji <command>
|
5
|
+
|
6
|
+
where <command> is one of:
|
7
|
+
convert Converts Hitsuji file to YAML file or vice versa
|
8
|
+
metadata Displays the metadata of a Hitsuji file
|
9
|
+
|
10
|
+
hitsuji help <command> Display specific help for a command
|
11
|
+
hitsuji -h, --help Display this help page
|
12
|
+
hitsuji -v, --version Show the installed version number
|
13
|
+
'.freeze
|
14
|
+
|
15
|
+
spec = Gem::Specification.load('hitsuji.gemspec')
|
16
|
+
VERSION = "Hitsuji v#{spec.version} @ #{File.expand_path(__FILE__)}".freeze
|
17
|
+
|
18
|
+
def parse_commands
|
19
|
+
extra_args = ARGV[1..-1].join(' ') if ARGV[1..-1]
|
20
|
+
|
21
|
+
case ARGV[0]
|
22
|
+
when 'help'
|
23
|
+
command = "ruby -Ilib #{__dir__}/commands/help #{extra_args}"
|
24
|
+
when 'convert'
|
25
|
+
command = "ruby -Ilib #{__dir__}/commands/convert #{extra_args}"
|
26
|
+
when 'metadata'
|
27
|
+
command = "ruby -Ilib #{__dir__}/commands/metadata #{extra_args}"
|
28
|
+
end
|
29
|
+
|
30
|
+
exec command
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse
|
34
|
+
case ARGV[0]
|
35
|
+
when '-h', '--help', nil
|
36
|
+
puts HELP
|
37
|
+
when '-v', '--version'
|
38
|
+
puts VERSION
|
39
|
+
else
|
40
|
+
parse_commands
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
parse
|
data/lib/hitsuji.rb
CHANGED
@@ -12,6 +12,10 @@ class Hitsuji
|
|
12
12
|
# my_system = Hitsuji.new
|
13
13
|
def initialize
|
14
14
|
@struct = []
|
15
|
+
@metadata = {
|
16
|
+
date_created: `date`,
|
17
|
+
date_edited: `date`
|
18
|
+
}
|
15
19
|
end
|
16
20
|
|
17
21
|
# Creates a new item, the equivalent of a variable in the system.
|
@@ -118,7 +122,7 @@ class Hitsuji
|
|
118
122
|
# my_system.bind(my_item) # binds item
|
119
123
|
# my_system.export('newfile.hitsuji') # exports to 'newfile.txt'
|
120
124
|
def export(directory)
|
121
|
-
Transfer.export(directory, @struct)
|
125
|
+
Transfer.export(directory, @struct, @metadata)
|
122
126
|
end
|
123
127
|
|
124
128
|
# Imports a file into a system, *overwriting anything already bound to the
|
@@ -133,7 +137,7 @@ class Hitsuji
|
|
133
137
|
# my_system = Hitsuji.new # a new system
|
134
138
|
# my_system.import('oldfile.hitsuji') # imports 'oldfile.txt'
|
135
139
|
def import(directory)
|
136
|
-
@struct = Transfer.import(directory)
|
140
|
+
@struct, @metadata = Transfer.import(directory)
|
137
141
|
update @struct
|
138
142
|
end
|
139
143
|
|
@@ -212,6 +216,8 @@ class Hitsuji
|
|
212
216
|
throw 'err' unless i.name.nil? || !names.include?(i.name)
|
213
217
|
names << update(i.value) if i.class == Linker
|
214
218
|
end
|
219
|
+
|
220
|
+
@metadata[:date_edited] = `date`
|
215
221
|
names
|
216
222
|
end
|
217
223
|
|
data/lib/transfer.rb
CHANGED
@@ -1,20 +1,25 @@
|
|
1
1
|
require_relative 'subsystem.rb'
|
2
2
|
|
3
|
-
#
|
3
|
+
# The Transfer class manages the importing and exporting of Hitsuji files. This
|
4
|
+
# functionality is normally accessed through Hitsuji#import and Hitsuji#export.
|
5
|
+
# Transfer.export also does not work independently, and must be used through the
|
6
|
+
# Hitsuji#export function.
|
4
7
|
class Transfer
|
5
|
-
def self.export(directory, struct)
|
8
|
+
def self.export(directory, struct, metadata)
|
6
9
|
throw 'err' unless directory.end_with?('.hitsuji')
|
7
10
|
File.open(directory, 'w') do |file|
|
8
|
-
|
9
|
-
|
11
|
+
raw_data = { struct: struct, metadata: metadata }
|
12
|
+
serialized_data = [Marshal.dump(raw_data)].pack('u')
|
13
|
+
file.write serialized_data
|
10
14
|
end
|
11
15
|
end
|
12
16
|
|
13
17
|
def self.import(directory)
|
14
18
|
throw 'err' unless directory.end_with?('.hitsuji')
|
15
19
|
File.open(directory, 'r') do |file|
|
16
|
-
|
17
|
-
|
20
|
+
serialized_data = file.read.unpack('u')
|
21
|
+
raw_data = Marshal.load(serialized_data.first)
|
22
|
+
return raw_data[:struct], raw_data[:metadata]
|
18
23
|
end
|
19
24
|
end
|
20
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hitsuji
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Quail
|
@@ -16,10 +16,12 @@ description: |-
|
|
16
16
|
databases to performance analysis all the way to complete content management
|
17
17
|
systems (like Wordpress.com).
|
18
18
|
email: josh@madbean.com
|
19
|
-
executables:
|
19
|
+
executables:
|
20
|
+
- hitsuji
|
20
21
|
extensions: []
|
21
22
|
extra_rdoc_files: []
|
22
23
|
files:
|
24
|
+
- bin/hitsuji
|
23
25
|
- lib/hitsuji.rb
|
24
26
|
- lib/subsystem.rb
|
25
27
|
- lib/transfer.rb
|
@@ -29,7 +31,7 @@ licenses:
|
|
29
31
|
metadata:
|
30
32
|
source_code_uri: https://github.com/realtable/hitsuji
|
31
33
|
bug_tracker_uri: https://github.com/realtable/hitsuji/issues
|
32
|
-
documentation_uri: https://www.rubydoc.info/gems/hitsuji/0.2.
|
34
|
+
documentation_uri: https://www.rubydoc.info/gems/hitsuji/0.2.1
|
33
35
|
post_install_message:
|
34
36
|
rdoc_options: []
|
35
37
|
require_paths:
|