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,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+
5
+ Try also the Oauth playground: http://googlecodesamples.com/oauth_playground/
6
+
7
+ Solves this problem with GCE. It was:
8
+
9
+ curl -s http://metadata/0.1/meta-data/network | python -c "import sys,json; print json.load(sys.stdin)['networkInterface'][0]['accessConfiguration'][0]['externalIp']"
10
+
11
+ It becomes:
12
+
13
+ curl -s http://metadata/0.1/meta-data/network |json-xpath.rb networkInterface.0.accessConfiguration.0.externalIp
14
+
15
+ =end
16
+ $default_arg = "networkInterface.0.accessConfiguration.0.externalIp"
17
+
18
+ class String
19
+ def is_number?
20
+ true if Float(self) rescue false
21
+ end
22
+ end
23
+
24
+
25
+ def usage
26
+ print "Usage: #{$0} <xpath>
27
+
28
+ Example: #{$0} #{ $default_arg } # this will find your public IP from GCE metadata
29
+ (Try to use this in pipe with 'curl http://metadata.google.internal/0.1/meta-data/network'
30
+ "
31
+ exit(1)
32
+ end
33
+
34
+ def process_args(dotted_arg)
35
+ arr_args = dotted_arg.split '.'
36
+ python_program_original = "import sys, json; print json.load(sys.stdin)['networkInterface'][0]['accessConfiguration'][0]['externalIp'] "
37
+ python_program = "import sys, json; print json.load(sys.stdin)"
38
+ args = arr_args.map { |arg| arg.to_s.is_number? ? arg.to_s : "'" + arg + "'" }.map{|x| "[#{x}]" }
39
+ my_program = python_program + args.join('')
40
+
41
+ cmd_exec = "/usr/bin/python -c \"#{my_program}\" 2>/dev/null"
42
+ myin = $stdin.read
43
+ %x( #{cmd_exec} )
44
+ IO.popen(cmd_exec, mode='w') do |io|
45
+ io.write(myin)
46
+ end
47
+ end
48
+
49
+ def main
50
+ usage unless ARGV[0]
51
+ process_args(ARGV[0])
52
+ end
53
+
54
+ main()
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+
3
+ SLEEPTIME=${1:-5}
4
+ SENTENCE="keepup{$HOSTNAME} "
5
+
6
+ echo "One dot every $SLEEPTIME seconds... Useful on lame ssh connections to keep them up"
7
+ echo -en "$SENTENCE"
8
+ while true; do
9
+ echo -en .
10
+ sleep $SLEEPTIME;
11
+ done
12
+
13
+ echo Ciao by carlesso. You should never see this
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ lsof | sort | colonna 1 |uniq -c | sort -nr | head -10
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/ruby1.8
2
+
3
+ =begin
4
+
5
+ ############################################################
6
+ @author: Riccardo Carlesso
7
+ @email: riccardo.carlesso@gmail.com
8
+ @maturity: development
9
+ @language: Ruby
10
+ @synopsis: Brief Description here
11
+ @tags: development, rcarlesso, test
12
+ @description: See description
13
+ ############################################################
14
+
15
+ =end
16
+
17
+ require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
18
+ require 'yaml'
19
+ require 'facter'
20
+
21
+ require ENV['SAKURADIR'] + '/lib/ric.rb'
22
+
23
+ # Program constants, automagically picked up by RicLib
24
+ # More configuration could be written in:
25
+ # $SVNHOME/etc/ricsvn/<FILENAME>.yml
26
+ # That would go into the variable '$prog_conf_d'
27
+ $myconf = {
28
+ :app_name => "minicook",
29
+ :description => "This is a minimal configuration manager for Linux, inspired by Chef and Puppet.
30
+ Tries to be more agile, to Get things Done (TM)",
31
+ :recipes_dir => ENV['SAKURADIR'] + '/lib/recipes/',
32
+ :available_commands => %w{apply help list} ,
33
+ }
34
+
35
+ $PROG_VER = '0.1.1'
36
+ $DEBUG = false
37
+
38
+ def usage(comment=nil)
39
+ puts $optparse.banner
40
+ puts $optparse.summarize
41
+ pred comment if comment
42
+ puts "Description: #{ $myconf[:description] }"
43
+ exit 11
44
+ end
45
+
46
+ =begin
47
+
48
+
49
+
50
+ TODO: locks in case many things access it
51
+
52
+ =end
53
+ class Recipe
54
+ @prerequisite_checked = false
55
+ @postrequisite_checked = false
56
+
57
+ def initialize(file)
58
+ @yaml = YAML.load_file(file)
59
+ puts "Initializing CookBook module: #{yellow @yaml['name']}"
60
+ validate
61
+ end
62
+
63
+ def check_facter_prerequisites
64
+ deb 'check facter'
65
+ if @yaml['prerequisites']['facter']
66
+ Facter.loadfacts
67
+ @yaml['prerequisites']['facter'].each do |k,wanted|
68
+ deb "Checking facter: #{k} => #{wanted}"
69
+ puts "I have this: #{Facter.send(k)}"
70
+ puts "I want this: #{wanted}"
71
+ end
72
+ end
73
+ end
74
+
75
+ def check_prerequisites
76
+ deb @yaml['prerequisites'].inspect
77
+ # verify FACTER
78
+ check_facter_prerequisites
79
+ # verify MODULES
80
+ deb 'check module'
81
+ @prerequisite_checked = true
82
+ true
83
+ end
84
+
85
+ def check_postrequisites
86
+ #deb @yaml['prerequisites'].inspect
87
+ if test()
88
+ green "TEST OK!"
89
+ else
90
+ pred "Some error in testing => Rolling back"
91
+ return false
92
+ end
93
+ @postrequisite_checked = true
94
+ true
95
+ end
96
+
97
+
98
+ def valid?
99
+ begin
100
+ validate
101
+ true
102
+ rescue
103
+ false
104
+ end
105
+ end
106
+
107
+
108
+ def execute
109
+
110
+ end
111
+
112
+ def install
113
+ # manage code HERE
114
+ code = @yaml['code']
115
+ # manage code FILE
116
+ pred code.inspect
117
+ end
118
+
119
+ def name
120
+ @yaml['name']
121
+ end
122
+ def description
123
+ @yaml['description']
124
+ end
125
+
126
+ def test
127
+ true
128
+ end
129
+
130
+ def to_s(verbose=true)
131
+ ret = "MiniBookRecipe(#{name})"
132
+ return ret unless verbose
133
+ ret += "\nName: #{name}"
134
+ ret += "\nDescription: #{description}"
135
+ ret
136
+ end
137
+
138
+ def validate()
139
+ necessary_fields = %w{ name description prerequisites install uninstall }
140
+ necessary_fields.each do |key|
141
+ throw "Missing field: '#{key}' in the yaml file!" unless @yaml[key]
142
+ end
143
+ end
144
+
145
+
146
+ end
147
+
148
+ # include it in main if you want a custome one
149
+ def init() # see lib_autoinit in lib/util.rb
150
+ $opts = {}
151
+ $opts[:recipes_dir] = $myconf[:recipes_dir]
152
+ $optparse = OptionParser.new do |opts|
153
+ opts.banner = "#{$0} v.#{$PROG_VER}\n Usage: #{File.basename $0} [directive] [...]\nDirectives are: #{ $myconf[:available_commands].join(',') }"
154
+ opts.on( '-d', '--debug', 'enables debug (DFLT=false)' ) { $opts[:debug] = true ; $DEBUG = true }
155
+ opts.on( '-h', '--help', 'Display this screen' ) { puts(opts); exit 1 }
156
+ opts.on( '-n', '--dryrun', "Don't really execute code" ) { $opts[:dryrun] = true }
157
+ opts.on( '-l', '--recipes-dir DIR', 'Recipes dir from DIR (dflt:)' ) {|dir| $opts[:recipes_dir] = dir }
158
+ opts.on( '-v', '--verbose', 'Output more information' ) { $opts[:verbose] = true}
159
+ end
160
+ $optparse.parse!
161
+ end
162
+
163
+ def list(dir)
164
+ files = Dir.glob("#{dir}/*.recipe")
165
+ puts files.join("\n")
166
+ files
167
+ end
168
+
169
+ def apply(filename)
170
+ puts("apply: #{azure filename}")
171
+ recipe = Recipe.new(filename)
172
+ puts recipe.to_s(true)
173
+ # prerequisites
174
+ pwhite "1. Prerequisites"
175
+ recipe.check_prerequisites
176
+ pwhite "2. INSTALL "
177
+ recipe.install unless $opts[:dryrun]
178
+ pwhite "3. POSTREQUISITES"
179
+ recipe.check_postrequisites
180
+ pwhite "4. finished, reprinting object just for the craic"
181
+ puts recipe.to_s(true)
182
+ end
183
+
184
+ def real_program
185
+ debug_on 'Just created script, presuming u need some debug. TODO REMOVE ME when everything works!' if $DEBUG
186
+ # Maybe you may want to check on ARGV
187
+ # unless ARGV.size == 2
188
+ # usage "Give me 2 arguments!"
189
+ # end
190
+ deb("Hello world from a templated '#{yellow $0 }'")
191
+ deb "+ Options are: #{gray $opts}"
192
+ deb "+ Depured args: #{azure ARGV}"
193
+ deb "+ Your configuration: #{purple $myconf.inspect}"
194
+ directive = ARGV[0]
195
+ case directive
196
+ #when 1..5
197
+ # puts "Its between 1 and 5"
198
+ when 'apply'
199
+ apply(ARGV[1])
200
+ when ''
201
+ when nil
202
+ usage('give me at least one argument!')
203
+ when 'help'
204
+ usage
205
+ when 'list'
206
+ list($opts[:recipes_dir])
207
+ else
208
+ puts "You gave me unknown directive ('#{directive}') -- I have no idea what to do with that."
209
+ exit 1
210
+ end
211
+ end
212
+
213
+ def main()
214
+ init
215
+ real_program
216
+ end
217
+
218
+ main
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ mv $* .
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ mv $* ~/Desktop/
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ mv $* ~/Dropbox/
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ mv $* .
@@ -0,0 +1,39 @@
1
+ #!/bin/bash
2
+
3
+ ############################################################
4
+ # $Id: script.rb 5961 2011-03-30 16:04:21Z rcarlesso $
5
+ VER=1.0
6
+ FILES=""
7
+
8
+ # check ARGV
9
+ #echo DEBUG mvto v$VER: NARGS=$#
10
+
11
+ if [ $# -lt 2 ]; then
12
+ echo "Usage: echo $0 <DIR_DEST> [FILE1] [FILE2] .. [FILE_N]"
13
+ exit 1
14
+ fi
15
+
16
+ DESTDIR="$1"
17
+ shift
18
+
19
+ echo "# Moving files: $(blue "$*") to dir: $(green "$DESTDIR")"
20
+
21
+ if [ ! -d "$DESTDIR" ] ; then
22
+ echo "Sorry, I need a directory and '$DESTDIR' doesnt seem one"
23
+ exit 2
24
+ fi
25
+
26
+ for F in "$@" ; do
27
+ #echodo
28
+ mv -nv "$F" "$DESTDIR"
29
+ done
30
+ # FILES="$FILES \"$FILENAME\""
31
+ # echo "Moving single file '$FILENAME' to $1.. ($(ls -alh "$FILENAME"|awk '{print $5}'|sgialla))"
32
+ # mv -nv "$FILENAME" "$1" # doesnt overwrite and is verbose..
33
+
34
+ #echo "DEBUG: mvto ''$FILES'' => ''$1''"
35
+ #echo mv $FILES "$1"
36
+ PWD=$(pwd)
37
+ echo "To reverse:"
38
+ echo " cd $DESTDIR"
39
+ echo " mvto $FILES \"$PWD\""
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ echo -en "\033[0;30m$*\033[0m\n"
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ usage() {
4
+ echo "Usage: $(basename $0) [command to be executes not as root]"
5
+ exit 1
6
+ }
7
+
8
+ if [ $# = 0 ]; then
9
+ usage
10
+ fi
11
+
12
+ if id |grep -q root ; then
13
+ echo "$(basename $0): Refusing to exec: '$*'"
14
+ exit 2
15
+ fi
16
+
17
+ $@
18
+
data/bin/not ADDED
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+
3
+ # if ls | not grep string ; then
4
+ # action
5
+ # fi
6
+
7
+ # and dont tell me that grep -v is the same, cos its NOT ;)
8
+
9
+ "$@"
10
+ RET=$?
11
+
12
+ if [ $RET = 0 ] ; then
13
+ exit 42
14
+ else
15
+ exit 0
16
+ fi
data/bin/ok ADDED
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+
3
+ FILE=`mktemp -t okidok.XXXXX`
4
+ LOGFILE=/var/log/riccardo/ok.log
5
+ touch "$LOGFILE"
6
+
7
+ # logs and prints output!
8
+ oklog() {
9
+ MSG="$1"
10
+ logger -f "$LOGFILE" -p info -t ok "$MSG"
11
+ }
12
+
13
+ oklog "Started with args: '$*'"
14
+
15
+ if [ "$1" = '-' ] ; then
16
+ echo 'Called ok with -, assuming STDIN!' >&2
17
+ oklog "called from stdin"
18
+ cat | ricnotify yellow "OK from STDIN '$*'"
19
+ RET=$?
20
+ oklog "End STDIN RET=$RET for: '$*'"
21
+ exit $RET
22
+ fi
23
+
24
+ echo "`data` Start '$*'"
25
+
26
+ # The 2 followign must NOT be separated!!!
27
+ "$@" 2>&1 | tee "$FILE"
28
+ RET=$PIPESTATUS
29
+
30
+ MSG=_NONE_
31
+
32
+ if [ 0 = $RET ] ; then
33
+ verde "OK: $*"
34
+ tail -20 "$FILE" | ricnotify green "OK '$*'"
35
+ echo "`data` End OK"
36
+ else
37
+ rosso "NO(ret=$RET): $*"
38
+ echo "`data` End (ERR) '$*'"
39
+ echo "There were some errors which returned: $RET" | ricnotify red "Err with '$*'"
40
+ fi
41
+ oklog "End $MSG($RET): '$*'"
42
+ exit $RET
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ # 256 colori grazie a cillian e allo script: \033[38;5;208m
3
+ # fatto a tentoni: echo FF7700 | ./conv-rgb2xterm
4
+ echo -en "\033[38;5;208m$*\033[0m\n"
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ echo -en "\033[38;5;203m$*\033[0m\n"
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ PATH=$PATH:/usr/games
4
+ # To install: sudo apt-get install polygen polygen-data
5
+
6
+ NARG=${1:-10}
7
+ polygen $SAKURADIR/doc/polygen/dell.grm -X $NARG | uniq