MuranoCLI 3.1.0.beta.8 → 3.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a496a97244bc5b3c72007dbeca1b1aba1727c5b04d30e0918ee89ea8bdfe7299
4
- data.tar.gz: 9c2b8a4552c037a649c09eafe16eeed9ef758c85d2ac091bd13054ad5c5f7056
3
+ metadata.gz: e90d2b8f700e2d6622118f28d8e1a1759706205cb35affe3e0aee7d742961644
4
+ data.tar.gz: 6a8ea0aa65cb39d5312ae0451337173d3a38b735867860868cf54bcfe7a144ca
5
5
  SHA512:
6
- metadata.gz: 9fd6b6278866a777328db9aa3921e1e27f239ffdd4d880b97502c50e824d910e3ecaa5e6063cb5b6c8cad1813d6d7d16081cc9f38f53e281a367135a61c21fd4
7
- data.tar.gz: e66db775e437b051dcee81a55f84861bb0fca0d022a144ee617cacb5ac3b86809731fdfffcd385e8622e04fa6d85129c08a533869313f25b3fb1989179a3d9e7
6
+ metadata.gz: b41ce85c7df8e2ffb269d4322be5e0e97b1b944325eab6a852ffda53368a2c51b6a1a4ac8e2485ddbbe45e47c80ed6520d89a85b488f91a0293015a2b93957fd
7
+ data.tar.gz: 1d44b6f3dcb5f3c84685f1fcf1bf1de47bf1d2a5b6496212487bbd843a13f8779515ea0a8d2eda65d1ef5fe4c783510d0491d2670eb62ff89be08a47259f17d7
@@ -2,11 +2,21 @@ FROM ruby:2.2.9-jessie
2
2
 
3
3
  USER root
4
4
 
5
- ENV LANGUAGE en_US.UTF-8
6
- ENV LANG en_US.UTF-8
5
+ ENV LANGUAGE C.UTF-8
6
+ ENV LANG C.UTF-8
7
+ ENV LC_ALL C.UTF-8
7
8
 
8
9
  RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
9
10
 
11
+ RUN \
12
+ echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
13
+ >> /etc/apt/sources.list \
14
+ && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
15
+ >> /etc/apt/sources.list \
16
+ && apt-get -qq update \
17
+ && apt-get install -y sudo
18
+ RUN echo "jenkins ALL= NOPASSWD: /bin/chmod" >> /etc/sudoers
19
+
10
20
  WORKDIR /app
11
21
  COPY . /app
12
22
 
@@ -2,11 +2,21 @@ FROM ruby:2.3.6-jessie
2
2
 
3
3
  USER root
4
4
 
5
- ENV LANGUAGE en_US.UTF-8
6
- ENV LANG en_US.UTF-8
5
+ ENV LANGUAGE C.UTF-8
6
+ ENV LANG C.UTF-8
7
+ ENV LC_ALL C.UTF-8
7
8
 
8
9
  RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
9
10
 
11
+ RUN \
12
+ echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
13
+ >> /etc/apt/sources.list \
14
+ && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
15
+ >> /etc/apt/sources.list \
16
+ && apt-get -qq update \
17
+ && apt-get install -y sudo
18
+ RUN echo "jenkins ALL= NOPASSWD: /bin/chmod" >> /etc/sudoers
19
+
10
20
  WORKDIR /app
11
21
  COPY . /app
12
22
 
@@ -2,11 +2,21 @@ FROM ruby:2.4.3-jessie
2
2
 
3
3
  USER root
4
4
 
5
- ENV LANGUAGE en_US.UTF-8
6
- ENV LANG en_US.UTF-8
5
+ ENV LANGUAGE C.UTF-8
6
+ ENV LANG C.UTF-8
7
+ ENV LC_ALL C.UTF-8
7
8
 
8
9
  RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
9
10
 
11
+ RUN \
12
+ echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
13
+ >> /etc/apt/sources.list \
14
+ && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
15
+ >> /etc/apt/sources.list \
16
+ && apt-get -qq update \
17
+ && apt-get install -y sudo
18
+ RUN echo "jenkins ALL= NOPASSWD: /bin/chmod" >> /etc/sudoers
19
+
10
20
  WORKDIR /app
