ichigeki 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e46a757da3954c239c997b36cb60a9b711555d87
4
+ data.tar.gz: 15346471ef7eb62ac2178c9629b30035120b03ba
5
+ SHA512:
6
+ metadata.gz: 22ae7ae8574a1bc64ad14e02cc94b34360c5f892e4f0093684f2dee4fd6753c71c4e477b08589137c143d5dbfe15c9ed287eb05d6f24f9a8ac8443efe62607b2
7
+ data.tar.gz: 591725fa18e8819279b15846d04106b381ac35b67150a4bd03ee214756813bcd5782d3a8486112f9ce416c4f8794bef2b0c1125a78b371a7cd5efa6762a16b32
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ 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
18
+ *.swp
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ 2.1.0
4
+ otp_release:
5
+ before_install:
6
+ - git clone https://github.com/Konboi/ichigeki.git
7
+ - cd ichigeki
8
+ script: "rake"
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ichigeki.gemspec
4
+ gemspec
5
+ gem 'rspec'
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Konboi
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 ADDED
@@ -0,0 +1,72 @@
1
+ # Ichigeki
2
+ [![Build Status ](https://api.travis-ci.org/Konboi/ichigeki.png?branch=master)](https://travis-ci.org/Konboi/ichigeki)
3
+
4
+ This is [Script::Ichigeki](https://github.com/Songmu/p5-Script-Ichigeki) ruby version.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'ichigeki'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install ichigeki
19
+
20
+ ## Usage
21
+
22
+ ```ruby
23
+ # sample.rb
24
+ require 'ichigeki'
25
+
26
+ Ichigeki.hissatsu(
27
+ dialog_message: "殺っちゃう??",
28
+ log_file_postfix: '.ichigeki',
29
+ exec_date: "2014-03-08"
30
+ )
31
+
32
+ puts 'ichigeki: グハッ'
33
+
34
+ ```
35
+
36
+ ```
37
+ bundle exec ruby sample.rb
38
+ ```
39
+
40
+ ```
41
+ less .sample.rb.ichigeki
42
+ ```
43
+
44
+ ```
45
+ # This log file is generated by ichigeki.start: 2014-03-08 12:00:00 +0900
46
+ ---
47
+ ichigeki: グハッ
48
+
49
+ ---
50
+ end: 2014-03-08 12:00:01 +0900
51
+ ```
52
+
53
+
54
+ We can set optons when require this gem like this
55
+
56
+ ```ruby
57
+ require("ichigeki").hissatsu(
58
+ log_file_postfix: '.hoge'
59
+ exec_date: "2014-03-10"
60
+ )
61
+
62
+ ```
63
+
64
+ thanks [p-r](https://github.com/Konboi/ichigeki/pull/1)
65
+
66
+ ## Contributing
67
+
68
+ 1. Fork it ( http://github.com/<my-github-username>/ichigeki/fork )
69
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
70
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
71
+ 4. Push to the branch (`git push origin my-new-feature`)
72
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ task :default => "spec"
4
+
5
+ task :spec do
6
+ sh "rspec"
7
+ end
data/ichigeki.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ichigeki/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ichigeki"
8
+ spec.version = Ichigeki::VERSION
9
+ spec.authors = ["Konboi"]
10
+ spec.email = ["ryosuke.yabuki@gmail.com"]
11
+ spec.summary = %q{ichigeki}
12
+ spec.description = %q{ichigeki}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ end
@@ -0,0 +1,129 @@
1
+ require 'time'
2
+ require 'stringio'
3
+
4
+ module Ichigeki
5
+ class Hissatsu
6
+ attr_reader :exec_date, :confirm_dialog, :log_file_postfix,
7
+ :script, :in_compilation, :dialog_message
8
+
9
+ attr_accessor :is_running
10
+
11
+ def initialize(init_properties = {})
12
+ init_properties = {
13
+ exec_date: Time.now.strftime("%Y-%m-%d"),
14
+ confirm_dialog: true,
15
+ log_file_postfix: '.log',
16
+ dialog_message: "Do you really execute %s",
17
+ in_compilation: 1,
18
+ script: $0,
19
+ is_running: nil,
20
+ }.merge(init_properties)
21
+
22
+ @exec_date = init_properties[:exec_date]
23
+ @confirm_dialog = init_properties[:confirm_dialog]
24
+ @in_compilation = init_properties[:in_compilation]
25
+ @log_file_postfix = init_properties[:log_file_postfix]
26
+ @script = init_properties[:script]
27
+ @dialog_message = init_properties[:dialog_message]
28
+ @is_running = init_properties[:is_running]
29
+ end
30
+
31
+ def execute
32
+ now = Time.now;
33
+ today = now.strftime("%Y-%m-%d")
34
+
35
+ exiting("exec_date: #{exec_date} is not today") unless exec_date == today
36
+
37
+ exiting(sprintf("Can't execue! Execution log file [%s] already exists!", log_file)) if File.exists?(log_file)
38
+
39
+ if confirm_dialog
40
+ printf(dialog_message + ' [y/n] [n] ', script.to_s)
41
+ answer = gets.chomp
42
+ exiting 'canceled.' unless answer == 'y'
43
+ end
44
+
45
+ STDOUT.flush
46
+ STDERR.flush
47
+
48
+ log(["\n",
49
+ '# This log file is generated by ichigeki.',
50
+ "start: #{now.to_s} \n",
51
+ '---',''].join
52
+ )
53
+
54
+ self.is_running = 1
55
+
56
+ $stdout = std_out
57
+ $stderr = std_err
58
+
59
+ done
60
+ end
61
+
62
+ private
63
+
64
+ def twin_out(f)
65
+ out = Object.new
66
+ out.instance_eval{@ofile=f}
67
+ class <<out
68
+ def write(str)
69
+ STDOUT.write(str)
70
+ @ofile.write(str)
71
+ end
72
+ end
73
+
74
+ return out
75
+ end
76
+
77
+ def twin_err(f)
78
+ err = Object.new
79
+ err.instance_eval{@ofile=f}
80
+ class <<err
81
+ def write(str)
82
+ STDERR.write(str)
83
+ @ofile.write(str)
84
+ end
85
+ end
86
+
87
+ return err
88
+ end
89
+
90
+ def std_out
91
+ twin_out(log_fh)
92
+ end
93
+
94
+ def std_err
95
+ twin_err(log_fh)
96
+ end
97
+
98
+ def log_fh
99
+ open(log_file, "a")
100
+ end
101
+
102
+ def exiting(msg = '')
103
+ msg = msg + "\n"
104
+ if (self.in_compilation)
105
+ puts msg
106
+ exit 1
107
+ end
108
+ end
109
+
110
+ def log_file
111
+ "#{File.dirname(script)}/.#{script.to_s}#{log_file_postfix}"
112
+ end
113
+
114
+ def log(msg)
115
+ log_fh.puts msg
116
+ end
117
+
118
+ def done
119
+ if is_running
120
+ now = Time.now.to_s
121
+ log(["\n",
122
+ '','---',"\n",
123
+ "end: #{now}\n", ''].join)
124
+ end
125
+ end
126
+
127
+ end
128
+ end
129
+
@@ -0,0 +1,3 @@
1
+ module Ichigeki
2
+ VERSION = "0.0.1"
3
+ end
data/lib/ichigeki.rb ADDED
@@ -0,0 +1,21 @@
1
+ require "ichigeki/version"
2
+ require "ichigeki/hissatsu"
3
+
4
+ module Ichigeki
5
+ module_function
6
+
7
+ def hissatsu(args={})
8
+ ichigeki = Ichigeki::Hissatsu.new(args)
9
+ ichigeki.execute
10
+ end
11
+ end
12
+
13
+ #Kernel#.require returns bool value
14
+ #so, bool value override and we can `require('ichigeki').hissatsu`
15
+ [true, false].each do |bool|
16
+ class << bool
17
+ def hissatsu(args={})
18
+ Ichigeki.hissatsu args
19
+ end
20
+ end
21
+ end
data/sample.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'ichigeki'
2
+
3
+ Ichigeki.hissatsu(
4
+ dialog_message: "殺っちゃう??",
5
+ log_file_postfix: '.ichigeki',
6
+ exec_date: "2014-03-08"
7
+ )
8
+
9
+ puts 'ichigeki: グハッ'
10
+
11
+
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require 'rspec'
3
+ require 'tempfile'
4
+ require 'pathname'
5
+ require 'fileutils'
6
+
7
+ describe Ichigeki, "hissatsu" do
8
+ sample_rbs = %w(sample.rb sample_require_hissatsu.rb)
9
+
10
+ before :each do
11
+ sample_rbs.each do |rb|
12
+ File.delete("./spec/#{rb}.log") if File.exist?("./spec/#{rb}.log")
13
+ end
14
+ end
15
+
16
+ context "can execute test script" do
17
+ it "First time can doing" do
18
+ sample_rbs.each do |rb|
19
+ stdout = `ruby ./spec/#{rb}`
20
+ expect(stdout).to eq("ichigekiiiii\n")
21
+ end
22
+ end
23
+ end
24
+
25
+ context "can't execute twice this script" do
26
+ it "First time can doing" do
27
+ sample_rbs.each do |rb|
28
+ `ruby ./spec/#{rb}`
29
+ stdout = `ruby ./spec/#{rb}`
30
+ expect(stdout).to eq("Can\'t execue! Execution log file [./spec/../spec/#{rb}.log] already exists!\n")
31
+ end
32
+ end
33
+ end
34
+
35
+ end
36
+
data/spec/sample.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'ichigeki'
2
+
3
+ Ichigeki.hissatsu(
4
+ confirm_dialog: nil
5
+ )
6
+
7
+
8
+ puts 'ichigekiiiii'
@@ -0,0 +1,6 @@
1
+ require('ichigeki').hissatsu(
2
+ confirm_dialog: nil
3
+ )
4
+
5
+
6
+ puts 'ichigekiiiii'
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'ichigeki'
4
+
5
+ RSpec.configure do |config|
6
+ config.mock_framework = :rspec
7
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ichigeki
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Konboi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: ichigeki
42
+ email:
43
+ - ryosuke.yabuki@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - ".travis.yml"
50
+ - Gemfile
51
+ - LICENSE.txt
52
+ - README.md
53
+ - Rakefile
54
+ - ichigeki.gemspec
55
+ - lib/ichigeki.rb
56
+ - lib/ichigeki/hissatsu.rb
57
+ - lib/ichigeki/version.rb
58
+ - sample.rb
59
+ - spec/ichigek_spec.rb
60
+ - spec/sample.rb
61
+ - spec/sample_require_hissatsu.rb
62
+ - spec/spec_helper.rb
63
+ homepage: ''
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.2.0
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: ichigeki
87
+ test_files:
88
+ - spec/ichigek_spec.rb
89
+ - spec/sample.rb
90
+ - spec/sample_require_hissatsu.rb
91
+ - spec/spec_helper.rb