“Stardate†Version Numbering

  • Thread starter Lawrence D'Oliveiro
  • Start date
L

Lawrence D'Oliveiro

The following one-liner sets the versionName attribute in
AndroidManifest.xml to a number based on the number of days (accurate to
0.1 day) since the *nix epoch. This is what I’ve been using for a
version number in one or two projects, in lieu of anything that makes
more sense. :)

sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc <<<"scale = 1; ($(Julian -f) - $(Julian -d 1970 1 1)) / 1")"'\2/' AndroidManifest.xml

This needs my “Julian†script, available here
<https://github.com/ldo/Julian>. Though it can probably be rewritten
to do without it, using the GNU “date†command instead...
 
S

Silvio

The following one-liner sets the versionName attribute in
AndroidManifest.xml to a number based on the number of days (accurate to
0.1 day) since the *nix epoch. This is what I’ve been using for a
version number in one or two projects, in lieu of anything that makes
more sense. :)

sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc<<<"scale = 1; ($(Julian -f) - $(Julian -d 1970 1 1)) / 1")"'\2/' AndroidManifest.xml

This needs my “Julian†script, available here
<https://github.com/ldo/Julian>. Though it can probably be rewritten
to do without it, using the GNU “date†command instead...

What about date +%s%N
 
D

Daniele Futtorovic

The following one-liner sets the versionName attribute in
AndroidManifest.xml to a number based on the number of days (accurate to
0.1 day) since the *nix epoch. This is what I’ve been using for a
version number in one or two projects, in lieu of anything that makes
more sense. :)

sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc <<<"scale = 1; ($(Julian -f) - $(Julian -d 1970 1 1)) / 1")"'\2/' AndroidManifest.xml

This needs my “Julian” script, available here
<https://github.com/ldo/Julian>. Though it can probably be rewritten
to do without it, using the GNU “date” command instead...

That's so awesome! I wanna have sex with you right now.
 
A

Arved Sandstrom

Silvio said:
The following one-liner sets the versionName attribute in
AndroidManifest.xml to a number based on the number of days (accurate to
0.1 day) since the *nix epoch. This is what I’ve been using for a
version number in one or two projects, in lieu of anything that makes
more sense. :)

sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc<<<"scale = 1;
($(Julian -f) - $(Julian -d 1970 1 1)) / 1")"'\2/' AndroidManifest.xml

This needs my “Julian†script, available here
<https://github.com/ldo/Julian>. Though it can probably be rewritten
to do without it, using the GNU “date†command instead...

What about date +%s%N

I am reminded of this:

http://www.infiltec.com/j-h-wrld.htm

BugBear

I caught myself doing something like this last week. I had what seemed
like a rather thorny problem with very dynamic objects for backing up
C#.NET WPF property grids, and temporarily ended up down the
Reflection.Emit and IDynamicMetaObjectProvider trails (*). A body can
definitely end up not seeing the forest for the trees when doing this
kind of thing, and at one point I ended up with

value = Activator.CreateInstance(typeof(dataType), "");

to get an empty string, when I in fact knew by virtue of having arrived
at that particular switch case that I needed an empty string...otherwise
I wouldn't have been calling the constructor form that accepted a string
parameter. IOW, the switch case for the above was for strings only, and
I knew that 'dataType' had to be a string value.

It struck me all of a sudden, and I ended up with

value = "";

Rule of Thumb: if things have gotten bloody complicated and they don't
feel like they ought to have been that way, you're probably right.

AHS

* I eventually realized that simple dynamic objects did handle the problem.
 
L

Lawrence D'Oliveiro

What about date +%s%N

Close. Try this version: doesn’t need Julian, and also shorter:

sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc <<<"scale = 1; ($(date +%s)) / 86400")"'\2/' AndroidManifest.xml
 
A

Andreas Leitgeb

Lawrence D'Oliveiro said:
What about date +%s%N
Close. Try this version: doesn’t need Julian, and also shorter:
sed -i -r 's/(android:versionName=\")[^\"]*(\")/\1'"$(bc <<<"scale = 1; ($(date +%s)) / 86400")"'\2/' AndroidManifest.xml

I don't quite see the reason why you would actually capture the closing
double-quote char... and double-quotes aren't special to "sed -r", so they
need no backslash before them. Then the last lingle-quoted part can be
included into the double-quoted middle part, re-introducing one \", but
making it again shorter. Also, removing some redundant spaces, quotes and
parens from around bc, and replacing one of the $(...) with backticks
shortens it again.

sed -i -r 's/(android:versionName=")[^"]*"/\1'$(bc<<<scale=1\;`date +%s`/86400)\"/ AndroidManifest.xml

Btw., it won't be compatible with older shells (e.g. ksh), though,
for the "<<<".
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top