11
21
  COPY . /app
12
22
 
@@ -2,11 +2,21 @@ FROM ruby:2.5.0-jessie
2
2
 
3
3
  USER root
4
4
 
5
- ENV LANGUAGE en_US.UTF-8
6
- ENV LANG en_US.UTF-8
5
+ ENV LANGUAGE C.UTF-8
6
+ ENV LANG C.UTF-8
7
+ ENV LC_ALL C.UTF-8
7
8
 
8
9
  RUN useradd -m -s /bin/bash --uid 1001 -G root jenkins
9
10
 
11
+ RUN \
12
+ echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
13
+ >> /etc/apt/sources.list \
14
+ && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
15
+ >> /etc/apt/sources.list \
16
+ && apt-get -qq update \
17
+ && apt-get install -y sudo
18
+ RUN echo "jenkins ALL= NOPASSWD: /bin/chmod" >> /etc/sudoers
19
+
10
20
  WORKDIR /app
11
21
  COPY . /app
12
22
 
@@ -8,7 +8,7 @@ USER root
8
8
 
9
9
  dnl # Jenkins defaults to the ASCII encoding, but we want UTF-8.
10
10
  dnl #
11
- dnl # FIXME/MEH: (lb): Murano CLI still has encoding issues, e.g.,
11
+ dnl # FIXME/MEH: (lb): Murano CLI may still have encoding issues, e.g.,
12
12
  dnl # the highline.say() command crashes on some strings, complaining:
13
13
  dnl #
14
14
  dnl # invalid byte sequence in US-ASCII
@@ -17,25 +17,22 @@ dnl # which we currently work around by running Murand CLI in ASCII, e.g.,
17
17
  dnl #
18
18
  dnl # murano --no-progress --no-color --ascii ...
19
19
  dnl #
20
- dnl # which means our Jenkins/Docker test is not quite testing how
21
- dnl # people usually run the app. Oh well.
20
+ dnl # (lb): I tried to install en_US.UTF-8, e.g., using `locale-gen` and
21
+ dnl # `update-locale`, but I couldn't make it work. The Docker container
22
+ dnl # at least has C.UTF-8 encoding, which I think just has a different
23
+ dnl # sort order than en_us.UTF-8.
22
24
  dnl #
23
- dnl # ((lb): I had hoped that setting ENV herein would help, and while it
24
- dnl # does change the encoding for the `docker exec` command that Jenkins
25
- dnl # runs later, it doesn't fix the "invalid byte sequence" error.)
25
+ dnl # NOTE: If you try to change to en_US.UTF-8, which is not installed,
26
+ dnl # you'll see: `setlocale: LC_ALL: cannot change locale (en_US.UTF-8)`.
26
27
  dnl #
27
- dnl # NOTE: You cannot change the encoding from the Execute Shell build
28
- dnl # command. If you tried, you'd see, e.g.,:
28
+ dnl # Set the locale, which changes the encoding for the `docker exec`
29
+ dnl # command that Jenkins runs later.
29
30
  dnl #
30
- dnl # $ export LC_ALL=en_US.UTF-8
31
- dnl # setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
32
- dnl #
33
- dnl # ALSO: Skip LC_ALL, otherwise when Jenkins runs `docker exec ...` you'll see:
34
- dnl #
35
- dnl # /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
36
- dnl #
37
- ENV LANGUAGE en_US.UTF-8
38
- ENV LANG en_US.UTF-8
31
+ dnl # FIXME: (lb): Remove the --ascii switch (forced because if !tty?) and
32
+ dnl # see if using C.UTF-8 makes the "invalid byte sequence" error go away.
33
+ ENV LANGUAGE C.UTF-8
34
+ ENV LANG C.UTF-8
35
+ ENV LC_ALL C.UTF-8
39
36
 
40
37
  dnl # Jenkins runs the Execute Shell script on Docker as the 'jenkins' user,
41
38
  dnl # but Docker is confused unless we create that user now and assign it the
@@ -54,17 +51,21 @@ dnl # (lb): So. Weird. Sometimes the Jenkins Docker Volumes mount with 2755
54
51
  dnl # permissions. Othertimes with 2777. In case this happens again, I'll
