zashoku 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4fa01a68fedb50955e21f463118c0b40b7a3ea3
4
- data.tar.gz: f6c95b13d29fbde419815753ed527fef44a6de14
3
+ metadata.gz: 3e99bb8738a8d367c416d66c40130b91e07e9a76
4
+ data.tar.gz: f45b7cef607b9e640d89dec4999976c178918cd8
5
5
  SHA512:
6
- metadata.gz: b4f12efc2dc904b9ffe2d5d1204be2b083e77318d6673398bbc805d3677a1503e8cb1e19cfe72d9e52b8cdeea9392d53263360c3b64846802a82659df534bca2
7
- data.tar.gz: 62b9a8b0d03efba68fd7523fe5a093de69789423d2a59ff1ffa6600903aace9d3db2720227fdad9a8c130b59166043d0f371d24d1bbfc42fc32c94c3bba269eb
6
+ metadata.gz: ab0df30b379d34a69274ca6ba17f63a1dd42ada0d52f1a1413fb7039d40d900bc9bf888b0faa4b1e41b5fbd419c6a9168b809e13032b9dff45032877e7252ed0
7
+ data.tar.gz: a40c62b9937bd0a060285324667d88b9498e7d8992cb3e849543cb5e98a98bdc31312285eace7c57ee09896324d48e8993f8d58ec221c2a17559c8605cb3ac08
data/README.md CHANGED
@@ -1,16 +1,25 @@
1
- # zashoku
1
+ # zashoku座食
2
2
  command line application framework
3
3
 
4
4
  ## features
5
- + for lazy people
5
+ + good for lazy people
6
6
  + generators
7
7
  + optimized view
8
8
  + mvc
9
9
  + client / server model
10
+ + rendering support for asian characters
11
+
12
+ ## examples
13
+ #### create new app
14
+ `zashoku -g app <name>`
15
+
16
+ #### create new module
17
+ `zashoku -g module <name>`
18
+
10
19
 
11
20
  ## installation
12
21
  `gem install zashoku`
13
22
 
