falkorlib 0.6.17 → 0.6.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +11 -0
- data/Gemfile.lock +11 -18
- data/bin/falkor +7 -6
- data/completion/.gitignore +1 -0
- data/completion/_falkor +203 -0
- data/falkorlib.gemspec +159 -214
- data/lib/falkorlib/bootstrap/base.rb +19 -9
- data/lib/falkorlib/bootstrap/link.rb +8 -4
- data/lib/falkorlib/cli/link.rb +47 -41
- data/lib/falkorlib/cli/new.rb +146 -141
- data/lib/falkorlib/cli.rb +14 -11
- data/lib/falkorlib/common.rb +3 -3
- data/lib/falkorlib/version.rb +1 -1
- data/templates/gems/Gemfile +3 -0
- data/templates/gems/LICENCE.md +22 -0
- data/templates/gems/README.md +192 -0
- data/templates/gems/Rakefile +39 -0
- data/templates/gems/lib/sysadmin-warrior/loader.rb +5 -0
- data/templates/gems/lib/sysadmin-warrior/version.rb +49 -0
- data/templates/gems/lib/sysadmin-warrior.rb +40 -0
- data/templates/gems/sysadmin-warrior.gemspec +200 -0
- data/templates/latex/.gitignore +1 -0
- data/templates/latex/letter/_content.md.erb +6 -3
- data/templates/latex/letter/main.tex.erb +23 -15
- metadata +19 -28
- data/completion/falkor.zsh +0 -25
@@ -0,0 +1,192 @@
|
|
1
|
+
-*- mode: markdown; mode: visual-line; fill-column: 80 -*-
|
2
|
+
|
3
|
+
[![Licence](https://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT)
|
4
|
+
![By Falkor](https://img.shields.io/badge/by-Falkor-blue.svg) [![github](https://img.shields.io/badge/git-github-lightgray.svg)](https://github.com/Falkor/sysadmin-warrior) [![Issues](https://img.shields.io/badge/issues-github-green.svg)](https://github.com/Falkor/sysadmin-warrior/issues)
|
5
|
+
|
6
|
+
Time-stamp: <Mon 2016-02-22 22:04 svarrette>
|
7
|
+
|
8
|
+
_____ _ _ __ __ _ _______ __ ___
|
9
|
+
/ ____| /\ | | (_) \ \ / / (_) / / ____| /\ \ / \ \
|
10
|
+
| (___ _ _ ___ / \ __| |_ __ ___ _ _ __ \ \ /\ / /_ _ _ __ _ __ _ ___ _ __ | | (___ / \ \ /\ / / | |
|
11
|
+
\___ \| | | / __| / /\ \ / _` | '_ ` _ \| | '_ \ \ \/ \/ / _` | '__| '__| |/ _ \| '__| | |\___ \ / /\ \ \/ \/ / | |
|
12
|
+
____) | |_| \__ \/ ____ \ (_| | | | | | | | | | | \ /\ / (_| | | | | | | (_) | | | |____) / ____ \ /\ / | |
|
13
|
+
|_____/ \__, |___/_/ \_\__,_|_| |_| |_|_|_| |_| \/ \/ \__,_|_| |_| |_|\___/|_| | |_____/_/ \_\/ \/ | |
|
14
|
+
__/ | \_\ /_/
|
15
|
+
|___/
|
16
|
+
Copyright (c) 2016 Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
17
|
+
|
18
|
+
|
19
|
+
## Synopsis
|
20
|
+
|
21
|
+
SysAdmin Warrior (SAW) is a Command Line Interface (CLI) designed to make the life of system administrator easier
|
22
|
+
|
23
|
+
## Installation / Repository Setup
|
24
|
+
|
25
|
+
This repository is hosted on [Github](https://github.com/Falkor/sysadmin-warrior).
|
26
|
+
|
27
|
+
* To clone this repository, proceed as follows (adapt accordingly):
|
28
|
+
|
29
|
+
$> mkdir -p ~/git/github.com/Falkor
|
30
|
+
$> cd ~/git/github.com/Falkor
|
31
|
+
$> git clone https://github.com/Falkor/sysadmin-warrior.git
|
32
|
+
|
33
|
+
Now ensure [RVM](https://rvm.io/) is correctly configured for this repository:
|
34
|
+
|
35
|
+
$> rvm current
|
36
|
+
|
37
|
+
Configure the dependencies detailed in the [`Gemfile`](Gemfile) through the [Bundler](http://bundler.io/):
|
38
|
+
|
39
|
+
$> gem install bundler
|
40
|
+
$> bundle install
|
41
|
+
$> rake -T # should work ;)
|
42
|
+
|
43
|
+
**`/!\ IMPORTANT`**: Once cloned, initiate your local copy of the repository by running:
|
44
|
+
|
45
|
+
$> cd sysadmin-warrior
|
46
|
+
$> rake setup
|
47
|
+
|
48
|
+
This will initiate the [Git submodules of this repository](.gitmodules) and setup the [git flow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) layout for this repository.
|
49
|
+
|
50
|
+
Later on, you can upgrade the [Git submodules](.gitmodules) to the latest version by running:
|
51
|
+
|
52
|
+
$> rake git:submodules:upgrade
|
53
|
+
|
54
|
+
If upon pulling the repository, you end in a state where another collaborator have upgraded the Git submodules for this repository, you'll end in a dirty state (as reported by modifications within the `.submodules/` directory). In that case, just after the pull, you **have to run** the following to ensure consistency with regards the Git submodules:
|
55
|
+
|
56
|
+
$> rake git:submodules:update
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
## Issues / Feature request
|
62
|
+
|
63
|
+
You can submit bug / issues / feature request using the [`Falkor/sysadmin-warrior` Project Tracker](https://github.com/Falkor/sysadmin-warrior/issues)
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
## Advanced Topics
|
68
|
+
|
69
|
+
### Git
|
70
|
+
|
71
|
+
This repository make use of [Git](http://git-scm.com/) such that you should have it installed on your working machine:
|
72
|
+
|
73
|
+
$> apt-get install git-core # On Debian-like systems
|
74
|
+
$> yum install git # On CentOS-like systems
|
75
|
+
$> brew install git # On Mac OS, using [Homebrew](http://mxcl.github.com/homebrew/)
|
76
|
+
$> port install git # On Mac OS, using MacPort
|
77
|
+
|
78
|
+
Consider these resources to become more familiar (if not yet) with Git:
|
79
|
+
|
80
|
+
* [Simple Git Guide](http://rogerdudler.github.io/git-guide/)
|
81
|
+
* [Git book](http://book.git-scm.com/index.html)
|
82
|
+
* [Github:help](http://help.github.com/mac-set-up-git/)
|
83
|
+
* [Git reference](http://gitref.org/)
|
84
|
+
|
85
|
+
At least, you shall configure the following variables
|
86
|
+
|
87
|
+
$> git config --global user.name "Your Name Comes Here"
|
88
|
+
$> git config --global user.email you@yourdomain.example.com
|
89
|
+
# configure colors
|
90
|
+
$> git config --global color.diff auto
|
91
|
+
$> git config --global color.status auto
|
92
|
+
$> git config --global color.branch auto
|
93
|
+
|
94
|
+
Note that you can create git command aliases in `~/.gitconfig` as follows:
|
95
|
+
|
96
|
+
[alias]
|
97
|
+
up = pull origin
|
98
|
+
pu = push origin
|
99
|
+
st = status
|
100
|
+
df = diff
|
101
|
+
ci = commit -s
|
102
|
+
br = branch
|
103
|
+
w = whatchanged --abbrev-commit
|
104
|
+
ls = ls-files
|
105
|
+
gr = log --graph --oneline --decorate
|
106
|
+
amend = commit --amend
|
107
|
+
|
108
|
+
Consider my personal [`.gitconfig`](https://github.com/Falkor/dotfiles/blob/master/git/.gitconfig) as an example -- if you decide to use it, simply copy it in your home directory and adapt the `[user]` section.
|
109
|
+
|
110
|
+
### [Git-flow](https://github.com/nvie/gitflow)
|
111
|
+
|
112
|
+
The Git branching model for this repository follows the guidelines of
|
113
|
+
[gitflow](http://nvie.com/posts/a-successful-git-branching-model/).
|
114
|
+
In particular, the central repository holds two main branches with an infinite lifetime:
|
115
|
+
|
116
|
+
* `production`: the *production-ready* branch
|
117
|
+
* `devel`: the main branch where the latest developments interviene. This is the *default* branch you get when you clone the repository.
|
118
|
+
|
119
|
+
Thus you are more than encouraged to install the [git-flow](https://github.com/nvie/gitflow) extensions following the [installation procedures](https://github.com/nvie/gitflow/wiki/Installation) to take full advantage of the proposed operations. The associated [bash completion](https://github.com/bobthecow/git-flow-completion) might interest you also.
|
120
|
+
|
121
|
+
### Releasing mechanism
|
122
|
+
|
123
|
+
The operation consisting of releasing a new version of this repository is automated by a set of tasks within the root `Rakefile`.
|
124
|
+
|
125
|
+
In this context, a version number have the following format:
|
126
|
+
|
127
|
+
<major>.<minor>.<patch>[-b<build>]
|
128
|
+
|
129
|
+
where:
|
130
|
+
|
131
|
+
* `< major >` corresponds to the major version number
|
132
|
+
* `< minor >` corresponds to the minor version number
|
133
|
+
* `< patch >` corresponds to the patching version number
|
134
|
+
* (eventually) `< build >` states the build number _i.e._ the total number of commits within the `devel` branch.
|
135
|
+
|
136
|
+
Example: \`1.0.0-b28\`
|
137
|
+
|
138
|
+
The current version number is stored in the root file `VERSION`. __/!\ NEVER MAKE ANY MANUAL CHANGES TO THIS FILE__
|
139
|
+
|
140
|
+
For more information on the version, run:
|
141
|
+
|
142
|
+
$> rake version:info
|
143
|
+
|
144
|
+
If a new version number such be bumped, you simply have to run:
|
145
|
+
|
146
|
+
$> rake version:bump:{major,minor,patch}
|
147
|
+
|
148
|
+
This will start the release process for you using `git-flow`.
|
149
|
+
Once you have finished to commit your last changes, make the release effective by running:
|
150
|
+
|
151
|
+
$> rake version:release
|
152
|
+
|
153
|
+
It will finish the release using `git-flow`, create the appropriate tag in the `production` branch and merge all things the way they should be.
|
154
|
+
|
155
|
+
### Ruby stuff: RVM, Rakefile and Ruby gems
|
156
|
+
|
157
|
+
The various operations that can be conducted from this repository are piloted from a [`Rakefile`](https://github.com/ruby/rake) and assumes you have a running [Ruby](https://www.ruby-lang.org/en/) installation. You'll also need [Ruby Gems](https://rubygems.org/) to facilitate the installation of ruby libraries.
|
158
|
+
|
159
|
+
$> apt-get install ruby rubygems # On Debian-like systems
|
160
|
+
|
161
|
+
Install the [rake](https://rubygems.org/gems/rake) gem as follows:
|
162
|
+
|
163
|
+
$> gem install rake
|
164
|
+
|
165
|
+
In order to have a consistent environment among the collaborators of this project, [Bundler](http://bundler.io/) is also used. Configuration of [Bundler](http://bundler.io/) is made via the [`Gemfile[.lock]` files](http://bundler.io/v1.3/gemfile.html).
|
166
|
+
|
167
|
+
Last but not least, I like to work on [Sandboxed environments](https://hpc.uni.lu/blog/2014/create-a-sandboxed-python-slash-ruby-environment/) and a great tool for that is [RVM](https://rvm.io/).
|
168
|
+
[RVM](https://rvm.io/) gives you compartmentalized independent ruby setups.
|
169
|
+
This means that ruby, gems and irb are all separate and self-contained - from the system, and from each other. Sandboxing with [RVM](https://rvm.io/) is straight-forward via the [notion of gemsets](https://rvm.io/gemsets) and is managed via the `.ruby-{version,gemset}` files.
|
170
|
+
|
171
|
+
If things are fine, you should be able to access the list of available tasks by running:
|
172
|
+
|
173
|
+
$> rake -T
|
174
|
+
|
175
|
+
You probably want to activate the bash-completion for rake tasks.
|
176
|
+
I personally use the one provided [here](https://github.com/ai/rake-completion).
|
177
|
+
|
178
|
+
## Licence
|
179
|
+
|
180
|
+
This project is released under the terms of the [MIT](LICENCE) licence.
|
181
|
+
|
182
|
+
[![Licence](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/License_icon-mit-2.svg/200px-License_icon-mit-2.svg.png)](http://opensource.org/licenses/MIT)
|
183
|
+
|
184
|
+
## Contributing
|
185
|
+
|
186
|
+
That's quite simple:
|
187
|
+
|
188
|
+
1. [Fork](https://help.github.com/articles/fork-a-repo/) it
|
189
|
+
2. Create your own feature branch (`git checkout -b my-new-feature`)
|
190
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
191
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
192
|
+
5. Create a new [Pull Request](https://help.github.com/articles/using-pull-requests/)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
##############################################################################
|
2
|
+
# Rakefile - Configuration file for rake (http://rake.rubyforge.org/)
|
3
|
+
# Time-stamp: <Mon 2016-06-27 09:43 svarrette>
|
4
|
+
#
|
5
|
+
# Copyright (c) 2016 <>
|
6
|
+
# ____ _ __ _ _
|
7
|
+
# | _ \ __ _| | _____ / _(_) | ___
|
8
|
+
# | |_) / _` | |/ / _ \ |_| | |/ _ \
|
9
|
+
# | _ < (_| | < __/ _| | | __/
|
10
|
+
# |_| \_\__,_|_|\_\___|_| |_|_|\___|
|
11
|
+
#
|
12
|
+
# Use 'rake -T' to list the available actions
|
13
|
+
#
|
14
|
+
# Resources:
|
15
|
+
# * http://www.stuartellis.eu/articles/rake/
|
16
|
+
##############################################################################
|
17
|
+
require 'falkorlib'
|
18
|
+
|
19
|
+
## placeholder for custom configuration of FalkorLib.config.*
|
20
|
+
## See https://github.com/Falkor/falkorlib
|
21
|
+
|
22
|
+
# Adapt the versioning aspects
|
23
|
+
FalkorLib.config.versioning do |c|
|
24
|
+
c[:type] = 'gem'
|
25
|
+
c[:source]['gem'] = {
|
26
|
+
:filename => 'lib/sysadmin-warrior/version.rb',
|
27
|
+
:getmethod => 'SysAdminWarrior::Version.to_s',
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
# Git flow customization
|
32
|
+
FalkorLib.config.gitflow do |c|
|
33
|
+
c[:branches] = {
|
34
|
+
:master => 'production',
|
35
|
+
:develop => 'devel'
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
require 'falkorlib/tasks/git'
|
@@ -0,0 +1,5 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
################################################################################
|
3
|
+
# Time-stamp: <Mon 2016-06-27 10:43 svarrette>
|
4
|
+
################################################################################
|
5
|
+
# Place the component you wish to see loaded
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
################################################################################
|
3
|
+
# Time-stamp: <Mon 2016-06-27 10:41 svarrette>
|
4
|
+
################################################################################
|
5
|
+
# @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
6
|
+
#
|
7
|
+
# SysAdmin Warrior (SAW) Version management
|
8
|
+
#
|
9
|
+
|
10
|
+
module SysAdminWarrior #:nodoc:
|
11
|
+
|
12
|
+
# Management of the current version of the library
|
13
|
+
module Version
|
14
|
+
|
15
|
+
# Change the MAJOR, MINOR and PATCH constants below
|
16
|
+
# to adjust the version of the FalkorLib gem
|
17
|
+
#
|
18
|
+
# MAJOR: Defines the major version
|
19
|
+
# MINOR: Defines the minor version
|
20
|
+
# PATCH: Defines the patch version
|
21
|
+
MAJOR, MINOR, PATCH = 0, 0, 1
|
22
|
+
|
23
|
+
module_function
|
24
|
+
|
25
|
+
## Returns the major version ( big release based off of multiple minor releases )
|
26
|
+
def major
|
27
|
+
MAJOR
|
28
|
+
end
|
29
|
+
|
30
|
+
## Returns the minor version ( small release based off of multiple patches )
|
31
|
+
def minor
|
32
|
+
MINOR
|
33
|
+
end
|
34
|
+
|
35
|
+
## Returns the patch version ( updates, features and (crucial) bug fixes )
|
36
|
+
def patch
|
37
|
+
PATCH
|
38
|
+
end
|
39
|
+
|
40
|
+
## @return the full version string
|
41
|
+
def to_s
|
42
|
+
[ MAJOR, MINOR, PATCH ].join('.')
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
# Shorter version of the Gem's VERSION
|
48
|
+
VERSION = Version.to_s
|
49
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
###########################################################################################
|
3
|
+
# Time-stamp: <Mon 2016-06-27 10:37 svarrette>
|
4
|
+
###########################################################################################
|
5
|
+
# ____ _ _ _ __ __ _
|
6
|
+
# / ___| _ _ ___ / \ __| |_ __ ___ (_)_ __ \ \ / /_ _ _ __ _ __(_) ___ _ __
|
7
|
+
# \___ \| | | / __| / _ \ / _` | '_ ` _ \| | '_ \ \ \ /\ / / _` | '__| '__| |/ _ \| '__|
|
8
|
+
# ___) | |_| \__ \/ ___ \ (_| | | | | | | | | | | \ V V / (_| | | | | | | (_) | |
|
9
|
+
# |____/ \__, |___/_/ \_\__,_|_| |_| |_|_|_| |_| \_/\_/ \__,_|_| |_| |_|\___/|_|
|
10
|
+
# |___/
|
11
|
+
##########################################################################################
|
12
|
+
# @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
13
|
+
#
|
14
|
+
# * [Source code](https://github.com/Falkor/sysadmin-warrior)
|
15
|
+
# * [Official Gem](https://rubygems.org/gems/sysadmin-warrior)
|
16
|
+
##########################################################################################
|
17
|
+
require "falkorlib"
|
18
|
+
|
19
|
+
# Sebastien Varrette aka Falkor's Common library to share Ruby code
|
20
|
+
# and `{rake,cap}` tasks
|
21
|
+
module SysAdminWarrior
|
22
|
+
|
23
|
+
# Return the root directory of the gem
|
24
|
+
def self.root
|
25
|
+
File.expand_path '../..', __FILE__
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.lib
|
29
|
+
File.join root, 'lib'
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.templates
|
33
|
+
File.join root, 'templates'
|
34
|
+
end
|
35
|
+
|
36
|
+
end # module SysAdminWarrior
|
37
|
+
|
38
|
+
|
39
|
+
require "sysadmin-warrior/version"
|
40
|
+
require "sysadmin-warrior/loader"
|
@@ -0,0 +1,200 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# We require your library, mainly to have access to the VERSION number.
|
3
|
+
# Feel free to set $version manually.
|
4
|
+
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
5
|
+
require "sysadmin-warrior/version"
|
6
|
+
$version = SysAdminWarrior::Version.to_s
|
7
|
+
|
8
|
+
#
|
9
|
+
# This is your Gem specification. Default values are provided so that your library
|
10
|
+
# should be correctly packaged given what you have described in the .noespec file.
|
11
|
+
#
|
12
|
+
Gem::Specification.new do |s|
|
13
|
+
|
14
|
+
################################################################### ABOUT YOUR GEM
|
15
|
+
|
16
|
+
# Gem name (required)
|
17
|
+
s.name = "sysadmin-warrior"
|
18
|
+
|
19
|
+
# Gem version (required)
|
20
|
+
s.version = $version
|
21
|
+
|
22
|
+
# A short summary of this gem
|
23
|
+
#
|
24
|
+
# This is displayed in `gem list -d`.
|
25
|
+
s.summary = "SysAdmin Warrior (SAW) is a tool designed to make the life of system administrator easier from the command-line. It offers a flexible interface to register and manage IT systems and operations."
|
26
|
+
|
27
|
+
# A long description of this gem (required)
|
28
|
+
#
|
29
|
+
# The description should be more detailed than the summary. For example,
|
30
|
+
# you might wish to copy the entire README into the description.
|
31
|
+
s.description = "SysAdmin Warrior (SAW) is a Free and Open Source Software designed to make the life of system administrator easier from the command-line. It offers a flexible interface to register and manage IT systems and operations."
|
32
|
+
|
33
|
+
# The URL of this gem home page (optional)
|
34
|
+
s.homepage = "https://github.com/Falkor/sysadmin-warrior"
|
35
|
+
|
36
|
+
# Gem publication date (required but auto)
|
37
|
+
#
|
38
|
+
# Today is automatically used by default, uncomment only if
|
39
|
+
# you know what you do!
|
40
|
+
#
|
41
|
+
# s.date = Time.now.strftime('%Y-%m-%d')
|
42
|
+
|
43
|
+
# The license(s) for the library. Each license must be a short name, no
|
44
|
+
# more than 64 characters.
|
45
|
+
#
|
46
|
+
s.licenses = ['MIT']
|
47
|
+
|
48
|
+
# The rubyforge project this gem lives under (optional)
|
49
|
+
#
|
50
|
+
# s.rubyforge_project = nil
|
51
|
+
|
52
|
+
################################################################### ABOUT THE AUTHORS
|
53
|
+
|
54
|
+
# The list of author names who wrote this gem.
|
55
|
+
#
|
56
|
+
# If you are providing multiple authors and multiple emails they should be
|
57
|
+
# in the same order.
|
58
|
+
#
|
59
|
+
s.authors = ["Sebastien Varrette"]
|
60
|
+
|
61
|
+
# Contact emails for this gem
|
62
|
+
#
|
63
|
+
# If you are providing multiple authors and multiple emails they should be
|
64
|
+
# in the same order.
|
65
|
+
#
|
66
|
+
# NOTE: Somewhat strangly this attribute is always singular!
|
67
|
+
# Don't replace by s.emails = ...
|
68
|
+
s.email = ["Sebastien.Varrette@uni.lu"]
|
69
|
+
|
70
|
+
################################################################### PATHS, FILES, BINARIES
|
71
|
+
|
72
|
+
# Paths in the gem to add to $LOAD_PATH when this gem is
|
73
|
+
# activated (required).
|
74
|
+
#
|
75
|
+
# The default 'lib' is typically sufficient.
|
76
|
+
s.require_paths = ["lib"]
|
77
|
+
|
78
|
+
# Files included in this gem.
|
79
|
+
#
|
80
|
+
# By default, we take all files included in the .Manifest.txt file on root
|
81
|
+
# of the project. Entries of the manifest are interpreted as Dir[...]
|
82
|
+
# patterns so that lazy people may use wilcards like lib/**/*
|
83
|
+
#
|
84
|
+
# here = File.expand_path(File.dirname(__FILE__))
|
85
|
+
# s.files = File.readlines(File.join(here, '.Manifest.txt')).
|
86
|
+
# inject([]){|files, pattern| files + Dir[File.join(here, pattern.strip)]}.
|
87
|
+
# collect{|x| x[(1+here.size)..-1]}
|
88
|
+
|
89
|
+
# Test files included in this gem.
|
90
|
+
#
|
91
|
+
s.test_files = Dir["test/**/*"] + Dir["spec/**/*"]
|
92
|
+
|
93
|
+
# Alternative:
|
94
|
+
s.files = `git ls-files`.split("\n")
|
95
|
+
#s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
96
|
+
#s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
97
|
+
|
98
|
+
# The path in the gem for executable scripts (optional)
|
99
|
+
#
|
100
|
+
#s.bindir = "bin"
|
101
|
+
|
102
|
+
# Executables included in the gem.
|
103
|
+
#
|
104
|
+
s.executables = (Dir["bin/*"]).collect{|f| File.basename(f)}
|
105
|
+
|
106
|
+
################################################################### REQUIREMENTS & INSTALL
|
107
|
+
# Remember the gem version requirements operators and schemes:
|
108
|
+
# = Equals version
|
109
|
+
# != Not equal to version
|
110
|
+
# > Greater than version
|
111
|
+
# < Less than version
|
112
|
+
# >= Greater than or equal to
|
113
|
+
# <= Less than or equal to
|
114
|
+
# ~> Approximately greater than
|
115
|
+
#
|
116
|
+
# Don't forget to have a look at http://lmgtfy.com/?q=Ruby+Versioning+Policies
|
117
|
+
# for setting your gem version.
|
118
|
+
#
|
119
|
+
# For your requirements to other gems, remember that
|
120
|
+
# ">= 2.2.0" (optimistic: specify minimal version)
|
121
|
+
# ">= 2.2.0", "< 3.0" (pessimistic: not greater than the next major)
|
122
|
+
# "~> 2.2" (shortcut for ">= 2.2.0", "< 3.0")
|
123
|
+
# "~> 2.2.0" (shortcut for ">= 2.2.0", "< 2.3.0")
|
124
|
+
#
|
125
|
+
#s.add_dependency("rake", ">= 10.1.0")
|
126
|
+
|
127
|
+
s.add_runtime_dependency('rake', '~> 10.2')
|
128
|
+
s.add_runtime_dependency("thor", '~> 0.19')
|
129
|
+
s.add_runtime_dependency("falkorlib", '~> 0.6.11')
|
130
|
+
#s.add_runtime_dependency("mercenary", '>= 0.3.5')
|
131
|
+
|
132
|
+
#
|
133
|
+
#
|
134
|
+
# One call to add_dependency('gem_name', 'gem version requirement') for each
|
135
|
+
# runtime dependency. These gems will be installed with your gem.
|
136
|
+
# One call to add_development_dependency('gem_name', 'gem version requirement')
|
137
|
+
# for each development dependency. These gems are required for developers
|
138
|
+
#
|
139
|
+
s.add_development_dependency("bundler", '~> 1.12', '>= 1.12.5')
|
140
|
+
s.add_development_dependency('rspec', '~> 3.4')
|
141
|
+
s.add_development_dependency("pry", '~> 0.10.3')
|
142
|
+
s.add_development_dependency("yard", '~> 0.8.7.6', "~> 0.8")
|
143
|
+
|
144
|
+
# The version of ruby required by this gem
|
145
|
+
#
|
146
|
+
# Uncomment and set this if your gem requires specific ruby versions.
|
147
|
+
#
|
148
|
+
# s.required_ruby_version = ">= 0"
|
149
|
+
|
150
|
+
# The RubyGems version required by this gem
|
151
|
+
#
|
152
|
+
# s.required_rubygems_version = ">= 0"
|
153
|
+
|
154
|
+
# The platform this gem runs on. See Gem::Platform for details.
|
155
|
+
#
|
156
|
+
# s.platform = nil
|
157
|
+
|
158
|
+
# Extensions to build when installing the gem.
|
159
|
+
#
|
160
|
+
# Valid types of extensions are extconf.rb files, configure scripts
|
161
|
+
# and rakefiles or mkrf_conf files.
|
162
|
+
#
|
163
|
+
s.extensions = []
|
164
|
+
|
165
|
+
# External (to RubyGems) requirements that must be met for this gem to work.
|
166
|
+
# It’s simply information for the user.
|
167
|
+
#
|
168
|
+
s.requirements = nil
|
169
|
+
|
170
|
+
# A message that gets displayed after the gem is installed
|
171
|
+
#
|
172
|
+
# Uncomment and set this if you want to say something to the user
|
173
|
+
# after gem installation
|
174
|
+
#
|
175
|
+
s.post_install_message = "Thanks for installing SysAdmin Warrior.\n"
|
176
|
+
|
177
|
+
################################################################### SECURITY
|
178
|
+
|
179
|
+
# The key used to sign this gem. See Gem::Security for details.
|
180
|
+
#
|
181
|
+
#s.signing_key = "0xDD01D5C0"
|
182
|
+
|
183
|
+
# The certificate chain used to sign this gem. See Gem::Security for
|
184
|
+
# details.
|
185
|
+
#
|
186
|
+
# s.cert_chain = []
|
187
|
+
|
188
|
+
################################################################### RDOC
|
189
|
+
|
190
|
+
# An ARGV style array of options to RDoc
|
191
|
+
#
|
192
|
+
# See 'rdoc --help' about this
|
193
|
+
#
|
194
|
+
s.rdoc_options = []
|
195
|
+
|
196
|
+
# Extra files to add to RDoc such as README
|
197
|
+
#
|
198
|
+
s.extra_rdoc_files = Dir["README.md"] + Dir["LICENCE.md"]
|
199
|
+
|
200
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
.texinfo
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
\noindent
|
3
|
+
|
4
|
+
The University of Luxembourg (UL) is at a key turning point of its development ...
|
2
5
|
|
3
6
|
Feel free to use the Markdown format to feed this letter
|
4
7
|
|
@@ -20,7 +23,7 @@ This is from [*Mitch Resnick*](https://en.wikipedia.org/wiki/Mitchel_Resnick).
|
|
20
23
|
|
21
24
|
[^ted]: \tiny<http://www.ted.com/talks/mitch_resnick_let_s_teach_kids_to_code.html>
|
22
25
|
|
23
|
-
etc.
|
26
|
+
etc.
|
24
27
|
|
25
28
|
* item 1
|
26
29
|
* item 2
|
@@ -35,4 +38,4 @@ The main interest of using markdown is to simplify \LaTeX tables
|
|
35
38
|
| item 2 | 1 | 1 |
|
36
39
|
| | | |
|
37
40
|
|
38
|
-
|
41
|
+
Enjoy your letter
|
@@ -1,10 +1,10 @@
|
|
1
1
|
% =============================================================================
|
2
|
-
% File: <%= config[:name] %>.tex --
|
2
|
+
% File: <%= config[:name] %>.tex --
|
3
3
|
% Author(s): <%= config[:author] %> (<%= config[:mail] %>)
|
4
|
-
% Time-stamp: <
|
5
|
-
%
|
4
|
+
% Time-stamp: <Sat 2016-10-15 23:57 svarrette>
|
5
|
+
%
|
6
6
|
% Copyright (c) <%= Time.now.year %> <%= config[:author] %><Sebastien.Varrette@uni.lu>
|
7
|
-
%
|
7
|
+
%
|
8
8
|
% For more information:
|
9
9
|
% - LaTeX: http://www.latex-project.org/
|
10
10
|
% - LaTeX symbol list:
|
@@ -15,6 +15,9 @@
|
|
15
15
|
|
16
16
|
\usepackage{_style}
|
17
17
|
\usepackage{microtype} % Improves typography
|
18
|
+
\usepackage{longtable}
|
19
|
+
\usepackage{booktabs}
|
20
|
+
\usepackage{fontawesome}
|
18
21
|
|
19
22
|
\graphicspath{{images/}} % Add this directory to the searched paths for graphics
|
20
23
|
|
@@ -46,9 +49,14 @@
|
|
46
49
|
\def\Where{<%= config[:department] %> (<%= config[:department_acro] %>)} % Your department/institution
|
47
50
|
\def\Address{<%= config[:address] %>} % Your address
|
48
51
|
\def\CityZip{<%= config[:zipcode] %>, <%= config[:location] %>} % Your city, zip code, country, etc
|
49
|
-
\def\Email{
|
50
|
-
\def\TEL{
|
51
|
-
\def\URL{
|
52
|
+
\def\Email{\faEnvelopeO\ \texttt{\href{mailto:<%= config[:mail] %>}{<%= config[:mail] %>}}} % Your email address
|
53
|
+
\def\TEL{\faPhone\ <%= config[:phone] %>} % Your phone number
|
54
|
+
\def\URL{\faGlobe\ <%= config[:url] %>} % Your url
|
55
|
+
|
56
|
+
\def\LinkedIN{\href{https://www.linkedin.com/in/<%= config[:linkedin] %>}{\faLinkedin}}
|
57
|
+
\def\Twitter{\href{https://twitter.com/<%= config[:twitter] %>}{\faTwitter}}
|
58
|
+
\def\GoogleScholar{\href{https://scholar.google.com/citations?user=<%= config[:scholar] %>&hl=en}{\faGraduationCap}}
|
59
|
+
\def\Skype{\href{skype:<%= config[:skype] %>?chat}{\faSkype}}
|
52
60
|
|
53
61
|
% ----------------------------------------------------------------------------------------
|
54
62
|
% HEADER AND FROM ADDRESS STRUCTURE
|
@@ -60,22 +68,22 @@
|
|
60
68
|
\vskip -1.07in~\\ % Position of the text in relation to the institution logo, increase to move down, decrease to move up
|
61
69
|
\Large\hspace{1.5in}\hfill ~\\[0.05in] % First line of institution name, adjust hspace if your logo is wide
|
62
70
|
\hspace{1.5in}\hfill \normalsize % Second line of institution name, adjust hspace if your logo is wide
|
63
|
-
\makebox[0ex][r]{\bf \Who \What }\hspace{0.08in} % Print your name and title with a little whitespace to the right
|
71
|
+
\makebox[0ex][r]{\bf \Who, \What }\hspace{0.08in} % Print your name and title with a little whitespace to the right
|
64
72
|
~\\[-0.11in] % Reduce the whitespace above the horizontal rule
|
65
73
|
\hspace{1.5in}\vhrulefill{1pt} \\ % Horizontal rule, adjust hspace if your logo is wide and \vhrulefill for the thickness of the rule
|
66
|
-
\hspace{\fill}\parbox[t]{
|
74
|
+
\hspace{\fill}\parbox[t]{4.35in}{ % Create a box for your details underneath the horizontal rule on the right
|
67
75
|
\footnotesize % Use a smaller font size for the details
|
68
76
|
%\Who \\ \em % Your name, all text after this will be italicized
|
69
77
|
\Where\\ % Your department
|
70
78
|
\Address\\ % Your address
|
71
79
|
\CityZip\\ % Your city and zip code
|
72
|
-
\TEL\\ % Your phone number
|
73
|
-
\Email
|
74
|
-
|
80
|
+
\TEL\hspace{8em}\LinkedIN\ \ \Twitter\ \ \Skype\ \ \GoogleScholar \\ % Your phone number
|
81
|
+
\Email\\% Your email address
|
82
|
+
\URL\\[2em] % Your URL
|
75
83
|
\Location, \today
|
76
84
|
}
|
77
85
|
\hspace{-1.4in} % Horizontal position of this block, increase to move left, decrease to move right
|
78
|
-
\vspace{-
|
86
|
+
\vspace{-0.5in} % Move the letter content up for a more compact look
|
79
87
|
}
|
80
88
|
|
81
89
|
% ----------------------------------------------------------------------------------------
|
@@ -101,7 +109,7 @@
|
|
101
109
|
% SIGNATURE STRUCTURE
|
102
110
|
% ----------------------------------------------------------------------------------------
|
103
111
|
|
104
|
-
\signature{\Who \What} % The signature is a combination of your name and title
|
112
|
+
\signature{\Who, \What} % The signature is a combination of your name and title
|
105
113
|
|
106
114
|
\long\def\closing#1{
|
107
115
|
\vspace{0.1in} % Some whitespace after the letter content and before the signature
|
@@ -145,7 +153,7 @@
|
|
145
153
|
|
146
154
|
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
147
155
|
% eof
|
148
|
-
%
|
156
|
+
%
|
149
157
|
% Local Variables:
|
150
158
|
% mode: latex
|
151
159
|
% mode: flyspell
|