55
52
  dnl # leaving this code here. Give jenkins user power to fix permissions on the
56
53
  dnl # mounted Volumes: /app/report and /app/coverage mount as 2755 root:root.
54
+ dnl # 2018-01-18: This happened on the new Jenkins jobs. Maybe you only need
55
+ dnl # to do this once per project, and then Jenkins remembers, even when
56
+ dnl # the Docker container cache is invalid and the image is rebuilt?
57
57
  dnl # NOTE: Skipping `RUN apt-get upgrade -y` to run faster.
58
- dnl # RUN \
59
- dnl # echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
60
- dnl # >> /etc/apt/sources.list \
61
- dnl # && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
62
- dnl # >> /etc/apt/sources.list \
63
- dnl # && apt-get -qq update \
64
- dnl # && apt-get install -y sudo
65
- dnl # #RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
66
- dnl # RUN echo "jenkins ALL= NOPASSWD: chmod" >> /etc/sudoers
67
- dnl #
58
+ RUN \
59
+ echo "deb http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
60
+ >> /etc/apt/sources.list \
61
+ && echo "deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free" \
62
+ >> /etc/apt/sources.list \
63
+ && apt-get -qq update \
64
+ && apt-get install -y sudo
65
+ RUN echo "jenkins ALL= NOPASSWD: /bin/chmod" >> /etc/sudoers
66
+ dnl # If you have complainst about sudoers, try:
67
+ dnl # RUN visudo -c
68
+
68
69
  dnl # Create the /app directory and give ownership to the new user, otherwise
69
70
  dnl # if we switch to the new user first, they cannot create the workdir.
70
71
  dnl #
data/dockers/README.rst CHANGED
@@ -29,6 +29,26 @@ Generate Dockerfiles from the M4 template:
29
29
  > dockers/Dockerfile.${ruby_vers}
30
30
  done
31
31
 
32
+ ==============================
33
+ Injected Environment Variables
34
+ ==============================
35
+
36
+ You'll see some environs injected into the config.
37
+
38
+ Some of the environs are user-specific.
39
+
40
+ 2018-01-19: Currently, the tests use Murano accounts created by Landon
41
+ on https://www.exosite-staging.com/::
42
+
43
+ MURANO_USERNAME => Email. Use different accounts for each Jenkins test job.
44
+ E.g., landonbouma+staging-jenkins-ruby-2.2@exosite.com
45
+ landonbouma+staging-jenkins-ruby-2.3@exosite.com
46
+ etc.
47
+
48
+ MURANO_PASSWORD => Obvious.
49
+
50
+ MURANO_BUSINESS => For each new Murano account, create a business. This is its ID.
51
+
32
52
  ===============================================
33
53
  Jenkins project configuration: Murano CLI Tests
34
54
  ===============================================
@@ -111,19 +131,25 @@ Jenkins project configuration: Murano CLI Tests
111
131
 
112
132
  - Network bridge: ``bridge``
113
133
 
134
+ - Inject environment variables to the build process ``✓``
135
+
136
+ - Properties Content::
137
+
138
+ MURANO_BUSINESS=<Business ID from www.exosite-staging.com>
139
+
114
140
  - Inject passwords to the build as environment variables ``✓``
115
141
 
116
142
  - Job passwords
117
143
 
118
144
  - Add
119
145
 
120
- - Name: ``LANDON_PASSWORD``
146
+ - Name: ``MURANO_PASSWORD``
121
147
 
122
148
  - Password: ``****************``
123
149
 
124
150
  - Add
125
151
 
126
- - Name: ``LANDON_USERNAME``
152
+ - Name: ``MURANO_USERNAME``
127
153
 
128
154
  - Password: ``****************``
129
155
 
@@ -160,7 +186,7 @@ Jenkins project configuration: Murano CLI Tests
160
186
 
161
187
  - E-mail Notification
162
188
 
163
- - Recipients: ``landonbouma@exosite.com``
189
+ - Recipients: ``landonbouma@exosite.com miketilstra@exosite.com``
164
190
 
165
191
  =====================================================
166
192
  Jenkins project configuration: Murano CLI Gem Release
