sakuric 2.0.1

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.
Files changed (407) hide show
  1. data/CHANGELOG +13 -0
  2. data/Gemfile +22 -0
  3. data/Gemfile.lock +60 -0
  4. data/HISTORY.yml +13 -0
  5. data/INSTALL +5 -0
  6. data/LICENSE +1 -0
  7. data/Makefile +19 -0
  8. data/Manifest +405 -0
  9. data/README.md +72 -0
  10. data/Rakefile +4 -0
  11. data/TODO +3 -0
  12. data/VERSION +1 -0
  13. data/bashrc +30 -0
  14. data/bashrc.d/00-functions.include +7 -0
  15. data/bashrc.d/01-sakura_checks.include +15 -0
  16. data/bashrc.d/02-uname.include +11 -0
  17. data/bashrc.d/80-ruby.include +4 -0
  18. data/bashrc.d/99-dirs.include +11 -0
  19. data/bashrc.d/aliases.include +20 -0
  20. data/bashrc.d/common.include +7 -0
  21. data/bashrc.d/local.d/README +1 -0
  22. data/bashrc.d/local.d/nothing.include +0 -0
  23. data/bashrc.d/uname.d/Darwin +6 -0
  24. data/bashrc.d/uname.d/Linux +0 -0
  25. data/bashrc.local.sample +11 -0
  26. data/bin/10 +7 -0
  27. data/bin/10times +7 -0
  28. data/bin/1every +22 -0
  29. data/bin/1everyN +22 -0
  30. data/bin/1suN +22 -0
  31. data/bin/2 +5 -0
  32. data/bin/act +24 -0
  33. data/bin/amarelo +2 -0
  34. data/bin/arancio +4 -0
  35. data/bin/arcobaleno +10 -0
  36. data/bin/bianco +3 -0
  37. data/bin/black +2 -0
  38. data/bin/brew-install +3 -0
  39. data/bin/cache +50 -0
  40. data/bin/cache3 +50 -0
  41. data/bin/cheorae +4 -0
  42. data/bin/colorastdouterr +37 -0
  43. data/bin/cp2desktop +3 -0
  44. data/bin/create-git-repo.sh +24 -0
  45. data/bin/csoe +37 -0
  46. data/bin/data +3 -0
  47. data/bin/derive +90 -0
  48. data/bin/dimmi +31 -0
  49. data/bin/dimmiora +4 -0
  50. data/bin/doppioni +48 -0
  51. data/bin/du- +9 -0
  52. data/bin/duplicates +48 -0
  53. data/bin/echodo +7 -0
  54. data/bin/ensure_line_present +82 -0
  55. data/bin/epoch2date +5 -0
  56. data/bin/fanout +100 -0
  57. data/bin/find-broken-symlink +26 -0
  58. data/bin/find-duplicates +48 -0
  59. data/bin/find-special-chars-within-filenames +12 -0
  60. data/bin/fix-terminal +5 -0
  61. data/bin/gce-create-centos-instance +5 -0
  62. data/bin/gce-create-custom-image +8 -0
  63. data/bin/gce-curl-get-instances-for-project +7 -0
  64. data/bin/gce-get-token +3 -0
  65. data/bin/gce-getproject-metadata +35 -0
  66. data/bin/gce-public-ip +4 -0
  67. data/bin/gcutil-fetch +36 -0
  68. data/bin/giallo +2 -0
  69. data/bin/git-clone-in-non-empty-dir +21 -0
  70. data/bin/git-ignore +3 -0
  71. data/bin/git-repos +98 -0
  72. data/bin/git-repos.py +99 -0
  73. data/bin/gitinfo +2 -0
  74. data/bin/google-spreadsheet-cat +40 -0
  75. data/bin/google_ips +5 -0
  76. data/bin/gray +3 -0
  77. data/bin/green +2 -0
  78. data/bin/grigio +3 -0
  79. data/bin/gsutil-debug-bucket +12 -0
  80. data/bin/gsutil-get-oauth2-token +4 -0
  81. data/bin/gugol-image +74 -0
  82. data/bin/hamachi-ubuntu-install +17 -0
  83. data/bin/head-1^-1 +5 -0
  84. data/bin/ifdownup +13 -0
  85. data/bin/immature/ok2 +25 -0
  86. data/bin/immature/twice-still-broken +9 -0
  87. data/bin/install-gic-repo +13 -0
  88. data/bin/install-sakura-on-debian-latest +6 -0
  89. data/bin/iphoto_big_files.sh +37 -0
  90. data/bin/itunes +140 -0
  91. data/bin/jason-xpath.rb +54 -0
  92. data/bin/jsawk +1128 -0
  93. data/bin/json-xpath.rb +54 -0
  94. data/bin/keepup +13 -0
  95. data/bin/lsof-top10 +3 -0
  96. data/bin/minicook +218 -0
  97. data/bin/mv2. +2 -0
  98. data/bin/mv2desktop +2 -0
  99. data/bin/mv2dropbox +2 -0
  100. data/bin/mv2here +2 -0
  101. data/bin/mvto +39 -0
  102. data/bin/nero +2 -0
  103. data/bin/never_as_root +18 -0
  104. data/bin/not +16 -0
  105. data/bin/ok +42 -0
  106. data/bin/orange +4 -0
  107. data/bin/pink +2 -0
  108. data/bin/polygen-dell +7 -0
  109. data/bin/polygen-heanet +6 -0
  110. data/bin/polygen-labs +4 -0
  111. data/bin/print_key_val +4 -0
  112. data/bin/rainbow +10 -0
  113. data/bin/recipe +19 -0
  114. data/bin/red +2 -0
  115. data/bin/remember-command +140 -0
  116. data/bin/remember-command.rb +140 -0
  117. data/bin/richelp +99 -0
  118. data/bin/ricorda-comando +140 -0
  119. data/bin/rosa +2 -0
  120. data/bin/rosso +2 -0
  121. data/bin/run-parts.sh +50 -0
  122. data/bin/sakura-check-version +48 -0
  123. data/bin/sakura-init.DRAFT +5 -0
  124. data/bin/sakura-version +2 -0
  125. data/bin/sano +5 -0
  126. data/bin/sbianca +3 -0
  127. data/bin/sblua +2 -0
  128. data/bin/setterm-reset +5 -0
  129. data/bin/sgialla +2 -0
  130. data/bin/sgrigia +2 -0
  131. data/bin/split +37 -0
  132. data/bin/split.rb +37 -0
  133. data/bin/srosa +1 -0
  134. data/bin/srossa +2 -0
  135. data/bin/strip-white-spaces +2 -0
  136. data/bin/stty-sane +5 -0
  137. data/bin/sudo^-1 +18 -0
  138. data/bin/sverda +6 -0
  139. data/bin/swift-saio-install.sh +336 -0
  140. data/bin/synergyc +0 -0
  141. data/bin/synergys +0 -0
  142. data/bin/syracuse.pl +29 -0
  143. data/bin/tail-n+2 +5 -0
  144. data/bin/tellme +31 -0
  145. data/bin/tellme-time +4 -0
  146. data/bin/timeout3 +91 -0
  147. data/bin/top5 +4 -0
  148. data/bin/trim +4 -0
  149. data/bin/trova-broken-symlink +26 -0
  150. data/bin/twice +5 -0
  151. data/bin/twice.rb +5 -0
  152. data/bin/ubuntu-install-hamachi64 +17 -0
  153. data/bin/ultimo +5 -0
  154. data/bin/upload.py +2380 -0
  155. data/bin/usleep +0 -0
  156. data/bin/varia +90 -0
  157. data/bin/verde +2 -0
  158. data/bin/vermelho +2 -0
  159. data/bin/vim-whereveritis +5 -0
  160. data/bin/viola +1 -0
  161. data/bin/virsh-list-all-vms.py +21 -0
  162. data/bin/virtualbox-manage +41 -0
  163. data/bin/weekend +12 -0
  164. data/bin/whattimeisit +4 -0
  165. data/bin/whereis-ip +5 -0
  166. data/bin/white +3 -0
  167. data/bin/whitefy +3 -0
  168. data/bin/yellow +2 -0
  169. data/bin/yellowfy +2 -0
  170. data/bin/zombies +25 -0
  171. data/docz/polygen/dell.grm +100 -0
  172. data/docz/polygen/frati.grm +85 -0
  173. data/docz/polygen/heanet.grm +54 -0
  174. data/docz/richelp/gcompute.yml +52 -0
  175. data/docz/richelp/gcutil.yml +52 -0
  176. data/docz/richelp/gmail.yml +2 -0
  177. data/docz/richelp/ruby.yml +81 -0
  178. data/docz/richelp/sakura.yml +20 -0
  179. data/docz/richelp/sql.yml +12 -0
  180. data/docz/richelp/ubuntu.yml +22 -0
  181. data/docz/richelp/yaml.yml +39 -0
  182. data/docz/richelp/yml.yml +39 -0
  183. data/etc/sakura/devel.yml +36 -0
  184. data/etc/synergy.conf.example +37 -0
  185. data/images/color-sample.png +0 -0
  186. data/images/google.jpg +0 -0
  187. data/images/icons/toilet.png +0 -0
  188. data/images/sakura.jpg +0 -0
  189. data/images/sakura2.jpg +0 -0
  190. data/init.rb +5 -0
  191. data/lib/classes/arrays.rb +246 -0
  192. data/lib/classes/debug_ric.rb +196 -0
  193. data/lib/classes/fake_data.rb +8 -0
  194. data/lib/classes/ric_debug.rb +0 -0
  195. data/lib/classes/ricconf.rb +110 -0
  196. data/lib/classes/richelp.rb +70 -0
  197. data/lib/classes/strings.rb +284 -0
  198. data/lib/facter/google_compute_engine.rb +10 -0
  199. data/lib/recipes/20120411-puppet-rump-palladius.recipe +2 -0
  200. data/lib/recipes/20120726-skype.ubuntu.recipe +16 -0
  201. data/lib/recipes/20130206-puppet3.ubuntu.recipe +32 -0
  202. data/lib/recipes/20130206-redis.linux.recipe +17 -0
  203. data/lib/recipes/20130208-vanilla.linux.recipe +37 -0
  204. data/lib/recipes/Makefile +4 -0
  205. data/lib/recipes/README.md +29 -0
  206. data/lib/recipes/scripts/redis.sh +14 -0
  207. data/lib/ric.rb +156 -0
  208. data/lib/ric_colors.rb +313 -0
  209. data/lib/ric_strings.rb +285 -0
  210. data/lib/sonice-players/itunes_mac.rb +43 -0
  211. data/lib/sonice-players/itunes_win.rb +47 -0
  212. data/lib/sonice-players/mpd.rb +45 -0
  213. data/lib/sonice-players/rhythmbox.rb +38 -0
  214. data/profile +1 -0
  215. data/sakuric.gemspec +40 -0
  216. data/sbin/install-sakura-on-debian +25 -0
  217. data/sbin/make-install.sh +10 -0
  218. data/sbin/mate-createsymlink +4 -0
  219. data/sounds/0.ogg +0 -0
  220. data/sounds/0.wav +0 -0
  221. data/sounds/01.ogg +0 -0
  222. data/sounds/02.ogg +0 -0
  223. data/sounds/03.ogg +0 -0
  224. data/sounds/08.ogg +0 -0
  225. data/sounds/09.ogg +0 -0
  226. data/sounds/1.ogg +0 -0
  227. data/sounds/1.wav +0 -0
  228. data/sounds/10.ogg +0 -0
  229. data/sounds/100.ogg +0 -0
  230. data/sounds/11.ogg +0 -0
  231. data/sounds/12.ogg +0 -0
  232. data/sounds/13.ogg +0 -0
  233. data/sounds/14.ogg +0 -0
  234. data/sounds/15.ogg +0 -0
  235. data/sounds/16.ogg +0 -0
  236. data/sounds/17.ogg +0 -0
  237. data/sounds/18.ogg +0 -0
  238. data/sounds/19.ogg +0 -0
  239. data/sounds/2.ogg +0 -0
  240. data/sounds/2.wav +0 -0
  241. data/sounds/20.ogg +0 -0
  242. data/sounds/21.ogg +0 -0
  243. data/sounds/22.ogg +0 -0
  244. data/sounds/23.ogg +0 -0
  245. data/sounds/24.ogg +0 -0
  246. data/sounds/26.ogg +0 -0
  247. data/sounds/3.ogg +0 -0
  248. data/sounds/3.wav +0 -0
  249. data/sounds/30.ogg +0 -0
  250. data/sounds/34.ogg +0 -0
  251. data/sounds/4.ogg +0 -0
  252. data/sounds/4.wav +0 -0
  253. data/sounds/40.ogg +0 -0
  254. data/sounds/42.ogg +0 -0
  255. data/sounds/45.ogg +0 -0
  256. data/sounds/47.ogg +0 -0
  257. data/sounds/5.ogg +0 -0
  258. data/sounds/5.wav +0 -0
  259. data/sounds/50.ogg +0 -0
  260. data/sounds/6.ogg +0 -0
  261. data/sounds/6.wav +0 -0
  262. data/sounds/60.ogg +0 -0
  263. data/sounds/7.ogg +0 -0
  264. data/sounds/7.wav +0 -0
  265. data/sounds/70.ogg +0 -0
  266. data/sounds/8.ogg +0 -0
  267. data/sounds/8.wav +0 -0
  268. data/sounds/80.ogg +0 -0
  269. data/sounds/9.ogg +0 -0
  270. data/sounds/9.wav +0 -0
  271. data/sounds/90.ogg +0 -0
  272. data/sounds/a.ogg +0 -0
  273. data/sounds/aaahhh.ogg +0 -0
  274. data/sounds/abologna.ogg +0 -0
  275. data/sounds/adargenta.ogg +0 -0
  276. data/sounds/alzatiecammina.ogg +0 -0
  277. data/sounds/apache.ogg +0 -0
  278. data/sounds/attenzione.ogg +0 -0
  279. data/sounds/awesome.m4a +0 -0
  280. data/sounds/bazinga.mp3 +0 -0
  281. data/sounds/bazinga.ogg +0 -0
  282. data/sounds/bela regaz.wav +0 -0
  283. data/sounds/benvenuti.wav +0 -0
  284. data/sounds/benvenuti2.wav +0 -0
  285. data/sounds/bergonz.ogg +0 -0
  286. data/sounds/boh.ogg +0 -0
  287. data/sounds/buahah.ogg +0 -0
  288. data/sounds/buonasera.ogg +0 -0
  289. data/sounds/buongiorno.ogg +0 -0
  290. data/sounds/burp.ogg +0 -0
  291. data/sounds/carlo.ogg +0 -0
  292. data/sounds/cena.ogg +0 -0
  293. data/sounds/che figata.m4a +0 -0
  294. data/sounds/che figlio di puttana.m4a +0 -0
  295. data/sounds/che.ogg +0 -0
  296. data/sounds/ciao.ogg +0 -0
  297. data/sounds/ciao.wav +0 -0
  298. data/sounds/da.ogg +0 -0
  299. data/sounds/davide.ogg +0 -0
  300. data/sounds/demone.ogg +0 -0
  301. data/sounds/dhcp.ogg +0 -0
  302. data/sounds/dinuovo.ogg +0 -0
  303. data/sounds/dns.ogg +0 -0
  304. data/sounds/dopo.ogg +0 -0
  305. data/sounds/e'.ogg +0 -0
  306. data/sounds/eattivo.ogg +0 -0
  307. data/sounds/ee.ogg +0 -0
  308. data/sounds/ehi.ogg +0 -0
  309. data/sounds/eoragiu.ogg +0 -0
  310. data/sounds/eorasu.ogg +0 -0
  311. data/sounds/eripartita.ogg +0 -0
  312. data/sounds/estato.ogg +0 -0
  313. data/sounds/estatoriavviato.ogg +0 -0
  314. data/sounds/fratro.ogg +0 -0
  315. data/sounds/frozenbubble.ogg +0 -0
  316. data/sounds/funziona.ogg +0 -0
  317. data/sounds/go raibh mile maith agaibh.m4a +0 -0
  318. data/sounds/grazie.ogg +0 -0
  319. data/sounds/h1.ogg +0 -0
  320. data/sounds/hainuovaposta.ogg +0 -0
  321. data/sounds/hogiamangiato.ogg +0 -0
  322. data/sounds/host.ogg +0 -0
  323. data/sounds/il.ogg +0 -0
  324. data/sounds/ilcomputer.ogg +0 -0
  325. data/sounds/ilnumerodaleiselezionatoe.ogg +0 -0
  326. data/sounds/ilprocesso.ogg +0 -0
  327. data/sounds/ilprogramma.ogg +0 -0
  328. data/sounds/ilservizio.ogg +0 -0
  329. data/sounds/imap.ogg +0 -0
  330. data/sounds/imieisuperpoterimidiconoche.ogg +0 -0
  331. data/sounds/infunzione.ogg +0 -0
  332. data/sounds/inpunto.ogg +0 -0
  333. data/sounds/ipmon.ogg +0 -0
  334. data/sounds/laconnessioneadinternet.ogg +0 -0
  335. data/sounds/lastampante.ogg +0 -0
  336. data/sounds/lazzaron.ogg +0 -0
  337. data/sounds/ldap.ogg +0 -0
  338. data/sounds/linterfaccia.ogg +0 -0
  339. data/sounds/lucilla.ogg +0 -0
  340. data/sounds/ma vaffanculo.m4a +0 -0
  341. data/sounds/majjal.wav +0 -0
  342. data/sounds/mamma.ogg +0 -0
  343. data/sounds/mauro.ogg +0 -0
  344. data/sounds/max.ogg +0 -0
  345. data/sounds/meerda.wav +0 -0
  346. data/sounds/meno.ogg +0 -0
  347. data/sounds/merda clo.wav +0 -0
  348. data/sounds/mezza.ogg +0 -0
  349. data/sounds/mila.ogg +0 -0
  350. data/sounds/mille.ogg +0 -0
  351. data/sounds/minuti.ogg +0 -0
  352. data/sounds/named.ogg +0 -0
  353. data/sounds/no.ogg +0 -0
  354. data/sounds/nohofame.ogg +0 -0
  355. data/sounds/nonfunziona.ogg +0 -0
  356. data/sounds/nonriescoatrovare.ogg +0 -0
  357. data/sounds/nonsarebbeoradilavorare.ogg +0 -0
  358. data/sounds/nonstalavorando.ogg +0 -0
  359. data/sounds/numero.wav +0 -0
  360. data/sounds/ooohhh.ogg +0 -0
  361. data/sounds/pinger.ogg +0 -0
  362. data/sounds/pocofa.ogg +0 -0
  363. data/sounds/pop3.ogg +0 -0
  364. data/sounds/porca puttana.m4a +0 -0
  365. data/sounds/porcapupazza.ogg +0 -0
  366. data/sounds/ppp.ogg +0 -0
  367. data/sounds/pranzo.ogg +0 -0
  368. data/sounds/prego.ogg +0 -0
  369. data/sounds/prima.ogg +0 -0
  370. data/sounds/qualcosamidice.ogg +0 -0
  371. data/sounds/raggiungibile.ogg +0 -0
  372. data/sounds/riccardo.ogg +0 -0
  373. data/sounds/salsa ridge.wav +0 -0
  374. data/sounds/scusa.ogg +0 -0
  375. data/sounds/seriously man.m4a +0 -0
  376. data/sounds/si.ogg +0 -0
  377. data/sounds/sito porno con sonoro.wav +0 -0
  378. data/sounds/socmel.wav +0 -0
  379. data/sounds/sono.ogg +0 -0
  380. data/sounds/sonoacasa.ogg +0 -0
  381. data/sounds/sonole.ogg +0 -0
  382. data/sounds/sputo.ogg +0 -0
  383. data/sounds/ssh.ogg +0 -0
  384. data/sounds/stagiocando.ogg +0 -0
  385. data/sounds/statospento.ogg +0 -0
  386. data/sounds/stopaiodipalle.ogg +0 -0
  387. data/sounds/thesedicks.wav +0 -0
  388. data/sounds/tornatosu.ogg +0 -0
  389. data/sounds/trapoco.ogg +0 -0
  390. data/sounds/trequarti.ogg +0 -0
  391. data/sounds/tutti.ogg +0 -0
  392. data/sounds/una.ogg +0 -0
  393. data/sounds/unquarto.ogg +0 -0
  394. data/sounds/virgola.ogg +0 -0
  395. data/sources/c/usleep.c +50 -0
  396. data/spec/my_first_spec.rb +6 -0
  397. data/tasks/sakuric-gem.rake +21 -0
  398. data/tasks/testing.rake +15 -0
  399. data/templates/bashrc.inject +10 -0
  400. data/templates/happy_christmas.ascii_art +5 -0
  401. data/test/roodi.sh +10 -0
  402. data/test/test_mini_failing.rb +3 -0
  403. data/test/test_mini_ok.rb +3 -0
  404. data/test/test_ruby_syntax.sh +12 -0
  405. data/third-party/jsawk/README.markdown +437 -0
  406. data/third-party/jsawk/jsawk +1128 -0
  407. metadata +835 -0
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ # To install: sudo apt-get install polygen polygen-data
4
+
5
+ NARG=${1:-10}
6
+ polygen $SAKURADIR/doc/polygen/heanet.grm -X $NARG | uniq
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ NARG=${1:-4}
4
+ polygen $SAKURADIR/doc/polygen/frati.grm -X $NARG | uniq
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ echo "$1: $(azure $2)"
4
+
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ I=1
4
+ # evito il nero che e' 30
5
+ while read linea
6
+ do
7
+ I=$(($I+1));
8
+ N=$((31+$I%7))
9
+ echo -en "\033[1;${N}m$linea\033[0m\n"
10
+ done
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+
3
+ # TODO automcompletion
4
+ # TODO
5
+
6
+ recipe="$1"
7
+
8
+ usage() {
9
+ RECIPEDIR=$SAKURALIB/recipes/
10
+ echo Recipes: `cd $RECIPEDIR && ls *.recipe`
11
+ }
12
+ if [ "aa$1" = "aa" ] ; then
13
+ usage
14
+ else
15
+ echo recipe install for $1:
16
+ echo PreChecks
17
+ echo Get code from... needs ruby
18
+ echo PostChecks
19
+ fi
data/bin/red ADDED
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ echo -en "\033[1;31m$*\033[0m\n"
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+
5
+ ############################################################
6
+ @author: Riccardo Carlesso
7
+ @email: riccardo.carlesso@gmail.com
8
+ @maturity: development
9
+ @language: Ruby
10
+ @synopsis: dumps command into a history file
11
+ @tags: development, rcarlesso, test
12
+ @description:
13
+ See in $myconf
14
+
15
+ Since version 0.9.3 it supports options. Try -e, its super cool
16
+ ############################################################
17
+
18
+ =end
19
+
20
+ require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
21
+ require 'socket'
22
+ require ENV['SAKURALIB'] + '/ric_colors'
23
+ require ENV['SAKURALIB'] + '/ric_strings'
24
+
25
+ # Program constants, automagically picked up by RicLib
26
+ # More configuration could be written in:
27
+ # $SVNHOME/etc/ricsvn/<FILENAME>.yml
28
+ # That would go into the variable '$prog_conf_d'
29
+ $myconf = {
30
+ :app_name => 'remember',
31
+ :remember_dir => '~/remember',
32
+ :tail_len => 20,
33
+ :description => 'This script tries to remember what you just did on the CLI
34
+ for future use. It does it by recording on a directory.
35
+ Basically its a "persistent" history'
36
+ }
37
+
38
+ $PROG_VER = '0.9.3'
39
+ $DEBUG = false
40
+
41
+ def deb(str)
42
+ puts "#DEB# #{str}" if $DEBUG #
43
+ end
44
+
45
+ def debug_on(str)
46
+ $DEBUG = true
47
+ end
48
+
49
+ def usage(comment=nil)
50
+ puts "#{$0} v.#{$PROG_VER}"
51
+ puts "Usage: #{File.basename $0} [-dhjtv] [-l LOGFILE] [-g STR] <COMMAND> <TO> <ISSUE>"
52
+ puts comment if comment
53
+ puts description
54
+ #exit 11
55
+ end
56
+
57
+ def init()
58
+ $opts = {}
59
+ optparse = OptionParser.new do |opts|
60
+ # Set a banner, displayed at the top of the help screen.
61
+ #opts.banner = "#{$0} v.#{$PROG_VER}\n Usage: #{File.basename $0} [options] file1 file2 ..."
62
+ $opts[:verbose] = $opts[:jabba] = $opts[:debug] = false
63
+ $opts[:logfile] = $opts[:grep] = nil
64
+ $opts[:tail] = $myconf[:tail_len]
65
+ opts.on( '-d', '--debug', 'enables debug (DFLT=false)' ) { $opts[:debug] = true}
66
+ opts.on( '-e', '--edit', "edits file with vi" ) { $opts[:edit] = true }
67
+ opts.on( '-h', '--help', 'Display this screen' ) { puts(opts); exit 1 }
68
+ opts.on( '-g', '--grep STRING', 'Searchs for STRING' ) {|str| $opts[:grep] = str }
69
+ opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) {|file| $opts[:logfile] = file }
70
+ opts.on( '-t', '--tail', "Just tail argument (dflt tail length=#{$myconf[:tail_len]}" ) {|len| $opts[:tail] = len || $myconf[:tail_len]}
71
+ opts.on( '-v', '--verbose', 'Output more information' ) { $opts[:verbose] = true}
72
+ end
73
+ optparse.parse!
74
+ $DEBUG = $opts[:debug]
75
+ debug_on('enabled via GetOpts') if $opts[:debug]
76
+ puts "Being verbose" if $opts[:verbose]
77
+ puts "Logging to file #{$opts[:logfile]}" if $opts[:logfile]
78
+ end
79
+
80
+ def remember_and_execute_command(command,logfile,remember=true)
81
+ if remember
82
+ File.open(logfile, 'a') { |f| f.write "#{Time.now} #{Socket.gethostname} [#{ENV['USER']}] #{command}\n" }
83
+ puts "#Remembering: '''#{command}'''"
84
+ puts "#Written file: #{logfile}"
85
+ end
86
+ puts "#Now executing: #{command}"
87
+ system(command) # Id need a "$@"
88
+ deb "#Just executed (exit=#{$!}): #{command}"
89
+ deb "#Written file (2): #{logfile}"
90
+ end
91
+
92
+ #Tue Aug 28 15:57:38 +0100 2012 derek.dub.corp.google.com [rcarlesso] @tag21 @tags2 my command
93
+ def remember_color_regex(str)
94
+ d1,d2,d3,tim,gmt,yr,host,user,command = str.split(' ',9)
95
+ color_date = gray([d1,d2,d3,tim,gmt,yr].join(' '))
96
+ color_host = blue(host.split('.').first)
97
+ color_user = gray(user)
98
+ # makes the tags cyan :)
99
+ color_cmd = yellow(command)
100
+ color_cmd = command.split(' ').map{|word| word.begin_with?('@') ? cyan(word) : yellow(word) }.join(' ')
101
+
102
+ #puts str
103
+ #return [ color_date, color_host, color_user, color_cmd ].join ' '
104
+ color_cmd
105
+ end
106
+
107
+
108
+ def show_last_commands(logfile)
109
+ mycommand = "tail -n #{$opts[:tail]} '#{logfile}'"
110
+ if $opts[:grep]
111
+ mycommand ="grep --color '#{ $opts[:grep] }' '#{logfile}'"
112
+ end
113
+ deb "command: #{mycommand}"
114
+ lines = %x{ #{mycommand} } # doesnt work in ruby1.9!
115
+ #lines = `#{mycommand}` # doesnt work in ruby1.9!
116
+ lines.split("\n").each do |line|
117
+ puts remember_color_regex(line) # "Line: #{line}"
118
+ end
119
+ $stderr.puts "# Try also: cat #{logfile}"
120
+ end
121
+
122
+ def main
123
+ init
124
+ path = File.expand_path($myconf[:remember_dir]) # for normal users
125
+ path = File.expand_path(ENV['SVNHOME'] + "/var/remember/" ) if ENV['SVNHOME'] # for Riccardo
126
+ logfile = path +"/all"
127
+ mycommand = ARGV.join ' '
128
+ if ($opts[:edit]) # vi and piositions at end of file
129
+ remember_and_execute_command("vi + '#{logfile}'", logfile, false)
130
+ exit 0
131
+ end
132
+ unless(ARGV.size > 0) # No arguments provided
133
+ show_last_commands(logfile)
134
+ exit 1
135
+ end
136
+ puts `mkdir -p '#{path}'`
137
+ remember_and_execute_command(mycommand, logfile)
138
+ end
139
+
140
+ main()
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+
5
+ ############################################################
6
+ @author: Riccardo Carlesso
7
+ @email: riccardo.carlesso@gmail.com
8
+ @maturity: development
9
+ @language: Ruby
10
+ @synopsis: dumps command into a history file
11
+ @tags: development, rcarlesso, test
12
+ @description:
13
+ See in $myconf
14
+
15
+ Since version 0.9.3 it supports options. Try -e, its super cool
16
+ ############################################################
17
+
18
+ =end
19
+
20
+ require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
21
+ require 'socket'
22
+ require ENV['SAKURALIB'] + '/ric_colors'
23
+ require ENV['SAKURALIB'] + '/ric_strings'
24
+
25
+ # Program constants, automagically picked up by RicLib
26
+ # More configuration could be written in:
27
+ # $SVNHOME/etc/ricsvn/<FILENAME>.yml
28
+ # That would go into the variable '$prog_conf_d'
29
+ $myconf = {
30
+ :app_name => 'remember',
31
+ :remember_dir => '~/remember',
32
+ :tail_len => 20,
33
+ :description => 'This script tries to remember what you just did on the CLI
34
+ for future use. It does it by recording on a directory.
35
+ Basically its a "persistent" history'
36
+ }
37
+
38
+ $PROG_VER = '0.9.3'
39
+ $DEBUG = false
40
+
41
+ def deb(str)
42
+ puts "#DEB# #{str}" if $DEBUG #
43
+ end
44
+
45
+ def debug_on(str)
46
+ $DEBUG = true
47
+ end
48
+
49
+ def usage(comment=nil)
50
+ puts "#{$0} v.#{$PROG_VER}"
51
+ puts "Usage: #{File.basename $0} [-dhjtv] [-l LOGFILE] [-g STR] <COMMAND> <TO> <ISSUE>"
52
+ puts comment if comment
53
+ puts description
54
+ #exit 11
55
+ end
56
+
57
+ def init()
58
+ $opts = {}
59
+ optparse = OptionParser.new do |opts|
60
+ # Set a banner, displayed at the top of the help screen.
61
+ #opts.banner = "#{$0} v.#{$PROG_VER}\n Usage: #{File.basename $0} [options] file1 file2 ..."
62
+ $opts[:verbose] = $opts[:jabba] = $opts[:debug] = false
63
+ $opts[:logfile] = $opts[:grep] = nil
64
+ $opts[:tail] = $myconf[:tail_len]
65
+ opts.on( '-d', '--debug', 'enables debug (DFLT=false)' ) { $opts[:debug] = true}
66
+ opts.on( '-e', '--edit', "edits file with vi" ) { $opts[:edit] = true }
67
+ opts.on( '-h', '--help', 'Display this screen' ) { puts(opts); exit 1 }
68
+ opts.on( '-g', '--grep STRING', 'Searchs for STRING' ) {|str| $opts[:grep] = str }
69
+ opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) {|file| $opts[:logfile] = file }
70
+ opts.on( '-t', '--tail', "Just tail argument (dflt tail length=#{$myconf[:tail_len]}" ) {|len| $opts[:tail] = len || $myconf[:tail_len]}
71
+ opts.on( '-v', '--verbose', 'Output more information' ) { $opts[:verbose] = true}
72
+ end
73
+ optparse.parse!
74
+ $DEBUG = $opts[:debug]
75
+ debug_on('enabled via GetOpts') if $opts[:debug]
76
+ puts "Being verbose" if $opts[:verbose]
77
+ puts "Logging to file #{$opts[:logfile]}" if $opts[:logfile]
78
+ end
79
+
80
+ def remember_and_execute_command(command,logfile,remember=true)
81
+ if remember
82
+ File.open(logfile, 'a') { |f| f.write "#{Time.now} #{Socket.gethostname} [#{ENV['USER']}] #{command}\n" }
83
+ puts "#Remembering: '''#{command}'''"
84
+ puts "#Written file: #{logfile}"
85
+ end
86
+ puts "#Now executing: #{command}"
87
+ system(command) # Id need a "$@"
88
+ deb "#Just executed (exit=#{$!}): #{command}"
89
+ deb "#Written file (2): #{logfile}"
90
+ end
91
+
92
+ #Tue Aug 28 15:57:38 +0100 2012 derek.dub.corp.google.com [rcarlesso] @tag21 @tags2 my command
93
+ def remember_color_regex(str)
94
+ d1,d2,d3,tim,gmt,yr,host,user,command = str.split(' ',9)
95
+ color_date = gray([d1,d2,d3,tim,gmt,yr].join(' '))
96
+ color_host = blue(host.split('.').first)
97
+ color_user = gray(user)
98
+ # makes the tags cyan :)
99
+ color_cmd = yellow(command)
100
+ color_cmd = command.split(' ').map{|word| word.begin_with?('@') ? cyan(word) : yellow(word) }.join(' ')
101
+
102
+ #puts str
103
+ #return [ color_date, color_host, color_user, color_cmd ].join ' '
104
+ color_cmd
105
+ end
106
+
107
+
108
+ def show_last_commands(logfile)
109
+ mycommand = "tail -n #{$opts[:tail]} '#{logfile}'"
110
+ if $opts[:grep]
111
+ mycommand ="grep --color '#{ $opts[:grep] }' '#{logfile}'"
112
+ end
113
+ deb "command: #{mycommand}"
114
+ lines = %x{ #{mycommand} } # doesnt work in ruby1.9!
115
+ #lines = `#{mycommand}` # doesnt work in ruby1.9!
116
+ lines.split("\n").each do |line|
117
+ puts remember_color_regex(line) # "Line: #{line}"
118
+ end
119
+ $stderr.puts "# Try also: cat #{logfile}"
120
+ end
121
+
122
+ def main
123
+ init
124
+ path = File.expand_path($myconf[:remember_dir]) # for normal users
125
+ path = File.expand_path(ENV['SVNHOME'] + "/var/remember/" ) if ENV['SVNHOME'] # for Riccardo
126
+ logfile = path +"/all"
127
+ mycommand = ARGV.join ' '
128
+ if ($opts[:edit]) # vi and piositions at end of file
129
+ remember_and_execute_command("vi + '#{logfile}'", logfile, false)
130
+ exit 0
131
+ end
132
+ unless(ARGV.size > 0) # No arguments provided
133
+ show_last_commands(logfile)
134
+ exit 1
135
+ end
136
+ puts `mkdir -p '#{path}'`
137
+ remember_and_execute_command(mycommand, logfile)
138
+ end
139
+
140
+ main()
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require ENV['SAKURALIB'] + '/ric.rb' # || die( "Can't find $SAKURALIB!")
4
+ require 'yaml' # to parse .yml files
5
+ require 'find'
6
+
7
+ # local status... this is SOOOOO 80s!
8
+ $some_exception = false
9
+
10
+ include RicHelpModule
11
+
12
+ def help(k, value=red('???'), query='', opts = {} )
13
+ a = k.to_s.escape_printf
14
+ b = value.to_s.escape_printf
15
+ if (query != '')
16
+ return unless (a.match(/#{query}/i) || b.match(/#{query}/i) )
17
+ end
18
+ return sprintf(
19
+ "#{ colora( $color_line_key, "%-#{$column_length}s") } #{ colora( ($color_line_val rescue 2) , "%s") }#{red " (#{opts})" unless opts.to_s == '{}' }\n" % [a,b]
20
+ ) rescue prosso("Bad Line ('#{$!}'): #{ [gray( a), white( b)] }")
21
+ end
22
+
23
+ def title(s)
24
+ puts( colora($color_title," #{s}") )
25
+ end
26
+
27
+
28
+ def special_help_title?(k2)
29
+ k2.match(/^_/) # inizia con '_'
30
+ end
31
+
32
+ def exception_yml(msg='')
33
+ $some_exception = true
34
+ { "Exception parsing YML file: '#{red msg}'" =>
35
+ { 'File/Line' => "#{__FILE__}, line #{__LINE__}",
36
+ "Legal files" => yellow( $help_files.sort.join(', ')) ,
37
+ }
38
+ }
39
+ end
40
+
41
+ def init(helpfile)
42
+ # compute help files
43
+ $help_files = []
44
+ Find.find($HELP_DIR) { |f| $help_files << File.basename(f, '.yml') if f.match('.yml$') }
45
+ # compute max length on the left
46
+ # TODO make this length dynamic on the search
47
+ $column_length = 5 # minimum
48
+ if( helpfile == '' || helpfile.nil? )
49
+ usage
50
+ exit 1
51
+ end
52
+ if helpfile == 'all'
53
+ puts "usali tutti TBD: #{$help_files.join ' '}"
54
+ helpfiles = $help_files
55
+ else
56
+ helpfiles = [ helpfile ]
57
+ end
58
+ helpfiles.each do |helpfile|
59
+ $help_opt = helpfile_parse( helpfile)
60
+ $help_opt.each{ |k1,v1|
61
+ v1.each{ |k2,v2|
62
+ k2 = k2.to_s
63
+ $column_length = k2.length if ( k2.length > $column_length )
64
+ } unless special_help_title?(k1)
65
+ }
66
+ end
67
+ end
68
+
69
+
70
+ def usage
71
+ puts "Usage: #{$0} [-hdvm] <FILE> [<QUERY>]"
72
+ puts " -d: debug"
73
+ puts " -h: this help"
74
+ puts " -m: open file with textmate (or GUARDA equivalent)"
75
+ puts " -t: just test file"
76
+ puts "Available files are: " + yellow( $help_files.join(', '))
77
+ exit 1
78
+ end
79
+
80
+ def main
81
+ usable_argv = ARGV.select{|arg| ! arg.match /^-/ }
82
+ debug_on('from ARGV') if ARGV.match /-d/
83
+ usage if ARGV.match /^-h/
84
+ file_str = usable_argv[0]
85
+ query_str = usable_argv[1] rescue ''
86
+ init(file_str)
87
+ puts "Search for: '#{green query_str}' into #{gray "#{file_str}.yml"}" if query_str
88
+ if ARGV.match /^-t/
89
+ show_test(file_str) # just test
90
+ else
91
+ show_help(query_str)
92
+ end
93
+ mate_cmd = "vim #{$HELP_DIR}/#{file_str}.yml"
94
+ puts "# To add stuff, type: #{gray mate_cmd }"
95
+ `#{mate_cmd}` if ARGV.match /-m/
96
+ exit ($some_exception ? 42 : 0)
97
+ end
98
+
99
+ main()
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+
5
+ ############################################################
6
+ @author: Riccardo Carlesso
7
+ @email: riccardo.carlesso@gmail.com
8
+ @maturity: development
9
+ @language: Ruby
10
+ @synopsis: dumps command into a history file
11
+ @tags: development, rcarlesso, test
12
+ @description:
13
+ See in $myconf
14
+
15
+ Since version 0.9.3 it supports options. Try -e, its super cool
16
+ ############################################################
17
+
18
+ =end
19
+
20
+ require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
21
+ require 'socket'
22
+ require ENV['SAKURALIB'] + '/ric_colors'
23
+ require ENV['SAKURALIB'] + '/ric_strings'
24
+
25
+ # Program constants, automagically picked up by RicLib
26
+ # More configuration could be written in:
27
+ # $SVNHOME/etc/ricsvn/<FILENAME>.yml
28
+ # That would go into the variable '$prog_conf_d'
29
+ $myconf = {
30
+ :app_name => 'remember',
31
+ :remember_dir => '~/remember',
32
+ :tail_len => 20,
33
+ :description => 'This script tries to remember what you just did on the CLI
34
+ for future use. It does it by recording on a directory.
35
+ Basically its a "persistent" history'
36
+ }
37
+
38
+ $PROG_VER = '0.9.3'
39
+ $DEBUG = false
40
+
41
+ def deb(str)
42
+ puts "#DEB# #{str}" if $DEBUG #
43
+ end
44
+
45
+ def debug_on(str)
46
+ $DEBUG = true
47
+ end
48
+
49
+ def usage(comment=nil)
50
+ puts "#{$0} v.#{$PROG_VER}"
51
+ puts "Usage: #{File.basename $0} [-dhjtv] [-l LOGFILE] [-g STR] <COMMAND> <TO> <ISSUE>"
52
+ puts comment if comment
53
+ puts description
54
+ #exit 11
55
+ end
56
+
57
+ def init()
58
+ $opts = {}
59
+ optparse = OptionParser.new do |opts|
60
+ # Set a banner, displayed at the top of the help screen.
61
+ #opts.banner = "#{$0} v.#{$PROG_VER}\n Usage: #{File.basename $0} [options] file1 file2 ..."
62
+ $opts[:verbose] = $opts[:jabba] = $opts[:debug] = false
63
+ $opts[:logfile] = $opts[:grep] = nil
64
+ $opts[:tail] = $myconf[:tail_len]
65
+ opts.on( '-d', '--debug', 'enables debug (DFLT=false)' ) { $opts[:debug] = true}
66
+ opts.on( '-e', '--edit', "edits file with vi" ) { $opts[:edit] = true }
67
+ opts.on( '-h', '--help', 'Display this screen' ) { puts(opts); exit 1 }
68
+ opts.on( '-g', '--grep STRING', 'Searchs for STRING' ) {|str| $opts[:grep] = str }
69
+ opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) {|file| $opts[:logfile] = file }
70
+ opts.on( '-t', '--tail', "Just tail argument (dflt tail length=#{$myconf[:tail_len]}" ) {|len| $opts[:tail] = len || $myconf[:tail_len]}
71
+ opts.on( '-v', '--verbose', 'Output more information' ) { $opts[:verbose] = true}
72
+ end
73
+ optparse.parse!
74
+ $DEBUG = $opts[:debug]
75
+ debug_on('enabled via GetOpts') if $opts[:debug]
76
+ puts "Being verbose" if $opts[:verbose]
77
+ puts "Logging to file #{$opts[:logfile]}" if $opts[:logfile]
78
+ end
79
+
80
+ def remember_and_execute_command(command,logfile,remember=true)
81
+ if remember
82
+ File.open(logfile, 'a') { |f| f.write "#{Time.now} #{Socket.gethostname} [#{ENV['USER']}] #{command}\n" }
83
+ puts "#Remembering: '''#{command}'''"
84
+ puts "#Written file: #{logfile}"
85
+ end
86
+ puts "#Now executing: #{command}"
87
+ system(command) # Id need a "$@"
88
+ deb "#Just executed (exit=#{$!}): #{command}"
89
+ deb "#Written file (2): #{logfile}"
90
+ end
91
+
92
+ #Tue Aug 28 15:57:38 +0100 2012 derek.dub.corp.google.com [rcarlesso] @tag21 @tags2 my command
93
+ def remember_color_regex(str)
94
+ d1,d2,d3,tim,gmt,yr,host,user,command = str.split(' ',9)
95
+ color_date = gray([d1,d2,d3,tim,gmt,yr].join(' '))
96
+ color_host = blue(host.split('.').first)
97
+ color_user = gray(user)
98
+ # makes the tags cyan :)
99
+ color_cmd = yellow(command)
100
+ color_cmd = command.split(' ').map{|word| word.begin_with?('@') ? cyan(word) : yellow(word) }.join(' ')
101
+
102
+ #puts str
103
+ #return [ color_date, color_host, color_user, color_cmd ].join ' '
104
+ color_cmd
105
+ end
106
+
107
+
108
+ def show_last_commands(logfile)
109
+ mycommand = "tail -n #{$opts[:tail]} '#{logfile}'"
110
+ if $opts[:grep]
111
+ mycommand ="grep --color '#{ $opts[:grep] }' '#{logfile}'"
112
+ end
113
+ deb "command: #{mycommand}"
114
+ lines = %x{ #{mycommand} } # doesnt work in ruby1.9!
115
+ #lines = `#{mycommand}` # doesnt work in ruby1.9!
116
+ lines.split("\n").each do |line|
117
+ puts remember_color_regex(line) # "Line: #{line}"
118
+ end
119
+ $stderr.puts "# Try also: cat #{logfile}"
120
+ end
121
+
122
+ def main
123
+ init
124
+ path = File.expand_path($myconf[:remember_dir]) # for normal users
125
+ path = File.expand_path(ENV['SVNHOME'] + "/var/remember/" ) if ENV['SVNHOME'] # for Riccardo
126
+ logfile = path +"/all"
127
+ mycommand = ARGV.join ' '
128
+ if ($opts[:edit]) # vi and piositions at end of file
129
+ remember_and_execute_command("vi + '#{logfile}'", logfile, false)
130
+ exit 0
131
+ end
132
+ unless(ARGV.size > 0) # No arguments provided
133
+ show_last_commands(logfile)
134
+ exit 1
135
+ end
136
+ puts `mkdir -p '#{path}'`
137
+ remember_and_execute_command(mycommand, logfile)
138
+ end
139
+
140
+ main()