cmd_tools 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.
- data/bin/bak +49 -0
- data/bin/tsh +26 -0
- data/cmd_tools.gemspec +18 -0
- data/lib/cmd_tools/version.rb +3 -0
- data/lib/cmd_tools.rb +3 -0
- metadata +63 -0
data/bin/bak
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# bak is an abbreviation of backup.
|
4
|
+
# Backup files and directories in the current directory into ./bak_since_ directory.
|
5
|
+
|
6
|
+
if ARGV.empty?
|
7
|
+
puts <<-EOS
|
8
|
+
#
|
9
|
+
$ bak file1 file2 ...
|
10
|
+
#
|
11
|
+
EOS
|
12
|
+
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'fileutils'
|
17
|
+
require 'find'
|
18
|
+
|
19
|
+
BAK_DIR_HEAD = "bak_since_"
|
20
|
+
BAK_DIR_REG = /(\A|\/)#{BAK_DIR_HEAD}\d{12}\z/
|
21
|
+
BAK_PREFIX = 'bak.'
|
22
|
+
CURRENT_TIME = Time.now.strftime("%y%m%d%H%M%S")
|
23
|
+
BAK_DIR\
|
24
|
+
= Dir.foreach('.')\
|
25
|
+
.select{|path| path =~ BAK_DIR_REG}\
|
26
|
+
.select{|path| File.directory?(path)}\
|
27
|
+
.first\
|
28
|
+
|| BAK_DIR_HEAD + CURRENT_TIME
|
29
|
+
BAK_DIR_IN_BAK_DIR_REG = /\A#{BAK_DIR}\/.*#{BAK_DIR_HEAD}\d{12}\z/
|
30
|
+
|
31
|
+
FileUtils.mkdir_p(BAK_DIR)
|
32
|
+
(ARGV.map{|path| path.chomp('/')} - ['.', '..', BAK_DIR])\
|
33
|
+
.select{|path| File.exist?(path)}\
|
34
|
+
.each{|path|
|
35
|
+
dest = File.join(BAK_DIR, "#{BAK_PREFIX}#{path}.#{CURRENT_TIME}#{File.extname(path)}")
|
36
|
+
$stdout.puts "Back up #{path}"
|
37
|
+
FileUtils.cp_r(path, dest)
|
38
|
+
|
39
|
+
Find.find(dest){|path_in_dest|
|
40
|
+
if path_in_dest =~ BAK_DIR_IN_BAK_DIR_REG && File.directory?(path_in_dest)
|
41
|
+
$stdout.puts "Delete #{path_in_dest}? [y/N]"
|
42
|
+
if $stdin.gets.strip =~ /\A[yY]/
|
43
|
+
$stdout.puts "Deleting: #{path_in_dest}"
|
44
|
+
FileUtils.rm_rf(path_in_dest)
|
45
|
+
Find.prune
|
46
|
+
end
|
47
|
+
end
|
48
|
+
}
|
49
|
+
}
|
data/bin/tsh
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# tsh is an abbreviation of trash.
|
4
|
+
# Move files and directories to ~/.myTrash directory.
|
5
|
+
# Should be safer than direct rm.
|
6
|
+
|
7
|
+
if ARGV.empty?
|
8
|
+
puts <<-EOS
|
9
|
+
#
|
10
|
+
>tsh fileOrDir1 fileOrDir2 ...
|
11
|
+
#
|
12
|
+
EOS
|
13
|
+
|
14
|
+
exit
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'fileutils'
|
18
|
+
MY_TRASH_DIR = File.join(ENV['HOME'], '.myTrash')
|
19
|
+
CURRENT_TIME = Time.now.strftime("%y%m%d%H%M%S.")
|
20
|
+
PREFIX = File.join(MY_TRASH_DIR, CURRENT_TIME)
|
21
|
+
|
22
|
+
FileUtils.mkdir_p(MY_TRASH_DIR)
|
23
|
+
puts (ARGV - %w(. ..))\
|
24
|
+
.select{|path| File.exist?(path)}\
|
25
|
+
.each{|path| FileUtils.mv(path, PREFIX + File.basename(path))}\
|
26
|
+
.join("\t")
|
data/cmd_tools.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'ruby_patch'
|
2
|
+
|
3
|
+
gem_name = File.basename(__DIR__)
|
4
|
+
require "./lib/#{gem_name}/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.files = `git ls-files`.split
|
8
|
+
s.name = gem_name
|
9
|
+
s.summary = "Command line tools."
|
10
|
+
s.version = CmdTools::VERSION
|
11
|
+
|
12
|
+
s.add_development_dependency 'ruby_patch', '~> 0'
|
13
|
+
s.author = 'kshramt'
|
14
|
+
s.description = "Command line tools. tsh: mv to ~/.myTrash. bak: bakup."
|
15
|
+
s.executables << 'bak'
|
16
|
+
s.executables << 'tsh'
|
17
|
+
s.required_ruby_version = '>= 1.9.0'
|
18
|
+
end
|
data/lib/cmd_tools.rb
ADDED
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cmd_tools
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- kshramt
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ruby_patch
|
16
|
+
requirement: &72363320 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *72363320
|
25
|
+
description: ! 'Command line tools. tsh: mv to ~/.myTrash. bak: bakup.'
|
26
|
+
email:
|
27
|
+
executables:
|
28
|
+
- bak
|
29
|
+
- tsh
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- bin/bak
|
34
|
+
- bin/tsh
|
35
|
+
- cmd_tools.gemspec
|
36
|
+
- lib/cmd_tools.rb
|
37
|
+
- lib/cmd_tools/version.rb
|
38
|
+
homepage:
|
39
|
+
licenses: []
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 1.9.0
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
requirements: []
|
57
|
+
rubyforge_project:
|
58
|
+
rubygems_version: 1.8.11
|
59
|
+
signing_key:
|
60
|
+
specification_version: 3
|
61
|
+
summary: Command line tools.
|
62
|
+
test_files: []
|
63
|
+
has_rdoc:
|