@@ -0,0 +1,132 @@
1
+ ###################################
2
+ MURANO CLI GEM RELEASE INSTRUCTIONS
3
+ ###################################
4
+
5
+ (lb): It'd be nice to script this. But for now, copy-paste!
6
+
7
+ ###########################
8
+ One-time Setup Instructions
9
+ ###########################
10
+
11
+ Sign Up for RubyGems Account
12
+ ----------------------------
13
+
14
+ - Sign up for account and request access to Murano CLI gem.
15
+
16
+ https://rubygems.org/
17
+
18
+ - Murano CLI RubyGems.org Repo
19
+
20
+ https://rubygems.org/gems/MuranoCLI
21
+
22
+ Checkout Murano CLI locally
23
+ ---------------------------
24
+
25
+ E.g., this is how (lb) does it::
26
+
27
+ MURCLI_BASE=/exo/clients/exosite/MuranoCLIs
28
+ mkdir -p ${MURCLI_BASE}
29
+ cd ${MURCLI_BASE}
30
+ git clone git@github.com:exosite/MuranoCLI.git exosite+MuranoCLI
31
+
32
+ ###################################
33
+ Copy-paste Gem Release Instructions
34
+ ###################################
35
+
36
+ Set that latest version
37
+ -----------------------
38
+
39
+ Set the release version, e.g.,::
40
+
41
+ MURCLI_VER="3.1.0.beta.8"
42
+ MURCLI_REL="v${MURCLI_VER}"
43
+
44
+ Choose a release: pre or official
45
+ ---------------------------------
46
+
47
+ Official Gem Release::
48
+
49
+ MURCLI_REF="master"
50
+
51
+ Beta/Pre-release Gem Release::
52
+
53
+ MURCLI_REF="develop"
54
+
55
+ Trigger the Gem release build
56
+ -----------------------------
57
+
58
+ Set the variables above, and then tag the appropriate branch::
59
+
60
+ cd ${MURCLI_BASE}/exosite+MuranoCLI
61
+ git checkout ${MURCLI_REL}
62
+ git pull
63
+
64
+ git tag -a "${MURCLI_REL}" -m "Release tag: ${MURCLI_REL}" ${MURCLI_REF}
65
+ git push origin "${MURCLI_REL}"
66
+
67
+ Wait for the build to start
68
+ ---------------------------
69
+
70
+ The Jenkins build server is on a five minute poll. You can either
71
+ start the build yourself, or you can wait for it to start.
72
+
73
+ - Jenkins server URL
74
+
75
+ https://jenkins.exosite.com/job/MuranoCLI/job/Murano%20CLI%20Gem%20Release/
76
+
77
+ Download the built Gem and publish it
78
+ -------------------------------------
79
+
80
+ Create a GitHub token and store in an environ::
81
+
82
+ GITHUB_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
83
+
84
+ Download the built Gem from GitHub::
85
+
86
+ mkdir -p /tmp/gem_push
87
+ pushd /tmp/gem_push
88
+
89
+ OWNER="exosite"
90
+ REPO="MuranoCLI"
91
+ #
92
+ curl --header "Authorization: token ${GITHUB_TOKEN}" \
93
+ --header "Accept: application/json" \
94
+ --remote-name \
95
+ --location https://api.github.com/repos/${OWNER}/${REPO}/releases
96
+ cat releases
97
+ #
98
+ curl --header "Authorization: token ${GITHUB_TOKEN}" \
99
+ --header "Accept: application/json" \
100
+ --remote-name \
101
+ --location \
102
+ https://api.github.com/repos/${OWNER}/${REPO}/releases/tags/v${MURCLI_VER}
103
+ cat v${MURCLI_VER}
104
+ ASSET_ID=$(cat v${MURCLI_VER} | jq '.assets[0].id')
105
+ echo ${ASSET_ID}
106
+ #
107
+ wget \
108
+ -q \
109
+ --auth-no-challenge \
110
+ --header='Accept:application/octet-stream' \
111
+ https://${GITHUB_TOKEN}:@api.github.com/repos/${OWNER}/${REPO}/releases/assets/${ASSET_ID} \
112
+ -O MuranoCLI-${MURCLI_VER}.gem
113
+
114
+ Publish the gem::
115
+
116
+ gem push MuranoCLI-${MURCLI_VER}.gem
117
+ popd
118
+ rm /tmp/gem_push/MuranoCLI-${MURCLI_VER}.gem
119
+ rm /tmp/gem_push/${ASSET_ID}
120
+ rmdir /tmp/gem_push
121
+
122
+ Test!::
123
+
124
+ gem uninstall MuranoCLI
125
+ murano -v
126
+
127
+ gem install MuranoCLI
128
+ murano -v
129
+
130
+ gem install MuranoCLI --pre
131
+ murano -v
132
+
@@ -45,21 +45,19 @@
45
45
 
