falkorlib 0.6.17 → 0.6.18
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.
- 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
|
+
[](http://opensource.org/licenses/MIT)
|
4
|
+
 [](https://github.com/Falkor/sysadmin-warrior) [](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
|
+
[](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
|