bmc-tools 0.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin-other/autobackup +70 -0
- data/bin-other/autobackup.inc +157 -0
- data/bin-other/bob/ExtractPagesFromPDF +0 -0
- data/bin-other/bob/backupsync +46 -0
- data/bin-other/bob/cachesync +58 -0
- data/bin-other/bob/deb +55 -0
- data/bin-other/bob/debmirror +2551 -0
- data/bin-other/bob/debmirror.marlin +2551 -0
- data/bin-other/bob/exif_rotate.sh +34 -0
- data/bin-other/bob/exif_rotate_dates.sh +35 -0
- data/bin-other/bob/git-big-objects +85 -0
- data/bin-other/bob/git-commit-details +22 -0
- data/bin-other/bob/git-commit-sizes +16 -0
- data/bin-other/bob/git-show-biggest.sh +33 -0
- data/bin-other/bob/git_remove_history.sh +24 -0
- data/bin-other/bob/git_staged_status.sh +29 -0
- data/bin-other/bob/identify_extra_raws +137 -0
- data/bin-other/bob/wallpaper_restore.sh +1 -0
- data/bin-other/bob/watch_olsr.sh +1 -0
- data/bin-other/bob/watch_rbpm_node_status +1 -0
- data/bin-other/bob/watermark_bmphoto_large.sh +32 -0
- data/bin-other/bob/watermark_bmphoto_small.sh +32 -0
- data/bin-other/bubbles/deb +42 -0
- data/bin-other/bubbles/firewall.sh +134 -0
- data/bin-other/bubbles/kernel-mirror.sh +15 -0
- data/bin-other/deb +42 -0
- data/bin-other/exif_dates.sh +35 -0
- data/bin-other/git-large-files +62 -0
- data/bin-other/git_add_upto.sh +54 -0
- data/bin-other/git_find_big.sh +33 -0
- data/bin-other/git_staged_status.sh +29 -0
- data/bin-other/image_resize +43 -0
- data/bin-other/kernel-mirror.sh +15 -0
- data/bin-other/marlin/deb +42 -0
- data/bin-other/marlin/firewall.sh +134 -0
- data/bin-other/mysql2svn.sh +36 -0
- data/bin-other/syno-cleanup.sh +31 -0
- data/bin/dockerize +35 -23
- data/bin/image_exif +30 -0
- data/bin/image_process +156 -0
- data/bin/image_process_wname +138 -0
- data/bin/tgv_to_pdf +206 -0
- data/bmc-tools.gemspec +1 -1
- data/lib/cli.rb +8 -0
- data/lib/constants.rb +1 -0
- data/lib/docker.rb +15 -0
- data/lib/git.rb +21 -0
- data/lib/runner.rb +19 -0
- metadata +52 -2
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
total=$#
|
3
|
+
current=0
|
4
|
+
percent=0
|
5
|
+
|
6
|
+
(
|
7
|
+
while [[ -n "$1" ]]; do
|
8
|
+
# update progress bar
|
9
|
+
percent=`expr 100 \* $current / $total`
|
10
|
+
echo "$percent" ;
|
11
|
+
echo "# Processing ($current/$total): $1 "
|
12
|
+
#sleep 1
|
13
|
+
|
14
|
+
# process current file, if a file and not a dir
|
15
|
+
if [[ -f "$1" ]]; then
|
16
|
+
jhead -autorot "$1"
|
17
|
+
if [ "$?" = -1 ] ; then
|
18
|
+
zenity --error --text="Processing failed"
|
19
|
+
fi
|
20
|
+
fi
|
21
|
+
|
22
|
+
# go to next file
|
23
|
+
shift
|
24
|
+
$((current+=1))
|
25
|
+
done
|
26
|
+
|
27
|
+
echo "# DONE - $total files processed.";
|
28
|
+
|
29
|
+
) |
|
30
|
+
zenity --progress \
|
31
|
+
--title="Auto-rotating images" \
|
32
|
+
--text="Processing files ..." \
|
33
|
+
--percentage=0 --auto-kill
|
34
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
total=$#
|
3
|
+
current=0
|
4
|
+
percent=0
|
5
|
+
|
6
|
+
(
|
7
|
+
while [[ -n "$1" ]]; do
|
8
|
+
# update progress bar
|
9
|
+
percent=`expr 100 \* $current / $total`
|
10
|
+
echo "$percent" ;
|
11
|
+
echo "# Processing ($current/$total): $1 "
|
12
|
+
#sleep 1
|
13
|
+
|
14
|
+
# process current file, if a file and not a dir
|
15
|
+
if [[ -f "$1" ]]; then
|
16
|
+
jhead -autorot -ft "$1"
|
17
|
+
if [ "$?" = -1 ] ; then
|
18
|
+
zenity --error --text="Processing failed"
|
19
|
+
fi
|
20
|
+
fi
|
21
|
+
|
22
|
+
# go to next file
|
23
|
+
shift
|
24
|
+
$((current+=1))
|
25
|
+
done
|
26
|
+
|
27
|
+
echo "# DONE - $total files processed.";
|
28
|
+
|
29
|
+
) |
|
30
|
+
zenity --progress \
|
31
|
+
--title="Auto-rotate and date update from EXIF" \
|
32
|
+
--text="Processing files ..." \
|
33
|
+
--percentage=0 --auto-kill
|
34
|
+
|
35
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
module GitBigObjects
|
4
|
+
class Blob
|
5
|
+
include Comparable
|
6
|
+
|
7
|
+
REVISIONS = Hash[
|
8
|
+
`git rev-list --all --objects`.lines.map { |line| line.scan(/\S+/) }
|
9
|
+
]
|
10
|
+
|
11
|
+
STORAGE_UNITS = [:B, :K, :M, :G, :T].freeze
|
12
|
+
STORAGE_BASE = 1024 # not 1024
|
13
|
+
|
14
|
+
attr_reader :sha, :size, :size_in_pack_file
|
15
|
+
|
16
|
+
def initialize(options = {})
|
17
|
+
@sha = options[:sha]
|
18
|
+
@size = options[:size].to_i
|
19
|
+
@size_in_pack_file = options[:size_in_pack_file].to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
def <=>(other)
|
23
|
+
other.size <=> size
|
24
|
+
end
|
25
|
+
|
26
|
+
def name
|
27
|
+
@name ||= REVISIONS[sha]
|
28
|
+
end
|
29
|
+
|
30
|
+
# Parts borrow from ActionPack (http://j.mp/K6lT6W)
|
31
|
+
def human_readable_size
|
32
|
+
if size < STORAGE_BASE
|
33
|
+
"#{size}B"
|
34
|
+
else
|
35
|
+
max_exp = STORAGE_UNITS.size - 1
|
36
|
+
exponent = (Math.log(size) / Math.log(STORAGE_BASE)).to_i # Convert to base
|
37
|
+
exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit
|
38
|
+
number = size.to_f / (STORAGE_BASE ** exponent)
|
39
|
+
|
40
|
+
unit = STORAGE_UNITS[exponent]
|
41
|
+
|
42
|
+
"#{'%.02f' % number}#{unit}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def short_sha
|
47
|
+
sha[0, 8]
|
48
|
+
end
|
49
|
+
|
50
|
+
def inspect
|
51
|
+
%(#<Blob #{short_sha} size:#{size}>)
|
52
|
+
end
|
53
|
+
|
54
|
+
def to_s
|
55
|
+
"#{human_readable_size}\t\t#{name} (#{short_sha})"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class Report < Struct.new(:argv)
|
60
|
+
PACKS = `git verify-pack -v .git/objects/pack/pack-*.idx`.lines
|
61
|
+
|
62
|
+
def to_s
|
63
|
+
PACKS.map { |line| blob_from_line(line) }.compact.sort.first(limit).join("\n")
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def limit
|
69
|
+
if arg = argv.first
|
70
|
+
arg.to_i
|
71
|
+
else
|
72
|
+
10
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def blob_from_line(line)
|
77
|
+
sha, type, size, size_in_pack_file, offset_in_packfile = line.scan(/\S+/)
|
78
|
+
if type == 'blob'
|
79
|
+
Blob.new(sha: sha, size: size, size_in_pack_file: size_in_pack_file)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
puts GitBigObjects::Report.new(ARGV)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
if [ $# -ne 1 ]; then
|
4
|
+
echo "Rationale : Get the total size of all files added by the specified commit."
|
5
|
+
echo "Usage : $(basename $0) <commit>"
|
6
|
+
exit 1
|
7
|
+
fi
|
8
|
+
|
9
|
+
blob_sizes=$(git diff-tree -r -c -M -C --no-commit-id $1 | grep " A " | cut -d " " -f 4 | git cat-file --batch-check | cut -d " " -f 3)
|
10
|
+
total_size=0
|
11
|
+
|
12
|
+
for size in $blob_sizes; do
|
13
|
+
let total_size+=size
|
14
|
+
done
|
15
|
+
|
16
|
+
if [ $total_size -gt 0 ]; then
|
17
|
+
total_size_kib=$(echo $total_size | awk '{printf "%.2f",$1/1024}')
|
18
|
+
total_size_mib=$(echo $total_size_kib | awk '{printf "%.2f",$1/1024}')
|
19
|
+
echo "The commit adds files totalling in $total_size bytes ($total_size_kib KiB, $total_size_mib MiB)."
|
20
|
+
else
|
21
|
+
echo "The commit does not add any files."
|
22
|
+
fi
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
foreach my $rev (`git rev-list --all --pretty=oneline`) {
|
3
|
+
my $tot = 0;
|
4
|
+
($sha = $rev) =~ s/\s.*$//;
|
5
|
+
foreach my $blob (`git diff-tree -r -c -M -C --no-commit-id $sha`) {
|
6
|
+
$blob = (split /\s/, $blob)[3];
|
7
|
+
next if $blob == "0000000000000000000000000000000000000000"; # Deleted
|
8
|
+
my $size = `echo $blob | git cat-file --batch-check`;
|
9
|
+
$size = (split /\s/, $size)[2];
|
10
|
+
$tot += int($size);
|
11
|
+
}
|
12
|
+
my $revn = substr($rev, 0, 40);
|
13
|
+
if ($tot > 1000000) {
|
14
|
+
print "$tot $revn " . `git show --pretty="format:" --name-only $revn | wc -l` ;
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#set -x
|
3
|
+
|
4
|
+
# Shows you the largest objects in your repo's pack file.
|
5
|
+
# Written for osx.
|
6
|
+
#
|
7
|
+
# @see http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
|
8
|
+
# @author Antony Stubbs
|
9
|
+
|
10
|
+
# set the internal field spereator to line break, so that we can iterate easily over the verify-pack output
|
11
|
+
IFS=$'\n';
|
12
|
+
|
13
|
+
# list all objects including their size, sort by size, take top 10
|
14
|
+
objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head`
|
15
|
+
|
16
|
+
echo "All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file."
|
17
|
+
|
18
|
+
output="size,pack,SHA,location"
|
19
|
+
for y in $objects
|
20
|
+
do
|
21
|
+
# extract the size in bytes
|
22
|
+
size=$((`echo $y | cut -f 5 -d ' '`/1024))
|
23
|
+
# extract the compressed size in bytes
|
24
|
+
compressedSize=$((`echo $y | cut -f 6 -d ' '`/1024))
|
25
|
+
# extract the SHA
|
26
|
+
sha=`echo $y | cut -f 1 -d ' '`
|
27
|
+
# find the objects location in the repository tree
|
28
|
+
other=`git rev-list --all --objects | grep $sha`
|
29
|
+
#lineBreak=`echo -e "\n"`
|
30
|
+
output="${output}\n${size},${compressedSize},${other}"
|
31
|
+
done
|
32
|
+
|
33
|
+
echo -e $output | column -t -s ', '
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -o errexit
|
3
|
+
|
4
|
+
# Author: David Underhill
|
5
|
+
# Script to permanently delete files/folders from your git repository. To use
|
6
|
+
# it, cd to your repository's root and then run the script with a list of paths
|
7
|
+
# you want to delete, e.g., git-delete-history path1 path2
|
8
|
+
|
9
|
+
if [ $# -eq 0 ]; then
|
10
|
+
exit 0
|
11
|
+
fi
|
12
|
+
|
13
|
+
# make sure we're at the root of git repo
|
14
|
+
if [ ! -d .git ]; then
|
15
|
+
echo "Error: must run this script from the root of a git repository"
|
16
|
+
exit 1
|
17
|
+
fi
|
18
|
+
|
19
|
+
# remove all paths passed as arguments from the history of the repo
|
20
|
+
files=$@
|
21
|
+
git filter-branch –prune-empty --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
|
22
|
+
|
23
|
+
# remove the temporary history git-filter-branch otherwise leaves behind for a long time
|
24
|
+
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
SAVEIFS=$IFS
|
3
|
+
IFS=$(echo -en "\n\b")
|
4
|
+
|
5
|
+
# Get total size of staged files
|
6
|
+
total=0
|
7
|
+
count=0
|
8
|
+
for filename in $(git diff --staged --name-only --relative)
|
9
|
+
do
|
10
|
+
filesize=$(stat -f "%z" "$filename")
|
11
|
+
total=$(($total + $filesize))
|
12
|
+
count=$(($count + 1))
|
13
|
+
done
|
14
|
+
echo "staged ..... $(($total /1024)) KB, $count file(s)"
|
15
|
+
|
16
|
+
# Get total size of staged files
|
17
|
+
total=0
|
18
|
+
count=0
|
19
|
+
for filename in $(git ls-files -o)
|
20
|
+
do
|
21
|
+
filesize=$(stat -f "%z" "$filename")
|
22
|
+
count=$(($count + 1))
|
23
|
+
total=$(($total + $filesize))
|
24
|
+
done
|
25
|
+
echo "unstaged ... $(($total /1024)) KB, $count file(s)"
|
26
|
+
|
27
|
+
# End
|
28
|
+
IFS=$SAVEIFS
|
29
|
+
|
@@ -0,0 +1,137 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Init
|
4
|
+
require 'fileutils'
|
5
|
+
require 'pathname'
|
6
|
+
require 'optparse'
|
7
|
+
#include FileUtils
|
8
|
+
paramj = paramr = nil
|
9
|
+
|
10
|
+
|
11
|
+
# Option parser
|
12
|
+
options = {}
|
13
|
+
OptionParser.new do |o|
|
14
|
+
o.on('-j jpeg path') { |p| paramj = p }
|
15
|
+
o.on('-r raw path') { |p| paramr = p }
|
16
|
+
o.on('-h') { puts o; exit }
|
17
|
+
o.parse!
|
18
|
+
end
|
19
|
+
|
20
|
+
# Params
|
21
|
+
if paramj.nil? || paramr.nil?
|
22
|
+
puts "quitting: please specify paths"
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
path_jpeg = Pathname.new(paramj).realpath
|
26
|
+
path_raw = Pathname.new(paramr).realpath
|
27
|
+
|
28
|
+
unless Dir.exists? path_jpeg
|
29
|
+
puts "quitting: jpeg_path does not exist"
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
unless Dir.exists? path_raw
|
33
|
+
puts "quitting: raws_path does not exist"
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
|
37
|
+
# Methods
|
38
|
+
def ls_in path
|
39
|
+
list = {}
|
40
|
+
Dir["#{path}/*"].each do |file|
|
41
|
+
next if File.directory? file
|
42
|
+
key = File.basename(file, File.extname(file))
|
43
|
+
list[key] = file
|
44
|
+
end
|
45
|
+
return list
|
46
|
+
end
|
47
|
+
|
48
|
+
# Core
|
49
|
+
|
50
|
+
# Collect JPEG filenames stripping extension
|
51
|
+
jpegs = ls_in path_jpeg
|
52
|
+
puts "JPEG: #{jpegs.size} files in: #{path_jpeg}"
|
53
|
+
|
54
|
+
raws = ls_in path_raw
|
55
|
+
puts "RAWS: #{raws.size} files in: #{path_raw}"
|
56
|
+
|
57
|
+
puts
|
58
|
+
|
59
|
+
# Do differences
|
60
|
+
missing_raws = jpegs.keys - raws.keys
|
61
|
+
if missing_raws.empty?
|
62
|
+
puts "> no missing file in RAW"
|
63
|
+
else
|
64
|
+
puts "> missing files in RAW :"
|
65
|
+
puts missing_raws.join(', ')
|
66
|
+
end
|
67
|
+
|
68
|
+
missing_jpegs = raws.keys - jpegs.keys
|
69
|
+
if missing_jpegs.empty?
|
70
|
+
puts "> no missing files in JPEG"
|
71
|
+
else
|
72
|
+
puts "> missing files in JPEG :"
|
73
|
+
puts missing_jpegs.join(', ')
|
74
|
+
|
75
|
+
path_trash = "#{path_raw}/trash"
|
76
|
+
puts "moving extra RAWS to TRASH"
|
77
|
+
puts "> mkdir #{path_trash}"
|
78
|
+
FileUtils.mkdir(path_trash)
|
79
|
+
missing_jpegs.each do |key|
|
80
|
+
filename = raws[key]
|
81
|
+
puts "> mv #{key}: #{filename}"
|
82
|
+
FileUtils.mv(filename, path_trash)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
#FileUtils.mkdir(path_trash)
|
87
|
+
|
88
|
+
|
89
|
+
#result = `which #{name}`
|
90
|
+
#%x{ }
|
91
|
+
|
92
|
+
# result = system 'cp', '/full/path/to/my_file', '/target/directory'
|
93
|
+
# if result.nil?
|
94
|
+
# puts "Error was #{$?}"
|
95
|
+
# elsif result
|
96
|
+
# puts "You made it!"
|
97
|
+
# end
|
98
|
+
|
99
|
+
# Dir['*.rb'] #basic globs
|
100
|
+
# Dir['**/*.rb'] #** == any depth of directory, including current dir.
|
101
|
+
# #=> array of relative names
|
102
|
+
#
|
103
|
+
# File.expand_path('~/file.txt') #=> "/User/mat/file.txt"
|
104
|
+
# File.dirname('dir/file.txt') #=> 'dir'
|
105
|
+
# File.basename('dir/file.txt') #=> 'file.txt'
|
106
|
+
# File.join('a', 'bunch', 'of', 'strings') #=> 'a/bunch/of/strings'
|
107
|
+
#
|
108
|
+
#
|
109
|
+
# cd(dir, options)
|
110
|
+
# cd(dir, options) {|dir| .... }
|
111
|
+
# pwd()
|
112
|
+
# mkdir(dir, options)
|
113
|
+
# mkdir(list, options)
|
114
|
+
# mkdir_p(dir, options)
|
115
|
+
# mkdir_p(list, options)
|
116
|
+
# rmdir(dir, options)
|
117
|
+
# rmdir(list, options)
|
118
|
+
# ln(old, new, options)
|
119
|
+
# ln(list, destdir, options)
|
120
|
+
# ln_s(old, new, options)
|
121
|
+
# ln_s(list, destdir, options)
|
122
|
+
# ln_sf(src, dest, options)
|
123
|
+
# cp(src, dest, options)
|
124
|
+
# cp(list, dir, options)
|
125
|
+
# cp_r(src, dest, options)
|
126
|
+
# cp_r(list, dir, options)
|
127
|
+
# mv(src, dest, options)
|
128
|
+
# mv(list, dir, options)
|
129
|
+
# rm(list, options)
|
130
|
+
# rm_r(list, options)
|
131
|
+
# rm_rf(list, options)
|
132
|
+
# install(src, dest, mode = <src's>, options)
|
133
|
+
# chmod(mode, list, options)
|
134
|
+
# chmod_R(mode, list, options)
|
135
|
+
# chown(user, group, list, options)
|
136
|
+
# chown_R(user, group, list, options)
|
137
|
+
# touch(list, options)
|
@@ -0,0 +1 @@
|
|
1
|
+
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/Users/bruno/Documents/DOCS/wallpapers/01370_planetnewyork_2560x1600.jpg"'
|
@@ -0,0 +1 @@
|
|
1
|
+
watch -n 0 olsr-topology-view.pl --server 127.0.0.1 --style 1 --resolv --bgcolor \#888888
|
@@ -0,0 +1 @@
|
|
1
|
+
curl http://localhost:2003/monitor | python -mjson.tool
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# watermark.sh
|
4
|
+
# $Id: watermark,v 1.1 2004/10/03 10:52:21 ullgren Exp $
|
5
|
+
#
|
6
|
+
# Add a defined watermark to a series of pictures
|
7
|
+
#
|
8
|
+
|
9
|
+
# Absolute Location of the Watermark file
|
10
|
+
WM="/home/bruno/watermark-bmphoto-large.png"
|
11
|
+
|
12
|
+
if [ ! -n "$1" ]
|
13
|
+
then
|
14
|
+
zenity --error --text "Please select pics to be watermarked!"
|
15
|
+
exit $E_BADARGS
|
16
|
+
fi
|
17
|
+
|
18
|
+
typeset -i CNT=1
|
19
|
+
typeset -i CUR=0
|
20
|
+
|
21
|
+
(
|
22
|
+
for pic in "$@"
|
23
|
+
do
|
24
|
+
echo "#Watermarking $pic"
|
25
|
+
|
26
|
+
composite -dissolve 40% -gravity SouthEast -geometry +0+60 "$WM" "$pic" "$pic"
|
27
|
+
|
28
|
+
CUR=$CNT*100/$#
|
29
|
+
echo $CUR
|
30
|
+
CNT=$CNT+1
|
31
|
+
done
|
32
|
+
) | zenity --progress --auto-close --percentage=0
|