46
46
  [[ -z ${WORKSPACE} ]] && echo "ERROR: Expected WORKSPACE to be set" && exit 1
47
47
 
48
- export MURANO_USERNAME="${LANDON_USERNAME}"
49
- export MURANO_PASSWORD="${LANDON_PASSWORD}"
50
-
51
48
  [[ -z ${MURANO_USERNAME} ]] && echo "ERROR: Please set MURANO_USERNAME" && exit 1
52
49
  [[ -z ${MURANO_PASSWORD} ]] && echo "ERROR: Please set MURANO_PASSWORD" && exit 1
50
+ [[ -z ${MURANO_BUSINESS} ]] && echo "ERROR: Please set MURANO_BUSINESS" && exit 1
53
51
 
54
52
  # Create a basic Murano CLI config indicating the Murano account credentials.
55
53
 
56
54
  cat > "${WORKSPACE}/test.run.muranocfg" <<-EOCFB
57
55
  [user]
58
- name = landonbouma+jenkins-nix@exosite.com
56
+ name = ${MURANO_USERNAME}
59
57
  [business]
60
- id = hd7opcgbyjfqd7vi
58
+ id = ${MURANO_BUSINESS}
61
59
  [net]
62
- host = bizapi.hosted.exosite.io
60
+ host = bizapi-staging.hosted.exosite.io
63
61
  EOCFB
64
62
  export MURANO_CONFIGFILE="${WORKSPACE}/test.run.muranocfg"
65
63
 
@@ -81,8 +79,8 @@ PATH=${PATH}:/usr/local/bundle/bin
81
79
  # (lb): Sometimes the host drive directories mount as root:root with 2755
82
80
  # permissions. But sometimes not. If it starts happening again, you'll see
83
81
  # Errno::EACCES: Permission denied. Uncomment the sudoers code in Dockerfile.
84
- # chmod 2777 /app/report
85
- # chmod 2777 /app/coverage
82
+ sudo chmod 2777 /app/report
83
+ sudo chmod 2777 /app/coverage
86
84
 
87
85
  echo "############################################################################################"
88
86
  echo "Testing \"$(murano -v)\" on \"$(ruby -v)\""
@@ -228,6 +228,7 @@ Used to group logs together for one endpoint request.
228
228
  cmd_add_format_options_pretty(cmd)
229
229
  cmd_add_format_options_raw(cmd)
230
230
  cmd_add_format_options_message_only(cmd)
231
+ cmd_add_format_options_omit_headers(cmd)
231
232
  cmd_add_format_options_one_line(cmd)
232
233
  cmd_add_format_options_align_columns(cmd)
233
234
  cmd_add_format_options_indent_body(cmd)
@@ -249,7 +250,11 @@ Used to group logs together for one endpoint request.
249
250
  end
250
251
 
251
252
  def cmd_add_format_options_message_only(cmd)
252
- cmd.option '-o', '--message-only', %(Show only headers and the 'print' message)
253
+ cmd.option '-o', '--message-only', %(Show only the 'print' message, and maybe headers)
254
+ end
255
+
256
+ def cmd_add_format_options_omit_headers(cmd)
257
+ cmd.option '-O', '--omit-headers', %(Omit headers)
253
258
  end
254
259
 
255
260
  def cmd_add_format_options_one_line(cmd)
@@ -265,7 +270,7 @@ Used to group logs together for one endpoint request.
265
270
  end
266
271
 
267
272
  def cmd_add_format_options_separators(cmd)
268
- cmd.option '--[no-]separators', %(Indent body content in formatted output)
273
+ cmd.option '--[no-]separators', %(Show separators between log entries)
269
274
  end