14
- ## documentation
15
- + [rubydoc.info](http://www.rubydoc.info/gems/zashoku/)
16
- + [wiki](https://github.com/annacrombie/zashoku/wiki/)
23
+ ## resources
24
+ + [rubydoc.info/gems/zashoku](http://www.rubydoc.info/gems/zashoku/)
25
+ + [rubygems.org/gems/zashoku](https://www.rubygems.org/gems/zashoku)
data/bin/zashoku CHANGED
@@ -1,17 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- if File.exist?(File.join(File.dirname(__FILE__), '../lib/zashoku.rb'))
6
- require_relative '../lib/zashoku'
7
- end
8
- # rescue LoadError
9
- # require 'zashoku'
10
- end
11
-
12
- unless defined? Zashoku
13
- puts 'cant find zashoku library'
14
- exit
15
- end
4
+ require_relative '../lib/zashoku'
16
5
 
17
6
  Zashoku.main(ARGV)
data/config/daemon.yml CHANGED
@@ -1,8 +1 @@
1
1
  ---
2
- log_file: '$conf_dir/aw.log'
3
- conf_dir: '~/.config/zashoku'
4
-
5
- modules:
6
- disabled: []
7
- enabled:
8
- - Bandcamp
data/config/view.yml CHANGED
@@ -4,10 +4,6 @@ color:
4
4
  primary: "\e[0m\e[32m"
5
5
  secondary: "\e[0m\e[33m"
6
6
  main: "\e[0m\e[34m"
7
- modules:
8
- disabled: []
9
- enabled:
10
- - Bandcamp
11
7
  keymaps:
12
8
  global:
13
9
  259: current_view move_cursor up
@@ -5,7 +5,7 @@ require 'fileutils'
5
5
 
6
6
  module Zashoku
7
7
  class Config < Controller
8
- CONF_DIR = File.join(Dir.home, '.config/zashoku')
8
+ CONF_DIR = File.join(Dir.home, '.config/', Zashoku::AppName)
9
9
  CONF_FILE = File.join(CONF_DIR, '/conf.yml')
10
10
 
11
11
  def initialize
@@ -39,7 +39,7 @@ module Zashoku
39
39
  end
40
40
 
41
41
  def user_conf
42
- read(self.class::CONF_FILE)
42
+ Util.get_yaml(self.class::CONF_FILE)
43
43
  end
44
44
 
45
45
  def pref_model(title, value, trail)
@@ -86,11 +86,5 @@ module Zashoku
86
86
  def save
87
87
  File.open(self.class::CONF_FILE, 'w') { |f| f.write(YAML.dump(@conf)) }
88
88
  end
89
-
90
- def read(file)
91
- YAML.safe_load(File.open(file, 'r', &:read))
92
- rescue
93
- {}
94
- end
95
89
  end
96
90
  end
@@ -13,7 +13,7 @@ module Zashoku
13
13
  end
14
14
 
15
15
  def base_conf
16
- read(File.join(Zashoku::Root, 'config/daemon.yml'))
16
+ Util.get_yaml(File.join(Zashoku::Root, 'config/daemon.yml'))
17
17
  end
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ module Zashoku
13
13
  end
14
14
 
15
15
  def base_conf
16
- read(File.join(Zashoku::Root, 'config/view.yml'))
16
+ Util.get_yaml(File.join(Zashoku::Root, 'config/view.yml'))
17
17
  end
18
18
  end
19
19
  end
@@ -96,7 +96,6 @@ module Zashoku
96
96
  def self.format_line(string, obj)
97
97
  pfs = pre_format(string, obj)
98
98
  len = pfs.reduce(0) { |l, s| l + Unicode::DisplayWidth.of(s[0]) } + 1
99
- Zashoku.logger.debug("formatting #{pfs}, len: #{len}\n--->#{Util::Term.cols} - #{len} / #{pfs.length - 1}")
100
99
  buffer = pfs.length > 1 ? (Util::Term.cols - len) / (pfs.length - 1) : 0
101
100
 
102
101
  buffer -= (Util::Term.cols - len - buffer)
data/lib/core/module.rb CHANGED
@@ -4,15 +4,9 @@ require 'yaml'
4
4
 
5
5
  module Zashoku
6
6
  module Module
7
- LoadPaths = [
8
- File.join(Zashoku::Root, 'lib/core/modules/'),
9
- File.join(Zashoku::Root, 'modules/'),
10
- File.join(Dir.home, '.config/zashoku/modules/')
11
- ].freeze
12
-
13
7
  def self.require_module(mod)
14
8
  mod = mod.downcase
15
- LoadPaths.map do |path|
9
+ Zashoku::LoadPaths.map do |path|
16
10
  mod_path = File.join(path, "#{mod}/lib/#{mod}.rb")
17
11
  next unless File.exist?(mod_path)
18
12
  begin
@@ -31,7 +25,13 @@ module Zashoku
31
25
 
32
26
  def self.require_all(modules)
33
27
  modules.map do |mod|
34
- Zashoku.const_get(mod) if require_module(mod)
28
+ if require_module(mod)
29
+ Zashoku.logger.debug("loaded module #{mod}")
30
+ Zashoku.const_get(mod)
31
+ else
32
+ Zashoku.logger.debug("failed to load module #{mod}")
33
+ nil
34
+ end
35
35
  end.compact
36
36
  end
37
37
 
@@ -9,7 +9,7 @@ module Zashoku
9
9
  class Client
10
10
  attr_accessor :callbacks
11
11
 
12
- def initialize(port, host = 'localhost')
12
+ def initialize(port, host = Zashoku::Host)
13
13
  @socket = connect(host, port)
14
14
  @alive = true
15
15
 
@@ -26,6 +26,18 @@ module Zashoku
26
26
  @semaphore = Mutex.new
27
27
  end
28
28
 
29
+ def self.command(host, port, msg, args = {})
30
+ sock = TCPSocket.new(host, port)
31
+ sock.puts(JSON.generate({'msg' => msg}.merge(args)))
32
+ result = sock.readline
33
+ sock.close
34
+ JSON.parse(result).map { |k, v| "#{k}: #{v}\n" }.join
35
+ rescue Errno::ECONNREFUSED
36
+ "error: could not connect connect to server\n"
37
+ rescue EOFError
38
+ nil
39
+ end
40
+
29
41
  def connect(host, port)
30
42
  TCPSocket.new(host, port)
31
43
  rescue Errno::ECONNREFUSED
@@ -55,10 +67,8 @@ module Zashoku
55
67
  def command(msg, args = {})
56
68
  return unless alive?
57
69
  @semaphore.synchronize {
58
- id = Random.rand
59
70
 
60
71
  payload = { 'msg' => msg }.merge(args)
61
- Zashoku.logger.debug("client.command #{id} #{payload}")
62
72
  @command_queue << JSON.generate(payload)
63
73
 
64
74
  result = @result_queue.pop
@@ -84,7 +94,6 @@ module Zashoku
84
94
 
85
95
  def distribute_results!
86
96
  response = JSON.parse(@socket.readline)
87
- Zashoku.logger.debug("distributing #{response.class} #{response.length}")
88
97
  if response['event']
89
98
  @event_queue << response
90
99
  else
@@ -59,6 +59,7 @@ module Zashoku
59
59
  Thread.abort_on_exception = true
60
60
  loop do
61
61
  Thread.start(@server.accept) do |client|
62
+ Zashoku.logger.debug("got client (hash: #{client.hash})")
62
63
  @clients << client
63
64
  @client_queue[client] = Queue.new
64
65
  handle(client)
data/lib/core/options.rb CHANGED
@@ -6,6 +6,8 @@ class Options
6
6
  def self.parse(args)
7
7
  options = {
8
8
  daemon: false,
9
+ server: true,
10
+ server_command: nil,
9
11
  generate: false,
10
12
  template: nil,
11
13
  generate_name: nil
@@ -14,8 +16,13 @@ class Options
14
16
  parser = OptionParser.new do |opts|
15
17
  opts.banner = 'Usage: zashoku [options]'
16
18
 
17
- opts.on('-d', '--daemon', 'pass commands to the daemon') do |d|
18
- options[:daemon] = d
19
+ opts.on('-s [COMMAND]', '--server [COMMAND]', 'pass commands to the server') do |cmd|
20
+ options[:server] = true
21
+ options[:server_command] = cmd || 'start'
22
+ end
23
+
24
+ opts.on('-d', '--daemon', 'daemonize the server') do |d|
25
+ options[:daemonize] = true
19
26
  end
20
27
 
21
28
  opts.on('-g TEMPLATE', '--generate TEMPLATE', 'generate a template') do |template|
data/lib/core/view.rb CHANGED
@@ -24,11 +24,8 @@ module Zashoku
24
24
  @old_rows = Term.rows
25
25
 
26
26
  # @win = Curses::Window.new(0,0,0,0)
27
- Zashoku.logger.debug('refreshing')
28
- refresh
29
-
30
- dirty_all_lines
31
27
  @view = [0, Term.rows - 3]
28
+ refresh
32
29
  end
33
30
 
34
31
  def dirty_all_lines
@@ -96,7 +93,6 @@ module Zashoku
96
93
  @selected = i
97
94
  @expanded = i
98
95
  end
99
- #adjust_view
100
96
 
101
97
  arr = [@expanded, oexpanded] - [-1]
102
98
  @dirty_lines = arr.min.step(@view[1]).to_a
@@ -144,9 +140,7 @@ module Zashoku
144
140
  @dirty_lines += [os, @selected]
145
141
 
146
142
  adjust_view
147
- fix_cursor
148
- changed
149
- notify_observers
143
+ changed!
150
144
  end
151
145
 
152
146
  def fix_cursor
@@ -210,8 +204,6 @@ module Zashoku
210
204
  )
211
205
 
212
206
  @items_formatted = Zashoku::Formatter.items(get_format, @items)
213
- changed
214
- notify_observers
215
207
  end
216
208
 
217
209
  def draw_line(line_on)
@@ -247,9 +239,7 @@ module Zashoku
247
239
  line_on = @view[0]
248
240
  lines_to_draw = @view[1]
249
241
 
250
- # print the menu title
251
- lo = "\e[1;1H"
252
- print lo + @cl['m'] + @title_formatted + "\e[K"
242
+ print "\e[1;1H#{@cl['m']}#{@title_formatted}\e[K"
253
243
 
254
244
  while line_on < lines_to_draw
255
245
  draw_line(line_on) if @dirty_lines.include?(line_on)
data/lib/daemon.rb CHANGED
@@ -4,7 +4,6 @@ require 'json'
4
4
  require 'logger'
5
5
  require 'socket'
6
6
  require 'thread'
7
- require 'warning'
8
7
 
9
8
  require_relative 'core/controller'
10
9
  require_relative 'core/config/daemon_config'
@@ -29,28 +28,32 @@ module Zashoku
29
28
 
30
29
  class Daemon
31
30
  def initialize
31
+ @semaphore = Mutex.new
32
+
33
+ Zashoku.logger = Logger.new(STDOUT)
32
34
  # Load conf
33
35
  Zashoku.conf = DaemonConfig.new
34
36
  # Load modules
35
- Zashoku.modules = Zashoku::Module.load(Zashoku.conf.get(%w[modules enabled]))
37
+ Zashoku.modules = Zashoku::Module.load(Zashoku::DaemonModules)
36
38
  # Update conf with module defaults
37
39
  Zashoku.conf.reload
38
40
 
39
- #initialize logger
40
- Zashoku.logger = Logger.new(STDOUT)
41
-
42
41
  Zashoku.controllers =
43
42
  Zashoku.modules.keys.zip(Zashoku.modules.values.map(&:controller)).to_h
44
43
 
45
- @server = Net::Server.new(12_345)
46
- @server.handler = method(:respond)
47
-
48
44
  Zashoku.controllers.each_value { |c| c.add_observer(self) }
49
45
 
50
- # $stdout.reopen(@pref.parseDir(@pref.get('daemon_log_file')), 'w')
51
- # $stderr.reopen(@pref.parseDir(@pref.get('daemon_log_file')), 'w')
46
+ # $stdout.reopen(file, 'w')
47
+ # $stderr.reopen(file, 'w')
52
48
  # $stdout.sync = true
53
49
  # $stderr.sync = true
50
+ end
51
+
52
+ def listen
53
+ lay_traps!
54
+ @server = Net::Server.new(Zashoku::Port)
55
+ @server.handler = method(:respond)
56
+ Zashoku.logger.debug('server listening')
54
57
  sleep
55
58
  end
56
59
 
@@ -70,11 +73,21 @@ module Zashoku
70
73
  Zashoku.command(message)
71
74
  when 'disconnect'
72
75
  nil
76
+ when 'stop'
77
+ cleanup
73
78
  else
74
79
  'what?'
75
80
  end
76
81
  end
77
82
 
83
+ def lay_traps!
84
+ Signal.trap('INT') do
85
+ Thread.new do
86
+ @semaphore.synchronize { cleanup }
87
+ end
88
+ end
89
+ end
90
+
78
91
  def cleanup
79
92
  @server.exit
80
93
  exit
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zashoku
4
+ module Generator
5
+ class AppGenerator < Generator
6
+ def generate!
7
+ generated << transfer('app', @name_path)
8
+ generated << transfer('module', Pathname.new(File.join(@name_path, 'modules', @name)))
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zashoku
4
+ module Generator
5
+ class ModuleGenerator < Generator
6
+ def generate!
7
+ generated << transfer('module', @name_path)
8
+ end
9
+ end
10
+ end
11
+ end
data/lib/generator.rb CHANGED
@@ -4,41 +4,74 @@ require 'fileutils'
4
4
  require 'pathname'
5
5
 
6
6
  module Zashoku
7
- class Generator
7
+ module Generator
8
8
  TemplateDir = File.join(Zashoku::Root, 'templates')
9
- LowerCaseIdentifier = '<module_name>'
10
- UpperCaseIdentifier = '<Module_name>'
11
9
  Extensions = 'rb,yml,md,gemspec'
12
10
 
13
- def initialize(template, name)
14
- @template = template
15
- @name = name
16
- @input_dir = Pathname.new(File.join(TemplateDir, template))
17
- @output_dir = Pathname.new(File.join(Zashoku::Root, 'modules', @name))
18
- raise 'Module already exists' if Dir.exist?(@output_dir)
19
- end
11
+ def self.generate(template, name)
12
+ raise 'error, no name given' unless name
13
+ generator =
14
+ case template
15
+ when 'module'
16
+ require_relative 'generator/module_generator'
17
+ ModuleGenerator.new(name)
18
+ when 'app'
19
+ require_relative 'generator/app_generator'
20
+ AppGenerator.new(name)
21
+ else
22
+ raise "Template #{template} not found"
23
+ end
20
24
 
21
- def refactor(thing)
22
- thing
23
- .to_s
24
- .gsub(/#{LowerCaseIdentifier}/, @name)
25
- .gsub(/#{UpperCaseIdentifier}/, @name.capitalize)
25
+ generator.generate!
26
+ puts "generated #{generator.generated.join(', ')}"
26
27
  end
27
28
 
28
- def generate
29
- Dir.glob("#{@input_dir}/**/*.#{Extensions}").each do |file|
30
- new_file =
31
- File.join(
32
- @output_dir,
33
- refactor(Pathname.new(file).relative_path_from(@input_dir))
34
- )
29
+ class Generator
30
+ attr_accessor :generated
31
+
32
+ def initialize(name)
33
+ @generated = []
34
+ @name = name
35
+ @name_path = Pathname.new(File.absolute_path(@name))
36
+ end
35
37
 
36
- FileUtils.mkdir_p(File.dirname(new_file))
38
+ def pairs
39
+ @pairs || @pairs = {
40
+ /<name>/ => @name,
41
+ /<Name>/ => @name.capitalize
42
+ }
43
+ end
44
+
45
+ def refactor(thing)
46
+ pairs.reduce(thing.to_s) { |f, t| f = f.gsub(t[0], t[1]) }
47
+ end
37
48
 
38
- File.open(new_file, 'w') do |f|
39
- f.print refactor(File.open(file, 'r', &:read))
49
+ def transfer(template, output)
50
+ input_dir = Pathname.new(File.join(TemplateDir, template))
51
+ output_dir = Pathname.new(output)
52
+ raise "path #{output_dir} already exists" if Dir.exist?(output_dir)
53
+ Dir.glob("#{input_dir}/**/*").each do |file|
54
+ next if Dir.exist?(file)
55
+
56
+ new_file =
57
+ File.join(
58
+ output_dir,
59
+ refactor(Pathname.new(file).relative_path_from(input_dir))
60
+ )
61
+
62
+ FileUtils.mkdir_p(File.dirname(new_file))
63
+
64
+ File.open(new_file, 'w') do |f|
65
+ f.print refactor(File.open(file, 'r', &:read))
66
+ end
67
+
68
+ FileUtils.chmod(File.stat(file).mode, new_file)
40
69
  end
70
+
71
+ output
41
72
  end
73
+
74
+ def generate!; end
42
75
  end
43
76
  end
44
77
  end
data/lib/viewer.rb CHANGED
@@ -52,33 +52,37 @@ module Zashoku
52
52
  def initialize
53
53
  @semaphore = Mutex.new
54
54
 
55
+ Zashoku.logger = Logger.new(
56
+ File.join(Zashoku::AppRoot, "#{Zashoku::AppName}.log")
57
+ )
58
+
55
59
  Zashoku.conf = ViewConfig.new
56
60
 
57
- Zashoku.modules = Zashoku::Module.load(
58
- Zashoku.conf.get(%w[modules enabled])
59
- )
61
+ Zashoku.modules = Zashoku::Module.load(Zashoku::ViewerModules)
60
62
  Zashoku.conf.reload
61
63
 
62
- Zashoku.logger = Logger.new('zashoku_log.log')
63
-
64
64
  # note: start daemon if not running
65
- Zashoku.client = Net::Client.new(12_345)
65
+ Zashoku.client = Net::Client.new(Zashoku::Port)
66
66
  Zashoku.client.callbacks << method(:handle_event)
67
67
 
68
68
  @views = Zashoku.modules.keys.zip(Zashoku.modules.map do |_k, m|
69
69
  m.view
70
70
  end).to_h
71
-
72
71
  @view = @views.keys.first
72
+
73
73
  init_screen
74
74
  lay_traps!
75
75
  Thread.abort_on_exception = true
76
76
  Thread.new { scan_keyboard! }
77
+
78
+ init_view(@view) if @view
79
+ sleep
80
+ end
81
+
82
+ def init_view(view)
77
83
  @views[@view].add_observer(self, :draw_view)
78
84
  @views[@view].refresh
79
85
  draw_view
80
-
81
- sleep
82
86
  end
83
87
 
84
88
  def lay_traps!
data/lib/zashoku.rb CHANGED
@@ -3,9 +3,20 @@
3
3
  require_relative 'core/options'
4
4
 
5
5
  module Zashoku
6
- Version = [1, 0, 0].freeze
6
+ Version = [1, 1, 0].freeze
7
7
  Root = File.expand_path('../', __dir__)
8
8
 
9
+ AppRoot = Root unless const_defined?(:AppRoot)
10
+ AppName = 'zashoku' unless const_defined?(:AppName)
11
+ ViewerModules = [] unless const_defined?(:ViewerModules)
12
+ DaemonModules = [] unless const_defined?(:DaemonModules)
13
+ Host = 'localhost' unless const_defined?(:Host)
14
+ Port = 12_345 unless const_defined?(:Port)
15
+
16
+ LoadPaths = [
17
+ File.join(Zashoku::AppRoot, 'modules')
18
+ ].freeze
19
+
9
20
  autoload :Generator, File.join(Root, 'lib/generator')
10
21
  autoload :Viewer, File.join(Root, 'lib/viewer')
11
22
  autoload :Daemon, File.join(Root, 'lib/daemon')
@@ -25,11 +36,21 @@ module Zashoku
25
36
  Zashoku.modules = []
26
37
 
27
38
  if options[:generate]
28
- Generator.new(options[:template], options[:generate_name]).generate
29
- elsif options[:daemon]
30
- Daemon.new
39
+ Generator.generate(options[:template], options[:generate_name])
40
+ elsif options[:server_command]
41
+ command_server(options[:server_command])
31
42
  else
32
43
  Viewer.new.run
33
44
  end
34
45
  end
46
+
47
+ def self.command_server(command)
48
+ case command
49
+ when 'start'
50
+ Daemon.new.listen
51
+ else
52
+ require_relative 'core/net/client'
53
+ print Net::Client.command(Zashoku::Host, Zashoku::Port, command)
54
+ end
55
+ end
35
56
  end
metadata CHANGED
@@ -1,15 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zashoku
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - annacrombie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-12 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2017-10-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: curses
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.4
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.4
33
+ - !ruby/object:Gem::Dependency
34
+ name: highline
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.7'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.7.8
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.7'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.7.8
53
+ - !ruby/object:Gem::Dependency
54
+ name: json
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.1'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.1.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.1'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.1.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: unicode-display_width
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.3'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.3.0
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.3.0
13
93
  description: inspired by cmus, vim, and rails
14
94
  email: meotleft@gmail.com
15
95
  executables:
@@ -36,6 +116,8 @@ files:
36
116
  - "./lib/core/view.rb"
37
117
  - "./lib/daemon.rb"
38
118
  - "./lib/generator.rb"
119
+ - "./lib/generator/app_generator.rb"
120
+ - "./lib/generator/module_generator.rb"
39
121
  - "./lib/viewer.rb"
40
122
  - "./lib/zashoku.rb"
41
123
  - bin/zashoku
@@ -51,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
133
  requirements:
52
134
  - - ">="
53
135
  - !ruby/object:Gem::Version
54
- version: '0'
136
+ version: 2.4.0
55
137
  required_rubygems_version: !ruby/object:Gem::Requirement
56
138
  requirements:
57
139
  - - ">="