invocker 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2e160117bc2121ec061bfe68836a4d225ae62c951a49e806d01d0ecce5aba2c6
4
+ data.tar.gz: e78164d1b0ecb847dbcfd68ef856a788ca8969a51437aed17e07a52908a314e0
5
+ SHA512:
6
+ metadata.gz: a850519730f7c796404dfa62708912177cba56bf3e7c8ac13bcc5b0a35cda67e82b47d84922d22c1316050068e7af5652d1ad126fc1cb0c798b36b1b24d614ea
7
+ data.tar.gz: fd65009697c3793edfa7773a1fb40fc0e50a3464d2721e93547f54de306767ba8f1a95a8e96c8cc697b0f72780d80ee94fd3fbea614a0b68e1824396d2df93e4
data/bin/invocker ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.dirname(__FILE__) + "/../lib"
3
+ require 'optparse'
4
+ require 'invocker'
5
+ require 'invocker/main'
6
+
7
+
8
+ begin
9
+ Invocker::Console.new.start
10
+ rescue OptionParser::ParseError => ex
11
+ STDERR.puts "!! #{ex.message}"
12
+ puts "** use `#{File.basename($0)} --help` for more details..."
13
+ exit 1
14
+ end
@@ -0,0 +1,5 @@
1
+ module Invocker
2
+ class Config
3
+ DATABASE_HOST = File.join(Dir.home, ".invocker.db")
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module Invocker
2
+ require 'active_record'
3
+ require 'sqlite3'
4
+ require 'invocker/config'
5
+
6
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: Invocker::Config::DATABASE_HOST)
7
+ class Database
8
+ class << self
9
+ def create
10
+ ENV["mode"] = 'create'
11
+ require 'invocker/migrate'
12
+ end
13
+
14
+ def drop
15
+ ENV["mode"] = 'drop'
16
+ require 'invocker/migrate'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,53 @@
1
+ require 'invocker/db'
2
+ require 'invocker/optpare'
3
+ require 'invocker/model'
4
+
5
+ module Invocker
6
+ class Console
7
+
8
+ def initialize
9
+ invocker = Invocker::OptparsrInvocker.new
10
+ @options = invocker.parse(ARGV)
11
+ end
12
+
13
+ def start
14
+ configs if @options.config
15
+ executes if @options.execute
16
+ Invocker::Database.create if @options.database == :create
17
+ Invocker::Database.drop if @options.database == :drop
18
+ end
19
+
20
+ private
21
+
22
+ def configs
23
+ alias_key = @options.config_message
24
+ key = alias_key.gsub "alias.", ''
25
+
26
+ case @options.config_type
27
+ when 'create'
28
+ command = ARGV[1]
29
+ Invocker::Model::Command.create key: key, command: command
30
+ puts "Done!"
31
+ when 'delete'
32
+ command = Invocker::Model::Command.find_by(key: key)
33
+ return puts 'Not thing unset' if command.blank?
34
+
35
+ command.destroy
36
+ when 'list'
37
+ puts "num | id | key | command"
38
+ Invocker::Model::Command.all.each_with_index do |command, num|
39
+ puts "#{num + 1}. | #{command.id} | #{command.key} | #{command.command}"
40
+ end
41
+ end
42
+ end
43
+
44
+ def executes
45
+ # alias_key = @options.config_message
46
+ # puts alias_key
47
+ # key = alias_key.gsub "alias.", ''
48
+ # puts ARGV
49
+ command = Invocker::Model::Command.find_by(key: ARGV[1])
50
+ exec command.command
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,13 @@
1
+ mode = ENV.fetch("mode")
2
+
3
+ class CommandTable < ActiveRecord::Migration[5.2]
4
+ def change
5
+ create_table :commands do |table|
6
+ table.string :key
7
+ table.string :command
8
+ table.timestamps
9
+ end
10
+ end
11
+ end
12
+ CommandTable.migrate(:up) if mode == "create"
13
+ CommandTable.migrate(:down) if mode == "drop"
@@ -0,0 +1,12 @@
1
+ module Invocker
2
+ module Model
3
+ require 'active_record'
4
+ require 'sqlite3'
5
+ require 'invocker/config'
6
+
7
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: Invocker::Config::DATABASE_HOST)
8
+ class Command < ActiveRecord::Base
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,83 @@
1
+
2
+ require 'optparse'
3
+ require 'optparse/time'
4
+ require 'ostruct'
5
+ require 'pp'
6
+ require 'invocker/optparsr_options/config'
7
+ require 'invocker/optparsr_options/execute'
8
+ require 'invocker/optparsr_options/database'
9
+
10
+ module Invocker
11
+ class OptparsrInvocker
12
+ Version = '1.0.0'
13
+
14
+ CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary]
15
+ CODE_ALIASES = { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
16
+
17
+ class ScriptOptions
18
+ attr_accessor :config, :config_type, :config_message, :database, :execute
19
+
20
+ def initialize
21
+ self.config = false
22
+ self.execute = false
23
+ end
24
+
25
+ def define_options(parser)
26
+ init_config parser
27
+ # add additional options
28
+ Invocker::OptpareOptions::Configs.define(parser, self)
29
+ Invocker::OptpareOptions::Executes.define(parser, self)
30
+ Invocker::OptpareOptions::Databases.define(parser, self)
31
+ end_config parser
32
+ end
33
+
34
+ private
35
+
36
+ def init_config parser
37
+ parser.banner = "Usage: example.rb [options]"
38
+ parser.separator ""
39
+ parser.separator "Specific options:"
40
+
41
+ case ARGV.first
42
+ when "config"
43
+ self.config = true
44
+ when "exec"
45
+ self.execute = true
46
+ end
47
+ end
48
+
49
+ def end_config parser
50
+ parser.separator ""
51
+ parser.separator "Common options:"
52
+ # No argument, shows at tail. This will print an options summary.
53
+ # Try it and see!
54
+ parser.on_tail("-h", "--help", "Show this message") do
55
+ puts parser
56
+ exit
57
+ end
58
+ # Another typical switch to print the version.
59
+ parser.on_tail("--version", "Show version") do
60
+ puts Version
61
+ exit
62
+ end
63
+ end
64
+ end
65
+
66
+ #
67
+ # Return a structure describing the options.
68
+ #
69
+ def parse(args)
70
+ # The options specified on the command line will be collected in
71
+ # *options*.
72
+
73
+ @options = ScriptOptions.new
74
+ @args = OptionParser.new do |parser|
75
+ @options.define_options(parser)
76
+ parser.parse!(args)
77
+ end
78
+ @options
79
+ end
80
+
81
+ attr_reader :parser, :options
82
+ end
83
+ end
@@ -0,0 +1,25 @@
1
+ module Invocker
2
+ module OptpareOptions
3
+ class Executes
4
+ def self.define(parser, script_options)
5
+ # return unless script_options.config
6
+
7
+ # Specifies an optional option argument
8
+ parser.on("-c", "--create [COMMAND]", "alias.key 'your short command'", "Your config alias") do |message|
9
+ script_options.config_message = message || ''
10
+ script_options.config_type = 'create'
11
+ end
12
+
13
+ parser.on("-d", "--delete [COMMAND]", "alias.[key of command] eg: alias.ssh_10.10.10.10", "your key you want remove") do |message|
14
+ script_options.config_message = message || ''
15
+ script_options.config_type = 'delete'
16
+ end
17
+
18
+ parser.on("-l", "--list [COMMAND]", "alias.[key of command] eg: alias.ssh_10.10.10.10", "your key you want remove") do |message|
19
+ script_options.config_message = message || ''
20
+ script_options.config_type = 'list'
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,14 @@
1
+ module Invocker
2
+ module OptpareOptions
3
+ class Databases
4
+ def self.define(parser, script_options)
5
+ # return unless script_options.execute
6
+
7
+ options = [:create, :drop, :upall, :downall ]
8
+ parser.on("--db [TYPE]", options, options, "Select transfer type (create, :drop, :upall, :downall)") do |db|
9
+ script_options.database = db
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module Invocker
2
+ module OptpareOptions
3
+ class Configs
4
+ def self.define(parser, script_options)
5
+ return unless script_options.execute
6
+ end
7
+ end
8
+ end
9
+ end
data/lib/invocker.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Hola
2
+ def self.hi
3
+ puts "Hello world!"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: invocker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dang Thanh Tung
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A magic for life developer.
42
+ email: dangthanhtung.open@gmail.com
43
+ executables:
44
+ - invocker
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - bin/invocker
49
+ - lib/invocker.rb
50
+ - lib/invocker/config.rb
51
+ - lib/invocker/db.rb
52
+ - lib/invocker/main.rb
53
+ - lib/invocker/migrate.rb
54
+ - lib/invocker/model.rb
55
+ - lib/invocker/optpare.rb
56
+ - lib/invocker/optparsr_options/config.rb
57
+ - lib/invocker/optparsr_options/database.rb
58
+ - lib/invocker/optparsr_options/execute.rb
59
+ homepage: https://rubygems.org/gems/hola
60
+ licenses:
61
+ - MIT
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubygems_version: 3.2.3
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Invocker, this is magic!
82
+ test_files: []