270
275
 
271
276
  def cmd_add_format_options_include_tracking(cmd)
@@ -370,6 +375,7 @@ Use a "#{INCLUDE_INDICATOR}" or "#{EXCLUDE_INDICATOR}" prefix to include or excl
370
375
  pretty: true,
371
376
  raw: false,
372
377
  message_only: false,
378
+ omit_headers: false,
373
379
  one_line: false,
374
380
  tracking: false,
375
381
  sprintf: '%Y-%m-%d %H:%M:%S',
@@ -111,13 +111,18 @@ module MrMurano
111
111
  def self.log_pretty_assemble_header(line, options)
112
112
  out = ''
113
113
  raw = ''
114
+ out, raw = log_pretty_assemble_header_meta(line, out, raw, options)
115
+ out, _raw = log_pretty_header_add_message(line, out, raw, options)
116
+ out.empty? && out || out + "\n"
117
+ end
118
+
119
+ def self.log_pretty_assemble_header_meta(line, out, raw, options)
120
+ return [out, raw] if options.omit_headers
114
121
  out, raw = log_pretty_header_add_event_timestamp(line, out, raw, options)
115
122
  out, raw = log_pretty_header_add_murano_tracking(line, out, raw, options)
116
123
  out, raw = log_pretty_header_add_log_record_type(line, out, raw, options)
117
124
  out, raw = log_pretty_header_add_abbreviated_sev(line, out, raw, options)
118
- out, raw = log_pretty_header_add_a_service_event(line, out, raw, options)
119
- out, _raw = log_pretty_header_add_message(line, out, raw, options)
120
- out + "\n"
125
+ log_pretty_header_add_a_service_event(line, out, raw, options)
121
126
  end
122
127
 
123
128
  def self.log_pretty_header_add_abbreviated_sev(line, out, raw, options)
@@ -26,7 +26,7 @@ module MrMurano
26
26
  # '3.0.0-beta.2' is changed to '3.0.0.pre.beta.2'
27
27
  # which breaks our build (which expects the version to match herein).
28
28
  # So stick to using the '.pre.X' syntax, which ruby/gems knows.
29
- VERSION = '3.1.0.beta.8'
29
+ VERSION = '3.1.0'
30
30
  EXE_NAME = File.basename($PROGRAM_NAME)
31
31
  SIGN_UP_URL = 'https://exosite.com/signup/'
32
32
  end
data/spec/cmd_common.rb CHANGED
@@ -250,9 +250,10 @@ RSpec.shared_context 'CI_CMD' do
250
250
  # +Linked ΓÇÿsyncdowntestprd1e8b4034ΓÇÖ to ΓÇÿsyncdowntestapp23d5135bΓÇÖ
251
251
  #
252
252
  # which we can solve with an encode call. (Or but using norm quotes.)
253
- str.nil? && "" || str.encode!(
254
- 'UTF-8', 'UTF-8').tr(%(‘), %(')).tr(%(’), %(')
255
- )
253
+ str.nil? && '' ||
254
+ str.encode!(
255
+ 'UTF-8', 'UTF-8'
256
+ ).tr(%(‘), %(')).tr(%(’), %('))
256
257
  end
257
258
 
258
259
  # *** rb-commander goodies
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MuranoCLI
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.beta.8
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Conrad Tadpol Tilstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-19 00:00:00.000000000 Z
11
+ date: 2018-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: certified
@@ -469,6 +469,7 @@ files:
469
469
  - dockers/Dockerfile.GemRelease
470
470
  - dockers/Dockerfile.m4
471
471
  - dockers/README.rst
472
+ - dockers/RELEASE.rst
472
473
  - dockers/docker-test.sh
473
474
  - dockers/gem-release.sh
474
475
  - docs/basic_example.rst
@@ -660,9 +661,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
660
661
  version: '2.0'
661
662
  required_rubygems_version: !ruby/object:Gem::Requirement
662
663
  requirements:
663
- - - ">"
664
+ - - ">="
664
665
  - !ruby/object:Gem::Version
665
- version: 1.3.1
666
+ version: '0'
666
667
  requirements: []
667
668
  rubyforge_project:
668
669
  rubygems_version: 2.7.4